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

Вниз

как уменьшить размер консольного приложения   Найти похожие ветки 

 
AntonVS ©   (2004-07-12 08:58) [0]

создаю консольное приложение, реализующее печать из файла.. Пользую Printer(модуль Printers). Все лишние модули убрал. размер файла все равно слишком большой (356 Кб). Как уменьшить размер хотя бы до 50-80 Кб?


 
Ega23 ©   (2004-07-12 08:59) [1]

Все лишние модули убрал. размер файла все равно слишком большой (356 Кб). Как уменьшить размер хотя бы до 50-80 Кб?

Сначала вопрос: А смысл?
Теперь, собственно, ответ: пиши на WinAPI.


 
Anatoly Podgoretsky ©   (2004-07-12 09:03) [2]

AntonVS ©   (12.07.04 08:58)  
Не использовать модуль Printers


 
Digitman ©   (2004-07-12 09:03) [3]

вот это

uses Windows, WinSpool, SysUtils, Classes, Graphics, Forms;

присутствует в модуле Printers

поубирай эти лишние модули - и будет тебе счастье


 
AntonVS ©   (2004-07-12 09:05) [4]

>>Сначала вопрос: А смысл?
ну, есть смысл... эта задача - часть большого проекта...
нужно, чтоб на дискету все влазило...

>>Теперь, собственно, ответ: пиши на WinAPI.
а еще варианты?


 
AntonVS ©   (2004-07-12 09:09) [5]

>>Не использовать модуль Printers
а какая альтернатива?

>>поубирай эти лишние модули - и будет тебе счастье
и как их вырезать?


 
Ega23 ©   (2004-07-12 09:23) [6]

Пользуйся WinAPI:  GetPrinter, OpenPrinter, etc.


 
Ega23 ©   (2004-07-12 09:23) [7]

Кстати, 356 Кб отлично на дискету влазят.


 
ЮЮ ©   (2004-07-12 09:26) [8]

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

1) Добавить функциональность в другой проект
2) Во всех проектах использовать run-time пакет vcl*.bpl


 
Anatoly Podgoretsky ©   (2004-07-12 09:32) [9]

AntonVS ©   (12.07.04 09:05) [4]
Проект настолько бедный, что денег на дискеты 720/1440 кб нет?


 
AntonVS ©   (2004-07-12 09:37) [10]

>>Кстати, 356 Кб отлично на дискету влазят.
эта задача - маленькая часть....
вся прога должна влазить на дискету..., в том числе и этот exe-щник


 
evvcom ©   (2004-07-12 09:42) [11]

Тебе уже объяснили, выбирай: либо быстрота и удобство VCL, либо переходи на WinAPI. Еще альтернатива KOL.


 
AntonVS ©   (2004-07-12 09:54) [12]

>>Еще альтернатива KOL.
Во....
это кто такой?


 
Anatoly Podgoretsky ©   (2004-07-12 09:54) [13]

evvcom ©   (12.07.04 09:42) [11]
Неправильный подход, надо найти спонсора, профинансирующего покупку пишущего CD


 
evvcom ©   (2004-07-12 09:58) [14]


> >>Еще альтернатива KOL.
> Во....
> это кто такой?

А глаза поднять на список форумов?


> Неправильный подход, надо найти спонсора, профинансирующего
> покупку пишущего CD

Гы-гы!

Объявляется конкурс на самого щедрого спонсора!


 
AntonVS ©   (2004-07-12 10:07) [15]

>>А глаза поднять на список форумов?

угу


 
Slym ©   (2004-07-12 10:23) [16]

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;


 
Slym ©   (2004-07-12 10:28) [17]

Или ваще убери Application.ProcessMessages... и смотри что выйдет
Мастаки напешите ктонить статью "Вырезаем нужный компонент из кучи стандартных с целью уменшения размера exe", а то мне вылом...


 
Slym ©   (2004-07-12 10:34) [18]

И поищи UPX - упаковщик Exe, но сначала почитай статью Подгоретского на эту тему


 
AntonVS ©   (2004-07-12 10:38) [19]

Slym, спасибо
exe-щник в 3 раза уменьшился


 
AntonVS ©   (2004-07-12 10:54) [20]

а есть ли где в настройках Delphi такая штука, как не пользовать переменные, классы не используемые в проекте?

я порылся - не нашел ничего.

но по идее должно быть что-нибудь такое....


 
evvcom ©   (2004-07-12 10:56) [21]

Вырезав все ненужное (VCL), ты получил чистое API. О чем изначально и говорилось. :)


 
Ega23 ©   (2004-07-12 11:07) [22]

Я думаю, что если ты воспользуешься тем, что я писал тебе в [6], размер ещё сильнее уменьшится.  :о)



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

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

Наверх




Память: 0.51 MB
Время: 0.023 c
3-1088255763
Амир
2004-06-26 17:16
2004.07.25
Дата, локализация, архив...


4-1087048881
kalmykovser
2004-06-12 18:01
2004.07.25
как узнать HICON ?


4-1086870441
Лёха
2004-06-10 16:27
2004.07.25
RegNotifyChangeKeyValue, отслеживание реестра


14-1089016204
Off
2004-07-05 12:30
2004.07.25
Алгоритм гирлянды.


6-1085730896
panov
2004-05-28 11:54
2004.07.25
Indy v.8 Получение Header ответа сервера.