Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
14-25877
OlimPer
2004-02-16 22:10
2004.03.09
Как сделать так, чтобы пользователь не мог пользоваться интренето


14-25917
chilavek
2004-02-15 20:55
2004.03.09
Украден и опубликован исходный код Windows NT 4 и Windows 2000


4-25970
БВВ
2004-01-02 17:44
2004.03.09
Сообщения Windows


14-25932
alexsys
2004-02-14 08:54
2004.03.09
С праздником!


3-25693
Ландграф Павел
2004-02-08 21:12
2004.03.09
Вопрос по ADO





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский