Як зменшити додаток написане на delphi в 20 разів - програмні продукти

"Порожня" форма важить близько 355 КБ, і цей початковий розмір збільшується з кожною новою версією Delphi. "Порожня" програма, написана з використанням бібліотеки KOL, що зменшує розмір виконуваного файлу, - 32 КБ. "Чисте" консольний додаток має розмір 8 КБ, оскільки відображається як процес і, відповідно, не має складних взаємодій з Windows-вікнами. Тобто можна зробити так, щоб по Ctrl + Alt + Del консоль не було видно :).
Отже, в меню Delphi виберіть File> New> Other і в вікні серед іншого знайдіть пункт Console Application. Виникне наступна заготівля:

program Project1; //Назва проекту

// директива, яка вказує на наявність консолі

uses SysUtils; // підключені модулі

І ще варіант:
Label MyLabel; // "мітка"

begin
while true do begin
Writeln ( 'Enter your name' + # 10);
Readln (S);
Writeln (# 10 + 'Your name is' + S);
end;
end.
Тут "№10" позначає кінець абзацу, перехід курсора на наступний рядок (клавіша Enter). А ось приклад, де програма закривається по команді користувача:
var s: String;

begin
while true do begin
Readln (S); // що ввів користувач?
// Юзер міг ввести команду і прописними буквами,
// і малими. Перетворимо букви в прописні
// командою UpperCase.
If UpperCase (s) = 'EXIT' then begin
// перепитав ще раз
Writeln ( 'Do you really want to exit? [Y / n]');
// читаємо відповідь юзера
Readln (s);
if UpperCase (s) = 'Y' then exit; // виходимо
end;
end;
end.
Ось так. Сюди можна вставити будь-якій код, тільки підключивши, якщо потрібно, необхідні модулі. Тепер ще раз відкомпілюйте проект і натисніть Project> Information for 'ProjectName'. Розмір EXE буде близько 40 кілобайт, але тільки тому, що модуль SysUtils.pas в розділі Uses важить так багато. А якщо ви заміните цей модуль на Windows.pas, то програма буде займати, як я і обіцяв, ВІСІМ :) кіло на вашому харді :).
Звичайно, за умови, що ви будете користуватися тільки модулем Windows, який містить більшість команд, необхідних в повсякденності. Якщо ви не збираєтеся вступати в консольні переговори з користувачем і користуватися процедурами WriteLn і ReadLn, то і консоль не потрібна. Видаліть директиву, щоб чорне MS-DOS'овское віконце не з'являлося.
Але якщо це віконце вам дуже потрібно і ви збираєтеся вести діалог з користувачем, то не намагайтеся вказувати російські букви в команді WriteLn: консоль відобразить їх в іншому кодуванні. Щоб це виправити, надрукуйте вихідний (російський) текст в Блокноті і поставте шрифт Terminal. Результат буде в кодуванні DOS, як його і треба вказувати в процедурі WriteLn.
Очистити полотно консолі від тексту можна так:
program Project1;

var
buffer: TConsoleScreenBufferInfo; // буфер
i: integer;
begin
WriteLn ( 'Press to clear screen');
ReadLn;
GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), buffer);
for i: = 0 to buffer.dwSize.y do writeln;
Writeln ( 'Screen is cleared :)');
Readln;
end.
От і все. Як зібрати що-небудь серйозніше, ніж обхаянное крутими програмістами додаток типу "Hello World", ми розповімо вам в наступній серії.

Схожі статті