Главная страница
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.035 c
6-1085381014
Werewolf
2004-05-24 10:43
2004.07.25
Как работать через прокси?


1-1089645817
ghg
2004-07-12 19:23
2004.07.25
дополнительные параметры в стандартных обработчиках событий


14-1088757616
Cosinus
2004-07-02 12:40
2004.07.25
Склероз - болезнь молодежи!


1-1089617818
_none_
2004-07-12 11:36
2004.07.25
Application.OnIdle


6-1085400317
empty
2004-05-24 16:05
2004.07.25
Проблема с постом сообщений по TTcpSocket в D7