Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как уменьшить размер консольного приложения [D6]


Страницы:   1 2

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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо