Как получить код программы из exe файла delphi

Обновлено: 06.07.2024

В каком виде сохраняются созданные программы? Этот вопрос возникает у любого начинающего программиста. Эта тема заслуживает отдельного внимания. Как известно, в Windows любая программа представляет собой exe-файл, который является исполняемым, т.е. может быть запущен как отдельное приложение. Понятно, что разрабатывая программу, в итоге нужно получить именно exe-файл, чтобы его можно было запустить на компьютере, где не установлена среда, в которой эта программа была создана. В языках программирования для DOS, в частности Turbo Pascal, всё довольно просто - весь программный код сохраняется в один-единственный файл, а в итоге получается exe-файл. Довольно просто и удобно. При переходе в Windows всё становится гораздо сложнее. Оконное приложение Windows не может быть сохранено в одном файле. Если в среде DOS программы можно называть именно программами, то в объектно-ориентированном программировании они называются проектами. Почему проектами? Всё достаточно просто - программа представляет собой совокупность некоторого числа файлов различного типа, определённым образом связанных между собой. Очевидно, что всю эту группу логично назвать проектом.
В этой статье мы познакомимся с самыми основными типами файлов, которые включены в любой проект, созданный на Delphi. На самом деле типов файлов гораздо больше, но эти - базовые.

*.dpr - файл проекта

Это главный файл всего проекта. Если этот файл отсутствует, запустить программу будет невозможно. В файле хранятся все основные параметры приложения, а также информация об окнах, которые в приложение включены. Файл представляет собой свободно читаемый код. Посмотреть содержимое этого файла можно командой меню Project -> View Source. В более новых версиях Delphi файл проекта имеет другое расширение - .bdsproj (в Borland Developer Studio 2006), .dproj (в Delphi 2007 и далее). Обратная совместимость поддерживается.

*.dfm - файл описания формы

В этом файле содержится описание всех объектов, которые расположены на форме, а также информация обо всех их свойствах. При этом в этот файл сохраняются только те свойства объектов, которые были принудительно изменены. Это объясняется тем, что все свойства любого объекта имеют значения по умолчанию (т.е. заранее установленные). Соответственно нет смысла хранить значения абсолютно всех свойств - достаточно запомнить только те, которые имеют значение, отлиное от начального. Все остальные свойства принимают своё исходное значение и таким образом вся форма восстанавливается.

*.pas - модуль (самостоятельный, либо модуль формы)

Именно этот файл больше всего похож на файл программ Turbo Pascal. В этом файле находится код программы. Модули могут быть отдельными от конкретных проектов - в этом случае их можно подключить к любому проекту и использовать. Как правило, в отдельных модулях находятся вспомогательные функции, либо какие-либо объекты. Помимо этого модуль есть у каждой формы. В результате *.pas-файл неразрывно связан с файлом *.dfm, а форма соответственно описывается этими двумя файлами - один содержит её состояние и объекты, а второй - код программы, относящийся к этой форме. Следует отметить, что модули значительно облегчают процесс написания программы и ориентацию в больших модулях - отдельные элементы большого модуля можно вынести в несколько модулей и просто подключить их к проекту.

*.res - файл ресурсов

Это дополнительный файл. В нём находятся данные различных типов - это могут быть тексты, изображения, звуки и т.д. К примеру, для проекта этот файл создаётся автоматически и в нём сохраняется иконка (значок) приложения, а также некоторая информация о проекте.

*.dof, *.cfg - файлы конфигурации проекта

В этих файлах хранятся опции текущего проекта (которые настраиваются в окне Project - Options). При отсутствии этих файлов будут использоваться стандартные параметры.

*.dcu, *.obj - объектные файлы

Эти файлы представляют собой уже скомпилированные модули. При очередной компиляции Delphi создаёт для каждого pas-файла соответствующий dcu-файл. Это существенно ускоряет компиляцию в дальнейшем, т.к. имеющиеся файлы просто включаются в конечный exe-файл, а не обрабатываются заново. OBJ-файлы - это тоже скомпилированные модули, но применяющиеся в С++. При работе в Delphi эти файлы не используются, но при необходимости их можно сформировать.

Файлы, расширение которых начинается со знака тильды ("

"), являются временными. Это означает, что они не несут какой-либо важной информации и используются в других целях (например, для ускорения компиляции). Эти файлы можно смело удалять, если они мешают. Чем больше проект, тем обычно больше появляется временных файлов.

Работа с проектом

Ну а теперь пришло время рассказать о базовых операциях с проектом, так как ранее речь об этом не шла. Рассмотрим всё по порядку.

Создание нового проекта

Для создания "чистого листа" следует выбрать в меню File -> New -> Application. В разных версиях Delphi содержимое подменю New может немного отличаться, но всё основное присутствует всегда. После этого создаётся новый проект, такой, какой появляется при запуске Delphi.

Открытие существующего проекта (или файла)

Для этого существует команда File -> Open. Выбрав файл *.dpr, откроется проект, а выбрав какой-либо другой файл (например, *.pas или *.dfm) откроется что-либо другое (например, отдельная форма).

Сохранение

С сохранением есть несколько тонкостей. Исходя из того, что проект представляет собой совокупность нескольких файлов, можно сделать вывод, что сохранять нужно все эти файлы, а не какой-то в отдельности. Выбрав File -> Save, Вы сохраните только текущую форму, но не более того, а проект останется "висеть в воздухе". File -> Save As. - стандартный пункт, который делает то же самое, что и Save, только позволяет пересохранить файл (форму) под другим именем. Команда Save Project As. сохраняет файл проекта (*.dpr). Таким образом, чтобы сохранить проект полностью, нужно сохранить каждую из форм и сам проект. Делать это по отдельности достаточно неудобно, поэтому существует команда, облегчающая этот процесс: File -> Save All. При вызове этой команды сначала появится диалог для сохранения формы (если форм несколько, то и диалогов будет несколько), а затем диалог для сохранения проекта. После того, как все диалоги отработали, можно с уверенностью сказать, что проект сохранён полностью.

Меню File содержит все основные команды управления проектом

Железное правило: каждый проект должен быть сохранён в отдельном каталоге!

Если в один каталог сохранить несколько проектов, то все файлы перемешаются и можно отправлять всё в корзину. Этого нельзя делать ни в коем случае!

Запуск и остановка программы

Теперь, когда проект сохранён, программу можно и запустить и посмотреть, что же получилось. Ещё одно правило, которое желательно соблюдать: перед запуском программы проект нужно сохранить. Мгновенный вопрос: зачем? Конечно, делать это или нет - решать Вам, но бывают случаи, когда программа зависает (по вине самого программиста например), а с ней зависает и оболочка Delphi. В этом случае ничего не остаётся делать, как "убивать" Delphi через Диспетчер задач Windows. Понятно, что изменения, которые были внесены в проект, теряются. Однако не всё так плохо. Случаи зависания Delphi IDE достаточно редки. Как правило, если программа зависает, Delphi позволяет её просто уничтожить из памяти и продолжить работу. Процесс сохранения проекта перед запуском можно поручить оболочке: меню Tools -> Environment Options. , вкладка Preferences, блок Autosave options - опция Editor files.

Запомните следующие основные горячие клавиши:

Ctrl+F9 - компиляция программы. Что такое компиляция? Говоря простым языком - создание выходного (exe) файла программы. Следует отметить, что имя выходного файла совпадает с именем проекта, т.е. именем *.dpr-файла и не может быть изменено. Выходной файл создаётся в том же каталоге, где расположение *.dpr-файл. Однако компиляция просто "собирает" всю программу, но не запускает её.

F9 - запуск. В отличие от компиляции, это уже полноценный запуск программы из оболочки Delphi, однако не совсем такой, каким является запуск приложения из Windows. Запуск происходит под отладчиком. Но об этом позже.

Ctrl+F2 - остановка выполнения программы. Это именно то, о чём сказано чуть выше. Если нужно экстренно завершить работу программы, нужно активировать какое=-либо из окон оболочки Delphi и нажать это сочетание клавиш. Программа будет остановлена и можно будет безболезненно продолжить работу.

Все эти команды доступны и напрямую из меню: Run -> Run, Project -> Compile, Run -> Program Reset.

Все основные команды управления проектом вынесены также в виде кнопок на панели инструментов:

Свойства проекта

Для проекта можно установить множество разнообразных параметров. Все они находятся в окне Project -> Options. В частности, на вкладке Application можно указать заголовок проекта, который будет отображаться на кнопке программы на панели задач. Совет: всегда прописывайте заголовок своей программе, не оставляйте стандартного "Project1" - это резко бросается в глаза. На этой же вкладке можно выбрать иконку (значок) для приложения - файл *.ico размером 32х32 пикселя. В блоке Output settings можно указать расширение выходного файла. Заполнять это поле не обязательно - по умолчанию файлу присваивается расширение .exe. Однако в некоторых случаях эта настройка бывает полезной. Например, экранные программы-заставки представляют собой те же исполняемые exe-файлы, только имеют расширение .scr. Неудобно каждый раз после внесения изменений в программу, чтобы протестировать заставку, переименовывать файл. А прописав в указанное поле "scr" проблема мигом решится.

Вкладка Application в окне свойств проекта влияет на внешний вид кнопки программы на панели задач

Заключение

В этой статье рассмотрены все базовые навыки для управления проектами. Теперь можно приступить непосредственно к изучению языка и исследованию объектов.

Автор: Ерёмин А.А.

Статья добавлена: 14 апреля 2007

Рейтинг статьи: 4.71 Голосов: 14 Ваша оценка:

Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.

Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:

Ссылка для форумов (BBCode):

Поделитесь ссылкой в социальных сетях:

Комментарии читателей к данной статье

Пока нет комментариев к данной статье. Оставьте свой и он будет первым.

среда разработки delphi

Delphi представляет разработчику interactive development environment (IDE)- интерактивную (диалоговую) среду разработки.

  • текстовый редактор delphi с подсветкой служебных слов
  • язык программирования Object Pascal
  • сохранение результатов разработки
  • подсказку по свойствам, методам и событиям объекта при написании оператора
  • набор визуальных и невизуальных компонентов, собранных на панели инструментов в группы
  • обеспечивает простую процедуру размещения компонент на форме
  • автоматическое создание основногособытия компонента при двойном щелчке по компоненту, расположенному на форме
  • изменение свойств компонента на этапе редактирования формы
  • создание обработчиков событий для компонента
  • создание заготовок модулей для DLL библиотек, невизуальных компонентов и модулей других типов
  • пошаговая отладка кода
  • просмотр значений переменных в процессе отладки
  • компиляция и сборка программы в «.exe» файл

Также среда разработки Delphi (IDE) позволяет создавать исходный код программы, компилировать его и запускать на выполнение.

В процессе компиляции создаётся исполняемый файл «.exe».

После запуска IDE открывается ряд окон. В главном окне, имеющим вид длинной полосы, расположены несколько панелей.

Во первых, панель с главным меню редактора.

Далее панель с пиктографическим меню, кнопки которого дублируют пункты основного меню, которыми часто пользуются.

И, наконец, панель компонентов.

Кроме этого, будет открыто ещё несколько окон.

Окно главной формы программы

В программе может быть несколько форм, каждая из которых будет открыта в своём окне. Но только одна является главной. Закрытие главной формы приводит к остановке выполнения программы и закрытию всех остальных форм.

В программе может быть несколько форм, каждая из которых будет открыта в своём окне. Но только одна является главной. Закрытие главной формы приводит к остановке выполнения программы и закрытию всех остальных форм.

Главной будет та форма, которая в модуле проекта стоит первой в списке создаваемых форм.

Окно кода. Редактор delphi

В этом окне имеется несколько закладок. В каждой закладке располагается код одного модуля, имя которого значится на ярлыке закладки.

После открытия IDE отображаются закладка с кодом проекта Project1 и закладка с кодом модуля Unit1.

Если закладки с Project1 нет, то её можно открыть, используя пункт меню «Project» и в нём команду “View Source”.

При создании формы автоматически создается относящийся к ней модуль Unit.

Если создано несколько форм, то будет открыто несколько закладок с соответствующими модулями.

Кроме модулей, относящихся к формам, могут быть не связанные с формами модули. Например, содержащие DLL библиотеки.

Часто в Unit размещают объявление глобальных типов и переменных, доступных во всех других модулях.

Кроме того, если текст программы слишком большой, то часть процедур можно тоже разместить в отдельном модуле.

Инспектор объектов

Следующее окно содержит инспектор объектов (Object Inspector).

Если щёлкнуть по компоненту, расположенному на форме, то он окажется выбранным.

Выбранный компонент отобразится в инспекторе объектов.

На вкладке Properties (свойства) отобразится список всех свойств компонента, которые могут быть изменены на этапе разработки.

Например, Для компонента Edit можно изменить свойство Text, записав в него новое значение или просто удалив старое. После нажатия клавиши “Enter” это значение отобразится на компоненте (или после щелчка по другому свойству).

События в delphi

Вторая вкладка в Object Inspector задаёт связанные с компонентом обработчики событий (Events).

Обработчики событий — это процедуры, которые выполняются при наступлении события.

Событием может быть щелчок мыши по компоненту, нажатие клавиши на клавиатуре (если компонент имеет фокус ввода; например, в поле Edit мигает курсор), нажатие на кнопку, нахождение курсора мыши над компонентом и многое другое, с чем мы будем знакомиться по мере продвижения.

У каждого визуального компонента имеется одно «основное, главное» событие. Его обработчик создаётся при двойном щелчке по компоненту.

Например, для кнопки это Button1Click()

Ещё одно окно содержит панель с «деревом» компонентов (Object TreeWiew). Его использование бывает полезным, когда на форме располагается большое количество компонент.

Окно с кодом программы и модулей (вкладки Project1, Unit1 и так далее) мы ознакомимся в следующем занятии.

Заключение.

В этом занятии мы рассмотрели основные элементы среды разработки Delphi, познакомились с инспектором объектов и узнали, как обрабатываются события в delphi.

Ввели понятие главного окна программы, научились управлять свойствами компонента.

Вы можете включить любой тип данных как RCDATA или пользовательских тип ресурса. Это очень просто. Данный совет покажет вам общую технику создания такого ресурса.

TStrItem = String [ 39 ];

TDataArray = Array [ 0 .. 7 , 0 .. 24 ] of TStrItem;

Данные размещаются в вашем сегменте данных и занимают в нем 8K. Если это слишком много для вашего приложения, поместите реальные данные в ресурс RCDATA. Следующие шаги демонстрируют данный подход. Создайте небольшую безоконную программку, объявляющую типизированную константу как показано выше, и запишите результат в файл на локальный диск:

TStrItem = string [ 39 ];

TDataArray = array [ 0 .. 7 , 0 .. 24 ] of TStrItem;

F: file of TDataArray;

Теперь подготовьте файл ресурса и назовите его DATA.RC. Он должен содержать только следующую строчку:

DATAARRAY RCDATA "data.dat"

Сохраните это, откройте сессию DOS, перейдите в каталог где вы сохранили data.rc (там же, где и data.dat!) и выполните следующую команду:

brcc data.rc (brcc32 для Delphi 2.0)

Теперь вы имеете файл data.res, который можете подключить к своему Delphi-проекту. Во время выполнения приложения вы можете генерировать указатель на данные этого ресурса и иметь к ним доступ, что и требовалось.

TStrItem = string [ 39 ];

TDataArray = array [ 0 .. 7 , 0 .. 24 ] of TStrItem;

pData: PDataArray = nil ;

dHandle := FindResource(hInstance, 'DATAARRAY' , RT_RCDATA);

if dHandle <> 0 then

dhandle := LoadResource(hInstance, dHandle);

if dHandle <> 0 then

if pData = nil then

WinProcs.MessageBox, без помощи VCL, поскольку здесь код

выполняется как часть инициализации программы и VCL

возможно еще не инициализирован! >

Теперь вы можете ссылаться на элементы массива с помощью синтаксиса pData^[i,j].

Автор: Peter Below

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

Читайте также: