![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как уменьшить размер консольного приложения [D6]
AntonVS © (2004-07-12 08:58:00)создаю консольное приложение, реализующее печать из файла.. Пользую Printer(модуль Printers). Все лишние модули убрал. размер файла все равно слишком большой (356 Кб). Как уменьшить размер хотя бы до 50-80 Кб?
Ega23 (2004-07-12 11:07:00) [1]Я думаю, что если ты воспользуешься тем, что я писал тебе в [6], размер ещё сильнее уменьшится. :о)
evvcom (2004-07-12 10:56:00) [2]Вырезав все ненужное (VCL), ты получил чистое API. О чем изначально и говорилось. :)
AntonVS (2004-07-12 10:54:00) [3]а есть ли где в настройках Delphi такая штука, как не пользовать переменные, классы не используемые в проекте?
я порылся - не нашел ничего.
но по идее должно быть что-нибудь такое....
AntonVS (2004-07-12 10:38:00) [4]Slym, спасибо
exe-щник в 3 раза уменьшился
Slym (2004-07-12 10:34:00) [5]И поищи UPX - упаковщик Exe, но сначала почитай статью Подгоретского на эту тему
Slym (2004-07-12 10:28:00) [6]Или ваще убери Application.ProcessMessages... и смотри что выйдет
Мастаки напешите ктонить статью "Вырезаем нужный компонент из кучи стандартных с целью уменшения размера exe", а то мне вылом...
Slym (2004-07-12 10:23:00) [7]1. скопируй Printers в папку проекта.
2. Убери из Printers Forms!!!
3. Добавь uses Messages;
4. Найди строку
function AbortProc(Prn: HDC; Error: Integer): Bool; stdcall;
именно в этой функции (для D7) используется Application.ProcessMessages и замени на код:
function ProcessMessage(var Msg: TMsg): Boolean;
begin
Result := False;
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
Result := True;
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
function AbortProc(Prn: HDC; Error: Integer): Bool; stdcall;
var Msg: TMsg;
begin
while ProcessMessage(Msg) do {loop};
Result := not FPrinter.Aborted;
end;
AntonVS (2004-07-12 10:07:00) [8]>>А глаза поднять на список форумов?
угу
evvcom (2004-07-12 09:58:00) [9]
> >>Еще альтернатива KOL.
> Во....
> это кто такой?
А глаза поднять на список форумов?
> Неправильный подход, надо найти спонсора, профинансирующего
> покупку пишущего CD
Гы-гы!
Объявляется конкурс на самого щедрого спонсора!
AntonVS (2004-07-12 09:54:00) [10]>>Еще альтернатива KOL.
Во....
это кто такой?
Anatoly Podgoretsky (2004-07-12 09:54:00) [11]evvcom © (12.07.04 09:42) [11]
Неправильный подход, надо найти спонсора, профинансирующего покупку пишущего CD
evvcom (2004-07-12 09:42:00) [12]Тебе уже объяснили, выбирай: либо быстрота и удобство VCL, либо переходи на WinAPI. Еще альтернатива KOL.
AntonVS (2004-07-12 09:37:00) [13]>>Кстати, 356 Кб отлично на дискету влазят.
эта задача - маленькая часть....
вся прога должна влазить на дискету..., в том числе и этот exe-щник
Anatoly Podgoretsky (2004-07-12 09:32:00) [14]AntonVS © (12.07.04 09:05) [4]
Проект настолько бедный, что денег на дискеты 720/1440 кб нет?
ЮЮ (2004-07-12 09:26:00) [15]>ну, есть смысл... эта задача - часть большого проекта...
>нужно, чтоб на дискету все влазило...
1) Добавить функциональность в другой проект
2) Во всех проектах использовать run-time пакет vcl*.bpl
Ega23 (2004-07-12 09:23:00) [16]Кстати, 356 Кб отлично на дискету влазят.
Ega23 (2004-07-12 09:23:00) [17]Пользуйся WinAPI: GetPrinter, OpenPrinter, etc.
AntonVS (2004-07-12 09:09:00) [18]>>Не использовать модуль Printers
а какая альтернатива?
>>поубирай эти лишние модули - и будет тебе счастье
и как их вырезать?
AntonVS (2004-07-12 09:05:00) [19]>>Сначала вопрос: А смысл?
ну, есть смысл... эта задача - часть большого проекта...
нужно, чтоб на дискету все влазило...
>>Теперь, собственно, ответ: пиши на WinAPI.
а еще варианты?
Digitman (2004-07-12 09:03:00) [20]вот это
uses Windows, WinSpool, SysUtils, Classes, Graphics, Forms;
присутствует в модуле Printers
поубирай эти лишние модули - и будет тебе счастье