PDA

Просмотр полной версии : Сжатие приложения делфи. Способы.


Logan22
17.11.2009, 23:25
Хотел бы узнать какие есть способы по сжатию веса приложений, либо какие-то вообще способы чтобы уменьшить стандартный вес приложений. :D

ZdezBilYa
17.11.2009, 23:42
ASPack

transserg
17.11.2009, 23:47
пиши на чистом API =)

neprovad
18.11.2009, 00:04
максимально отказаться от модулей, присутствующих в uses

begin_end
18.11.2009, 00:08
Смотри статью:
Уменьшаем размер программ на Дельфи (https://forum.antichat.ru/thread40603.html)
Кратко рассмотрены многие способы уменьшить размер програмы, есть примеры.

slesh
18.11.2009, 00:26
Кстати, если юзать пакет, то советую сказать последнюю версию UPX и использовать сжатие с опцией -9 --ultra-brute
долго, но дает хорошие результаты:
Прога 448 000 байт.
upx.exe -9 --ultra-brute дает 167 424 байт
upx.exe -9 дает 179 200 байт.

Logan22
18.11.2009, 00:34
Спасибо всем за ответы, всем плюсы!)
И ещё один вопрос, как возможно так реализовать чтоб когда курсор попадает на форму, и меняется вид курсора, к примеру на мой (уже скачанный с инета), не стандартный, не тот что по умолчанию в ОС виндоулс. Думаю вы поняли суть. =)

RumShun
18.11.2009, 07:39
простейший пример: свойство cursor, но там только стандартые, чтоб загрузить свои курсоры обращаемся к Delphi World 6, и вот что он нам говорит:
Загрузка курсоров

Функция API LoadCursor определена следующим образом:

function LoadCursor(Instance: THandle; CursorName: PChar): HCursor;

Первый параметр Instance должен содержать дескриптор модуля, содержащего файл
RES. Как и пример, приведенный выше, данный пример предполагает, что модуль,
из которого мы пытаемся загрузить курсор, - ваше приложение.
Второй параметр - имя курсора. В секции interface сделайте следующее объявление:

const
crMyCursor = 5; {Другие модули могут также использовать эту константу}

Затем добавьте следующие две строчки к обработчику события формы OnCreate:

procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.Cursors[crMyCursor] := LoadCursor(HInstance, 'CURSOR_1');
Cursor := crMyCursor;
end;

или же вы можете изменить один из стандартных курсоров Delphi как показано ниже
(константы Cursor описаны в электронной справке в статье Cursors Property):

procedure TForm1.FormCreate(Sender: TObject);
begin
{Данный пример изменяет курсор SQL Hourglass}
Screen.Cursors[crSQLWait] := LoadCursor(HInstance, 'CURSOR_1');
end;

Примечание: в нормальной ситуации необходимо удалить любые ресурсы курсоров с помощью DeleteCursor,
тем не менее, в Delphi в этом нет необходимости, поскольку Delphi сама удаляет все курсоры из массива Cursors.