Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Уменьшение размера программ


Автор: Alexeis 6.2.2006, 18:34
Цитата

кстати что это за микроприложение на 17К? на 17Б -- я еще понимаю

Это класический пример простейшей windows програмы с одним главным окном.
Под микроприложениями я понимаю узкоспециализированные програмки специального назначения или например фоновые приложения или утилитки запустил и выбросил, тестовые програмки
тоже типа запустил и выбросил. Если писать на 450 - 500 кб - то такие программы качаются сравнительно долго. Кроме того VCL работает медленно, иногда нужно ультрабыструю чтоб не мешала даже на P133.
Вот и подозрительно если код больше может и работает такая штука
медленне...
Ладно погоняю сам может что нибудь и узнаю просто думал вдруг кто в курсе smile
Добавлено @ 18:36
Snowy как??? KOL дает от 40 кБ и под 2006 вроде не работает

Автор: _hunter 6.2.2006, 18:54
смысла ( а точнее его прктическую ценность ) "классического приложения с одним окном" я не понимаю...
запустил и выбросил... а какая разница сколько килобайт выкидывать?.. в корзину может не влезть? так и не надо...
и откуда они качатся должны?
насчет ультрабыстрости... -- тут звыняйте -- или скорость или рюшечки. и если нужна скорость -- пиши на API. я бы не сказал что тот-же Serv-U тормозит...

Автор: Alexeis 6.2.2006, 19:04
Цитата

смысла ( а точнее его прктическую ценность ) "классического приложения с одним окном" я не понимаю...

Смысл только в качестве теста

Цитата

и откуда они качатся должны?

Из интернета конечно

Цитата

и если нужна скорость -- пиши на API.

Почему так страшно kol или acl работают почти так же быстро.
Однако тот же апи компилируется разными версиями в разный код
Вот это то и странно smile

Автор: _hunter 6.2.2006, 19:14
Цитата(alexeis1 @ 6.2.2006, 18:04 Найти цитируемый пост)

Смысл только в качестве теста

т.е. смысла нет.

ну две секунды разницы ( 4к ) -- очень заметная разница...
Цитата(alexeis1 @ 6.2.2006, 18:04 Найти цитируемый пост)

Однако тот же апи компилируется разными версиями в разный код

API всегда компилируется в один и тот же код ( точнее его вызовы т.к. API уже скомпилирован ) а вот подготовка к вызову может отличатся...

Автор: Snowy 6.2.2006, 19:45
Цитата(alexeis1 @ 6.2.2006, 18:34 Найти цитируемый пост)
Snowy как??? KOL дает от 40 кБ и под 2006 вроде не работает

Так я и говорю. Delphi7 + KOL + SysDcu7
Минимальная программа 5.6кб.
Минимальная форма 15-17кб.
Посмотри у меня в репе топик "Максимум минимизации". Там пример бесформенного приложения, размером 8кб, сидящего в трее и показывающего меню по клику.
А также 10кб вариант с прикрученным к нему пингером.
К слову, пример из FASM, сидящий в трее кушает ровно столько же памяти, сколько и мой, только ехе весит в 4 раза меньше.

Цитата(alexeis1 @ 6.2.2006, 19:04 Найти цитируемый пост)
Почему так страшно kol или acl работают почти так же быстро.
Почти? Если замерять, то KOL работает в разы быстрее. И ест в разы меньше памяти.

Автор: bems 6.2.2006, 20:41
Цитата(Snowy @ 6.2.2006, 18:30 Найти цитируемый пост)

У пятерки тоже минимальный код - 17кб.

Че-то я совсем не понял, о чем вы все тут.
Если бесформенная программа - 10К(длл) или 15(екзе). Если с формами - дохрена. Это в пятерке. А эти цыфры - 17 или 5.6 - ОТКУДА взялись? Видно много я еще не догоняю. Может просветите как это можно 5.6К?
Цитата(_hunter @ 6.2.2006, 17:52 Найти цитируемый пост)

куму эти микропрожения нужны ( кстати что это за микроприложение на 17К? на 17Б -- я еще понимаю )? как эта сфера бизнеса называется?

Да не в бизнесе дело. В любой сфере может пригодиться маленький модуль. Например если длл внедряется во все прцессы в системе (и программа может быть из любой сферы) то чем меньше длл тем лучше...
Наверное....................

Автор: Snowy 6.2.2006, 21:20
Цитата(bems @ 6.2.2006, 20:41 Найти цитируемый пост)
А эти цыфры - 17 или 5.6 - ОТКУДА взялись?

В D7 - 15 кило.
5.6 - минимально, что можно получить в дельфи без потери функциональности.

Цитата(bems @ 6.2.2006, 20:41 Найти цитируемый пост)
Может просветите как это можно 5.6К?

Как я уже писал - прочитай эту тему: http://forum.vingrad.ru/index.php?showtopic=65035

А вообще минимальный размер проги на дельфи 3.5 кило, но вырезана вся функциональность.
При необходимости можно и так, если устраивает прописывать все структуры и импортировать функции ручками. Но смысл?

Автор: bems 6.2.2006, 23:38
Где-то читал такой вариант, но сам не прбовал (упаси Господь от этих извращений):
пишется код на дельфи, пропускается через компилятор 3-й версии, и полученные obj-файлы окончательно компилятся MSVC во...
Кто-нибудь хочет попробовать? smile

Автор: Alex 7.2.2006, 01:54
Ребята, пишите на ASM еще компактней будет код... smile
Среда растет, возможности тоже, слушать людей, которые видят разницу, что им скомпилили в 15 или 17 КБ мне просто смешно. Я сам все время борюсь за размер exe но до таких вещей вы уж простите никогда не опускался. Вы определитесь чего вы хотите удобную среду разработки или все ручками писать и создавать, получая маленькие объемы. Если руками, то ни как в толк не возьму, зачем вам Delphi? А если все же удобство разработки, так пора смириться с какими-то 10-50Кб и жить себе спокойно.

И очень мне интересно, что за задачи у вас такие, где так важно написать ну прям крохотную программу, при этом нельзя воспользоваться упаковщиком? Мне за всю мою жизнь такое потребовалось только один раз кода программа должна была на диск в определенные места положить ряд файлов объемом 18Кб, сделать запись в реестре и ini файле. Вся программа с окном управления написанном на WinApi заняла у меня 86Кб. Грешно было просто делать форму и прогу в 300Кб для копирования 18Кб. А написали бы вы все это на Kol или еще чем-то ну вот добились вы не 86Кб как у меня, а 50 или 30, но это уже по мне не важно за то попрыгали бы в удовольствие при написании...

Автор: Snowy 7.2.2006, 10:12
Alex, если речь идет о разработки проектов, то безусловно возиться с уменьшением размера нет смысла.
Другое дело, если мы пишем фоновую программу, вроде шеддулера или сервиса.
Такая программа должна кушать как можно меньше памяти. Кому нужен шеддулер, жрущий 20Мб?
А сервисы, десяток которых съест всю оперативку?
Речь как раз об этом. И упаковщик не решит проблему - он уменьшик ехешник, но не решит общую проблему. Кроме того никто от него и не отказывается. Программу в 25 кило можно ужать до 12.
Что касается приложений с формами. Они оправданы, когда мы пишем небольшую программу.
Но когда проект переваливает за 5-6 форм, то мы уже не особо и выигрываем размер, зато получаем массу проблем.
Но до 5-6 форм мы имеем право выбрать целевой результат.
У нас есть такая возможность, и, если нам это необходимо, мы можем ее использовать.

Цитата(Alex @ 7.2.2006, 01:54 Найти цитируемый пост)
Ребята, пишите на ASM еще компактней будет код...

А зачем? Уменьшится только размер ехешника, но не занимаемой памяти.
Для мелких программ основной поедатель памяти - сама винда, которая создает объекты, кушающие память килобайтами. Да и разница для мелких проектов несущественна.

Цитата(Alex @ 7.2.2006, 01:54 Найти цитируемый пост)
Среда растет, возможности тоже

Мы говорим не об обрезании возможностей, а о построении неVCL программ.
В остальном они настолько же полнофункциональны. Все те же возможности у нас остаются.
Причем, используя KOL у нас их даже больше.
Добавлено @ 10:17
Модератор: оффтоп выделен в отдельную тему

Автор: Alexeis 15.2.2006, 17:41
Простите долго не писал тема еще интересует все таки увеличение размера кода не VCL проекта более чем в два раза (в 2006 по сравнению с 7)связанно с компилятором или просто можно где то галочку (в настройках) поставить и исправить положение smile

Автор: Snowy 15.2.2006, 17:47
Дело не в компиляторе.
Просто с каждой новой версией, VCL обрастает новыми возможностями.
Ты можешь о них вообще ничего не знать, но они все равно попадают в твой код.
Больше возможностей - больше код.
Поэтому многие вообще пишут на Delphi3 - там возможности VCL только базовые, зато ничего ненужного нет.
KOL по другому обходит эту проблему - если ты не используешь какие-то возможности, то они вообще не попадают в код.
Отсюда и размер в 20кб.

Автор: Alexeis 15.2.2006, 17:54
да нет же
Я писал
Цитата

  размера кода не VCL проекта

Добавлено @ 17:56
c vcl и так все понятно - чем дальше тем хуже но Api то чем виноват smile
Добавлено @ 17:58
Именно api большой получается

Автор: Snowy 15.2.2006, 18:02
А, ну тут разные вещи.
Во-первых распух модуль System.
Во-вторых используется новый менеджер памяти.
В-третьих... Да мало ли что еще.

Автор: Snowy 16.3.2006, 12:56
Хм. С максимальными извращениями получился файлик в 1405 байт.
Дожимал буквально по байтику. Точнее по 20 байтиков.
Меньше уже не получается.

Это пример окна на дельфи. Оно ничего не делает, кроме стандартных действий
(свернуть, развернуть, размер, положение и т.п.).
Просто пример минимализма.

Автор: Alexeis 16.3.2006, 13:41
Snowy, это на delphi 2006 ??
Добавлено @ 13:44
так это наверное модуль system урезан до предела?
Чесно говоря в нем разобраться непросто smile

Автор: Snowy 16.3.2006, 13:50
Цитата(alexeis1 @ 16.3.2006, 13:41 Найти цитируемый пост)
Snowy, это на delphi 2006 ??
Нет конечно. Родная 7-ка - на ней самые маленькие неVCL файлы делаются.

Цитата(alexeis1 @ 16.3.2006, 13:41 Найти цитируемый пост)
так это наверное модуль system урезан до предела?
Он там вообще отсутствует smile

Цитата(alexeis1 @ 16.3.2006, 13:41 Найти цитируемый пост)
Чесно говоря в нем разобраться непросто
и не нужно. Нужно убрать все, а потом добавлять потихоньку все, чего не хватает.

Автор: Alexeis 16.3.2006, 13:54
Что вообще утежеляет модуль system?
Сознание новых типов утяжеляет проект или нет ?(если они не используются)
В этом смысле функции и константы не должны вроде.
Глобальные переменные точно должны.
Не использованные классы утяжеляют или нет?

Раздел инициализации и финализации явно нужно переработать.

Как всето таки его правельно резать чтобы лишнее (не утяжеляющее) не трогать?
Добавлено @ 13:56
А как можно удалить вообще системные модули smile

Автор: Snowy 16.3.2006, 14:09
Цитата(alexeis1 @ 16.3.2006, 13:54 Найти цитируемый пост)
Что вообще утежеляет модуль system?
Все то же, что и другие модули.


Цитата(alexeis1 @ 16.3.2006, 13:54 Найти цитируемый пост)
Сознание новых типов утяжеляет проект или нет ?(если они не используются)
Если не используются - Нет.

Цитата(alexeis1 @ 16.3.2006, 13:54 Найти цитируемый пост)
В этом смысле функции и константы не должны вроде.
Аналогично.


Цитата(alexeis1 @ 16.3.2006, 13:54 Найти цитируемый пост)
Глобальные переменные точно должны.
Если не используются - нет. Оптимизатор все режет.
Не режет он только методы классов, которые не используются, но используется сам класс.
При использовании объектов, неиспользуемые методы тоже режутся.

Цитата(alexeis1 @ 16.3.2006, 13:54 Найти цитируемый пост)
Как всето таки его правельно резать чтобы лишнее (не утяжеляющее) не трогать?
Вырезать все. А потом добавить только то, что действительно необходимо.

Цитата(alexeis1 @ 16.3.2006, 13:54 Найти цитируемый пост)
А как можно удалить вообще системные модули
System и SisInit удалить полностью нельзя.
Но можно сделать их пустыми:
Код
unit SysInit;
interface
implementation
end.

Правда пустой System не скомпилится.
У меня он такой:
Код
unit System;

interface

const kernel = 'kernel32.dll';

procedure _HandleFinally;
procedure _InitExe;
procedure _halt0;
procedure ExitProcess(uExitCode: LongWord);stdcall; external kernel name 'ExitProcess';

type 
  DWORD = LongWord;
  {$EXTERNALSYM DWORD}
  THandle = LongWord;
  PGUID = ^TGUID;
  TGUID = packed record
    D1: LongWord;
    D2: Word;
    D3: Word;
    D4: array[0..7] of Byte;
  end;
  HINST = THandle;
  HMODULE = HINST;
  HGLOBAL = THandle;

  PPoint = ^TPoint;
  TPoint = packed record
    X: Longint;
    Y: Longint;
  end;
  {$NODEFINE TPoint}
  tagPOINT = TPoint;
  {$NODEFINE tagPOINT}

  PRect = ^TRect;
  TRect = packed record
    case Integer of
      0: (Left, Top, Right, Bottom: Longint);
      1: (TopLeft, BottomRight: TPoint);
  end;
  {$NODEFINE TRect}

procedure Set8087CW(NewCW: Word);
function Get8087CW: Word;

var
  HInstance: LongWord;          { Handle of this instance }
  {$EXTERNALSYM HInstance}

implementation

var
  Default8087CW: Word = $1332;{ Default 8087 control word.  FPU control
                                register is set to this value.
                                CAUTION:  Setting this to an invalid value
                                could cause unpredictable behavior. }

function GetModuleHandle(ModuleName: PChar): Integer; stdcall;
  external kernel name 'GetModuleHandleA';

procedure _HandleFinally;
begin
end;

procedure _InitExe;
begin
  HInstance := GetModuleHandle(nil);
end;

procedure _halt0;
begin
  ExitProcess(0);
end;

procedure Set8087CW(NewCW: Word);
begin
  Default8087CW := NewCW;
  asm
        FNCLEX  // don't raise pending exceptions enabled by the new flags
{$IFDEF PIC}
        MOV     EAX,[EBX].OFFSET Default8087CW
        FLDCW   [EAX]
{$ELSE}
        FLDCW   Default8087CW
{$ENDIF}
  end;
end;

function Get8087CW: Word;
asm
        PUSH    0
        FNSTCW  [ESP].Word
        POP     EAX
end;

end.

Добавлено @ 14:10
Это необходимый минимум для оконных программ.
Для неоконных он еще меньше.
В принципе все, что для оконных можно вынести в другой модуль.
Добавлено @ 14:13
Вот минимальный System для неоконных приложений:
Код
unit System;

interface

const kernel = 'kernel32.dll';

procedure _HandleFinally;
procedure _InitExe;
procedure _halt0;
procedure ExitProcess(uExitCode: LongWord);stdcall; external kernel name 'ExitProcess';

type 
  PGUID = ^TGUID;
  TGUID = packed record
    D1: LongWord;
    D2: Word;
    D3: Word;
    D4: array[0..7] of Byte;
  end;

implementation

procedure _HandleFinally;
begin
end;

procedure _InitExe;
begin
end;

procedure _halt0;
begin
  ExitProcess(0);
end;

end.

Добавлено @ 14:17
В принципе скомпиленный вариант будет почти одинаков.
Мой вариант чуть больше из-за того, что вычисляет hInstance.
То есть реально только на одну импортируемую функцию больше.

Автор: Alexeis 16.3.2006, 14:22
Если компилятор все неиспользованное удаляет сам то по идее
если убрать все написанное в разделах initialization и finalization и скомпилировать пустой проект то результат должен быть анологичным или я что-то упустил smile
Добавлено @ 14:35
Кстати как компилятору явно указать что нужно использовать именно эти модули system и sysinit а не родные а то не всегда срабатывает помещение в ту же директорию.

Автор: Snowy 16.3.2006, 14:55
Цитата(alexeis1 @ 16.3.2006, 14:22 Найти цитируемый пост)
если убрать все написанное в разделах initialization и finalization и скомпилировать пустой проект то результат должен быть анологичным

Не совсем. Еще нужно зачистить _HandleFinally, _InitExe, _halt0.
Что нужно зачистить еще я не знаю. Но даже при таком раскладе разница больше килобайта.
Каким-то макаром туда еще менеджер памяти попадает.
Модуль System все же не совсем стандартный - есть в нем еще и внутрисистемные вызовы...
Добавлено @ 14:56
Цитата(alexeis1 @ 16.3.2006, 14:22 Найти цитируемый пост)
а то не всегда срабатывает помещение в ту же директорию.
Если в том же каталоге, то всегда.
По крайней мере при компиляции из коммандной строки точно.
По другому - через настройки проекта.

Автор: Alexeis 16.3.2006, 15:29
Цитата

По другому - через настройки проекта.

я в настройках не нахожу такую штуку

Автор: Snowy 16.3.2006, 15:53
Это в настройках среды.
Menu -> Tools -> Environment Options -> Library -> Library Path
В настройках проекта просто вставь в список Search Path первым свой каталог.

Автор: Alexeis 16.3.2006, 16:00
Snowy, в этом виде ни один из модулей delphi не воспринимает просто игнорирует.
Добавлено @ 16:08
Выложи пожалуйста весь проект с исходниками. smile

Автор: Snowy 16.3.2006, 16:14
У меня 7-ка спокойно компилит без указания каталогов.
Просто бросил файлы в тот же каталог.
Кстати, как обычно из самой дельфи размер получился больше, чем при компиляции из коммандной строки.
Поэтому я всегда собираю батники для компиляции.

А ты скомпилил System.pas? Или просто его туда бросил?
Если не скомпилил, то дельфя их и не увидит. system.pas ей пофигу. Ей нужен system.dcu.

Автор: Alexeis 16.3.2006, 16:19
Цитата

А ты скомпилил System.pas

Разве можно это сделать без проекта??
Я так не умею smile
Добавлено @ 16:20
Просто бросил System.pas

Автор: Snowy 16.3.2006, 16:27
Выкладываю пакет для создания микропрограмм.
В комплекте все необходимое, кроме самого компилятора и редактора ресурсов.
В файле list.txt все файлы подписаны.
Добавлено @ 16:28
Цитата(alexeis1 @ 16.3.2006, 16:19 Найти цитируемый пост)
Разве можно это сделать без проекта??
Это можно сделать только без проекта:
dcc32 -q system -m -y -z -$D-

Автор: Alexeis 16.3.2006, 16:48
Snowy, Так там еще и отладочная информация удалена??
и наверно упакован, а то получается 3 кб.

Автор: Snowy 16.3.2006, 16:56
Цитата(alexeis1 @ 16.3.2006, 16:48 Найти цитируемый пост)
Snowy, Так там еще и отладочная информация удалена??и наверно упакован, а то получается 3 кб.

Естественно! В txt же все написано. И упаковщик в комплекте.
А ты думал я рожу чудо и сделаю так, что компилятор дельфи будет строить прогу по другому?
Нет. Я просто уменьшил код до минимума.
В самом exe осталось полкило кода и куча пустоты.
Вот эту пустоту мы и ликвидируем при помощи приложенных утилит.

Автор: Snowy 16.3.2006, 17:21
Ставим рекорды.
Помнится когда-то зашел разговор в религиозных войнах, что Delphi создает огромные ехешники.
Тогда Решили написать HelloWorld на дельфи и на C++.
Мой вариант получился 4096 байт. Размер на C++ составил 1024 байта.
Теперь я готов дать новый ответ.
Вот он. Hello World на дельфи. 1005 байт!
Теперь можете смело ссылаться на этот пост, когда вам скажут, что на дельфи нельзя писать маленькие программы.

Автор: Snowy 16.3.2006, 17:24
Извиняюсь. Недоработочка вышла.

Ставим рекорды.
Помнится когда-то зашел разговор в религиозных войнах, что Delphi создает огромные ехешники.
Тогда Решили написать HelloWorld на дельфи и на C++.
Мой вариант получился 4096 байт. Размер на C++ составил 1024 байта.
Теперь я готов дать новый ответ.
Вот он. Hello World на дельфи. 977 байт!
Теперь можете смело ссылаться на этот пост, когда вам скажут, что на дельфи нельзя писать маленькие программы.

Автор: Yanis 16.3.2006, 18:00
Цитата(Snowy @ 16.3.2006, 17:24 Найти цитируемый пост)
Теперь можете смело ссылаться на этот пост, когда вам скажут, что на дельфи нельзя писать маленькие программы.

Можно то можно, но путём всяческих извращений. Наверняка System кастрированый, что влечёт за собой множество неудобств.

Автор: Snowy 16.3.2006, 18:24
Цитата(Yanis @ 16.3.2006, 18:00 Найти цитируемый пост)
Наверняка System кастрированый, что влечёт за собой множество неудобств.
Не больше, чем на ассемблере. А то и меньше.
Главное неудобство - нельзя подключать стандартные модули.
Но когда счет идет на байты, то это закономерно - все пишем ручками.
А точнее собираем свой "стандартный" модуль, куда переносим необходимые нам куски стандартных - строгая ручная фильтрация - берем только то, что нам действительно нужно.
Добавлено @ 18:26
Кстати, на масме Hello World из экзамплов получается 1.5кб.

Автор: Yanis 16.3.2006, 18:56
Цитата(Snowy @ 16.3.2006, 18:24 Найти цитируемый пост)
Но когда счет идет на байты, то это закономерно - все пишем ручками.

Опыт у меня небольшой, но я если честно немогу представить случая, когда счёт идёт на байты, а программист пишет на Delphi smile

Цитата(Snowy @ 16.3.2006, 18:24 Найти цитируемый пост)
Кстати, на масме Hello World из экзамплов получается 1.5кб.

Конечно, там же вроде линкуются все функции, когда библиотеку, например подцепляешь. (Или нет? Не помню просто smile ) А этот экзампл, тоже сжат FSG 2.0?

Автор: Snowy 16.3.2006, 19:01
Цитата(Yanis @ 16.3.2006, 18:56 Найти цитируемый пост)
Опыт у меня небольшой, но я если честно немогу представить случая, когда счёт идёт на байты, а программист пишет на Delphi
Это раньше было трудно представить - возможности такой не было.
А теперь ради бога. Хочешь на дельфи - пажалиста.
Что мешает-то?
Если бы разговор шел о C++, то сомнений бы не было.
Почему такие сомнения насчет дельфи?
Все разумно.

Цитата(Yanis @ 16.3.2006, 18:56 Найти цитируемый пост)
Конечно, там же вроде линкуются все функции, когда библиотеку, например подцепляешь.
Неа. Я дизассемблил. Все те же 2 функции: MessageBoxA из user32 и ExitProcess из kernel.
Слеплено немного коряво, но ничего существенно лишнего нет.

Цитата
А этот экзампл, тоже сжат FSG 2.0?
Естественно. Иначе мы получим в нагрузку 2 кило нулей.
При стандартной организации невозможно сделать ехе меньше килобайта.

Автор: Girder 22.3.2006, 15:35
Цитата(Snowy @ 16.3.2006, 12:56 Найти цитируемый пост)
Хм. С максимальными извращениями получился файлик в 1405 байт.
Дожимал буквально по байтику. Точнее по 20 байтиков.
Меньше уже не получается.
Не... ну енто много... слишком много для простого окна

Цитата(Snowy @ 16.3.2006, 12:56 Найти цитируемый пост)
Это пример окна на дельфи. Оно ничего не делает, кроме стандартных действий
(свернуть, развернуть, размер, положение и т.п.).
Просто пример минимализма.
Ладно... вот тебе пример окна из "Блокнота" smile

Открой блокнот... и в пеши в него две буковки: "лю". Сохрани под с любым именем и расширением "com"(т.е. Бла-бла.com) в кодировке ANSI. Все можеш запускать.

PS: Вот тебе и приложение из 2 байт с окном которое также ни чего не умеет делать smile набранное в notepad-e smile ... с одним недостатком: в x64 осях не работает.

Автор: Snowy 22.3.2006, 16:21
Цитата(Girder @ 22.3.2006, 15:35 Найти цитируемый пост)
Вот тебе и приложение из 2 байт с окном которое также ни чего не умеет делать
Ну, это TINY модель. DOS. Меньше не придумаешь.
Только окно консольное.
По DOS у меня рекорд 19 байт - программа с полноэкранной анимацией.
А под Win32 не получится создать стандартный PE код меньше 1кб. Только нестандартный.
А 977 байт для дельфи это весьма прилично.
Да и не только для дельфи ;)

Автор: vlgr 28.9.2006, 14:53
Если кому то еще интересно
HelloWorld на Delphi без упаковки но с помощью unilink`а 730 байт
minipad без упаковки, без дополнительных утилит, только Delphi 4608 байт

Автор: RA 8.4.2007, 21:03
Компилятор D6, Пакер FSG 2.0
Новый рекорд 913 байт  smile 

Автор: Yanis 9.4.2007, 15:17
Цитата(RA @  8.4.2007,  22:03 Найти цитируемый пост)
Компилятор D6, Пакер FSG 2.0
Новый рекорд 913 байт

Совсем уж старая статья: http://xproger.mirgames.ru/?id=1&page=0&doc=delphi_min
Заявлено меньше smile

Автор: Snowy 9.4.2007, 16:01
Цитата(Yanis @  9.4.2007,  15:17 Найти цитируемый пост)
Заявлено меньше
Так там преобразование в com файл идёт.
Нафига нам com?

Добавлено через 1 минуту и 23 секунды
Да и "прога" ничего не делает. А мы про HelloWorld говорим.

Автор: XProger 10.4.2007, 01:11
Раз уж на то пошло...
896 б
Компилятор Delphi 3.
Линковщик Microsoft Linker.
Никакого сжатия не применялось.

Автор: Yanis 10.4.2007, 09:13
Цитата(XProger @  10.4.2007,  02:11 Найти цитируемый пост)
Раз уж на то пошло...
896 б
Компилятор Delphi 3.
Линковщик Microsoft Linker.
Никакого сжатия не применялось.

Привет! Рад приветствовать на нашем форуме.
Молодец, что ответил.
Надеюсь не последний раз ;)
smile

Автор: XProger 10.4.2007, 09:34
Yanis, привет привет smile
Как же я мог пройти мимо, когда тут такая родная для меня тема обсуждается ;)
Посмотрим как (чем?) уменьшат текущий результат.

Кстати, поигрался с настройками... 820 байт, опять же без сжатия.

Автор: RA 10.4.2007, 18:30
Цитата(XProger @  10.4.2007,  01:11 Найти цитируемый пост)
Компилятор Delphi 3.

Вообще-то чем меньше версия компилятора тем меньше размер, так что это из другой весовой категории smile

Добавлено через 2 минуты и 22 секунды
D3 и D4 делают экстремально маленькие приложения даже по сравнению с D5

Автор: XProger 10.4.2007, 18:33
RA, категорически не согласен. Комилятор ничего лишнего в exe не добавляет от версии к версии.

Автор: ~FoX~ 10.4.2007, 18:39
http://articles.org.ru/cfaq/index.php?qid=2571

Автор: W1zArD 14.7.2007, 00:58
конечно не знаю... надо или нет.. но вот:
512 байт )))
http://www.xakep.ru/local/search/result.asp?scope=+%22%2Fxpost%22%2C+%22%2Fmagazine%2Fxa%22%2C+%22%2Fmagazine%2Fxs%22%2C+%22%2Fmagazine%2Fxh%22+&orderby=rank&tosearch=Delphi+%E2%F1%E5%EC%EE%E3%F3%F9%E8%E9
читать именно то, где встречается "Delphi всемогущий" т.е. с 3-8...

ой оказывается уже есть, но ссылку все равно оставлю... smile 

Автор: RA 15.7.2007, 21:42
Цитата(XProger @  10.4.2007,  18:33 Найти цитируемый пост)
RA, категорически не согласен. Комилятор ничего лишнего в exe не добавляет от версии к версии. 


Дык не пробовал вот и не согласен. Попробуй и сам убедишься.

Автор: Alexeis 15.7.2007, 21:48
Цитата(RA @  15.7.2007,  21:42 Найти цитируемый пост)
Дык не пробовал вот и не согласен. Попробуй и сам убедишься. 

  Не всегда. Пустая форма не всегда увеличивается от версии к версии.

Автор: ivan219 15.7.2007, 23:35
А вот от обновления к обновлению точно покрайней мере в Delphi7 smile 

Автор: RA 17.7.2007, 21:01
Цитата(Alexeis @  15.7.2007,  21:48 Найти цитируемый пост)
 Не всегда. Пустая форма не всегда увеличивается от версии к версии. 


Причем тут пустая форма, вот пример.


Код

library LangIndicDll;

uses
  Windows, Messages;

var
  Hk: HHook;

function MyHookProc(nCode: Integer; wParam, lParam: Integer): Integer; stdcall;
  function MainWnd: HWnd;
  begin
    Result := FindWindow( nil, 'LangIndicMain' );
  end;
var K: HKL;
begin
  if nCode >= 0 then  // do not process message
  begin
    case nCode of
    HSHELL_WINDOWACTIVATED,
    HSHELL_LANGUAGE:
      begin
        K := GetKeyboardLayout( 0 );
        PostMessage( MainWnd, WM_USER + 2, wParam, K );
        {if K = 0 then
          Windows.Beep( 100, 100 );}
      end;
    end;
  end;
  Result := CallNextHookEx( Hk, nCode, wParam, lParam);
end;

procedure InstallHook;
var H: THandle;
begin
  H := GetModuleHandle( 'LangIndicDll.dll' );
  Hk := SetWindowsHookEx( WH_SHELL, @ MyHookProc, H, 0 );
end;

procedure RemoveHook;
begin
  UnhookWindowsHookEx( Hk );
end;

exports InstallHook, RemoveHook;

begin
end.




Автор: Alexeis 17.7.2007, 21:57
RA, что же из этого примера следует?

Автор: RA 18.7.2007, 20:27

В D4 один размер в D5 другой в D6 третий и тд. по нарастающей 

Автор: Alexeis 18.7.2007, 20:38
Цитата(RA @  18.7.2007,  20:27 Найти цитируемый пост)
В D4 один размер в D5 другой в D6 третий и тд. по нарастающей  

  А в семерке скорее всего меньше. 

Автор: Snowy 18.7.2007, 21:55
Цитата(RA @  18.7.2007,  20:27 Найти цитируемый пост)
В D4 один размер в D5 другой в D6 третий и тд. по нарастающей 
В D5 больше, чем в D7, в D3 больше чем в D5 и так по убывающей  smile 
Хотя не могу не признать, что в D2007 больше, чем в D7.
D7 вообще даёт самый маленький результат. Потому для микропрограмм её и юзаю...

Автор: Alexeis 18.7.2007, 21:58
Цитата(Snowy @  18.7.2007,  21:55 Найти цитируемый пост)
Хотя не могу не признать, что в D2007 больше, чем в D7.

  Но не больше чем 2006. 

Автор: Telepyz 20.7.2007, 13:53
А UPX'ом пользоваться не пробовали)))

Автор: Alexeis 20.7.2007, 14:12
UPX это зло, лучше 7-zipом. smile

Автор: Telepyz 20.7.2007, 15:25
Цитата(Alexeis @  20.7.2007,  15:12 Найти цитируемый пост)
UPX это зло, лучше 7-zipом. 

Дану, зато потом прогу нельзя вскрыть редактором ресурсов))

Автор: Alexeis 20.7.2007, 15:47
Цитата(Telepyz @  20.7.2007,  15:25 Найти цитируемый пост)
Дану, зато потом прогу нельзя вскрыть редактором ресурсов)) 

  Во первых Restorator2006 поддерживает уже UPX, а во вторых делается банальный дамп процесса в памяти, после чего все ресурсы становятся доступны так как будто и не было ничего упаковано.

Автор: Telepyz 20.7.2007, 16:16
Цитата(Alexeis @  post1202036)
 Restorator2006 поддерживает уже UPX

У меня Restorator2006 v.3.0 билд 1126 не поддерживает...((

Автор: Snowy 20.7.2007, 18:20
Цитата(Telepyz @  20.7.2007,  15:25 Найти цитируемый пост)
Дану, зато потом прогу нельзя вскрыть редактором ресурсов))
Ха-ха три раза...
upx -d Project1.exe

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)