Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

EXE   Найти похожие ветки 

 
Khabibulin   (2004-02-13 21:50) [0]

Почему при компилировании пустой формы проекта в Delphi 7 размер EXE файла равняется 359 КБ и как его уменьшить ?


 
Soft ©   (2004-02-13 22:09) [1]

Основное место в данном случае занимает библиотека VCL.

Уменьшить? Использовать WinAPI(без VCL) или использовать KOL(никогда не использовал) http://www.delphimaster.ru/cgi-bin/forum.pl?n=10

А оно тебе надо?


 
Alexander666 ©   (2004-02-14 11:14) [2]

Где-то статья по FreePascalю лежала. Согласно ей, у меня исходник занимал 15 кб.


 
Anatoly Podgoretsky ©   (2004-02-14 11:16) [3]

Что случилось, на диск не помещается?
Скомпилируй с рантайм пакетами, размер ехе уменьшится кардинально. Другой вариант не используй VCL, особенно формы.


 
Юрий Зотов ©   (2004-02-14 12:40) [4]

> Khabibulin (13.02.04 21:50)
> Почему при компилировании пустой формы проекта в Delphi 7
> размер EXE файла равняется 359 КБ

Потому что Вы используете VCL.

> и как его уменьшить ?

Не использовать VCL. Пример ниже. Сохраните его в файле HelloWorld.dpr, откройте в Delphi, откомпилируйте и посмотрите размер EXE. Он будет чуть больше 15 килобайт.


program HelloWorld;

uses
Windows, Messages;

// Оконная функция - обрабатывает все поступающие окну сообщения.
function WndFunc(Wnd, Msg: DWord; wParam, lParam: integer): integer; stdcall;
var
DC: HDC;
PaintStruct: TPaintStruct;
Rect: TRect;
begin
case Msg of
WM_Paint:
begin // Если поступило сообщение WM_Paint,
DC := BeginPaint(Wnd, PaintStruct); // то подготовить отрисовку,
GetClientRect(Wnd, Rect); // получить клиентскую область и в ее центре отрисовать текст,
DrawText(DC, "Hello, World!", -1, Rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
EndPaint(Wnd, PaintStruct); // затем сообщить системе, что рисование завершено
Result := 0 // и что сообщение WM_Paint обработано.
end;
WM_Destroy:
begin // Если поступило сообщение WM_Destroy,
PostQuitMessage(0); // то послать в очередь потока сообщение WM_Quit
Result := 0 // и сообщить системе, что WM_Destroy обработано.
end
else Result := DefWindowProc(Wnd, Msg, wParam, lParam) // Для других сообщений вызвать стандартную оконную функцию.
end
end { of WndFunc };

const
AppName = "HelloWorld";

var
Msg: TMsg;
WndClass: TWndClassEx;

begin { main }

// Заполняем запись WndClass и регистрируем в системе класс окна
with WndClass do
begin
cbSize := SizeOf(WndClass);
Style := CS_HRedraw or CS_VRedraw;
lpfnWndProc := @WndFunc;
hIcon := LoadIcon(0, IDI_Application);
hCursor := LoadCursor(0, IDC_Arrow);
hbrBackground := hBrush(Color_Window);
lpszMenuName := nil;
lpszClassName := AppName;
hIconSm := hIcon
end;
WndClass.hInstance := hInstance;
RegisterClassEx(WndClass);

// Создаем и показываем окно заданного класса
CreateWindowEx(0, AppName, AppName, WS_OverlappedWindow or WS_Visible,
CW_UseDefault, CW_UseDefault, CW_UseDefault, CW_UseDefault, 0, 0, hInstance, nil);

// Цикл обработки сообщений (работает, пока не поступит сообщение WM_Quit).
while GetMessage(Msg, 0, 0, 0) do // Выбрать сообщение из очереди потока
begin // и, если это сообщение не WM_Quit, то
TranslateMessage(Msg); // преобразовать сообщение клавиатуры
DispatchMessage(Msg) // и вызвать функцию окна Msg.hWnd
end;

// Передаем системе код завершения программы
Halt(Msg.wParam)
end.


 
Marser ©   (2004-02-14 12:43) [5]


> Юрий Зотов © (14.02.04 12:40) [4]

А если в 16-разрядном BPW, так вообще пару кб :-)


 
Труп Васи Доброго ©   (2004-02-14 17:10) [6]

Я ради интереса скомпилировал форму с кнопкой, которая ничего не делает, в D5 и в C++ билдере. В резульнате сишный экзешник получился раз в сто меньше, но при запуске занимал в четыре раза больше памяти.
Вот и думай что тебе надо.


 
Anatoly Podgoretsky ©   (2004-02-14 18:12) [7]

А теперь скомпилируй с одинаковыми условиями.


 
Труп Васи Доброго ©   (2004-02-14 18:29) [8]

Всё было дефаулт.


 
KSergey ©   (2004-02-14 18:31) [9]

> [8] Труп Васи Доброго © (14.02.04 18:29)
> Всё было дефаулт.

Это отнюдь не значит, что все было одинаково ;)


 
Anatoly Podgoretsky ©   (2004-02-14 18:38) [10]

Вот дефолты у них разные.


 
Труп Васи Доброго ©   (2004-02-14 18:48) [11]

Я билдер не юзал,пока, только для сравнения поставил!


 
KSergey ©   (2004-02-14 18:51) [12]

> [11] Труп Васи Доброго © (14.02.04 18:48)

Вопрос из серии "почему EXE дельфи такой большой".
Ответы см. в соседних ветках - это и будет причиной [6] Труп Васи Доброго



Страницы: 1 вся ветка

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
8-25832
JohnJ
2003-11-07 04:21
2004.03.09
создание клипов


14-25871
Плохиш
2004-02-16 12:46
2004.03.09
Никлаусу Вирту сегодня 70!


14-25916
SergP
2004-02-13 04:23
2004.03.09
Как лучше сделать запрос?


1-25766
Kraj
2004-02-26 15:40
2004.03.09
Преобразование Char в Word


1-25819
Макс Реалов
2004-02-25 15:22
2004.03.09
Конструкторы и статические методы.