Цитата:
Вроде бы всё понятно...
Но возник вопрос куда же всё таки писать писать основную программу?
В Unit1 или в Project1?
Если я правильно понял то основная программа компонуется в Project1 а Unit1 служит для процедур и событий компонентов программы?
Я правильно понял?
Так же хотелось бы узнать алгоритм выполнения программ...
В паскале всё ясно...
С верху идёт вниз пока не встретится Readln или ReadKey или KeyPressed для ввода данных...
А в делфи как?
В книге об этом ничего не написано((
|
Если создавать в делфи консольное/без-VCL-ное приложение, то будет 1-в-1 с паскалем: код в том виде, в каком он есть, в Project1.
Если же создавать приложение с использованием VCL (Visual Component Library), то тут несколько иной подход. Грубо говоря, делфа сама пишет "основной" код программы
приблизительно следующим образом:
Код:
initEverything(...);
CreateWindow(...);
while GetMessage(...) do
begin
TranslateMessage(...);
DispatchMessage(...);
end;
Этот код генерируется где-то в недрах VCL. Это стандартная инициализация оконного приложения в Windows и цикл приема сообщений от системы.
Далее начинаем гуглить про WinAPI и работу окон в Windows. Узнаем, что к окну привязана процедура, которая обычно называется WindowProc (или WndProc). Вот эту процедуру DispatchMessage внутри вызывает с нужными параметрами, передавая ей сообщение, присланное Windows, и его параметры. Примеры сообщений: Создание окна, удаление окна, движение мыши по окну, нажатие кнопки. Код WndProc программисту в делфи тоже не доступен, он опять же генерируется делфой в виде каскада вызовов обработчиков (грубо говоря, один проверяет сообщения от 0 до 100, другой от 100 до 200, третий от 200 до 300,... это связано с объектной ориентированностью, не суть важно). Когда сообщение распознано, оно обрабатывается. В ходе обработки вызываются те самые события, редактируемые в делфи: Timer1onTimer, Button1onClick, Form1onKeyDown. И вот программист делфи в 90% случаев пишет именно эти конечные функции для обработки событий, то есть описывает поведение программы в зависимости от присылаемых системой уведомлений.