QUOTE(Yoti @ May 12 2019, 18:34)
Упаковано в UPX для того, чтобы меньше весило. Быстрее скачивалось из Интернет и меньше занимало места на HDD.
Это-то понятно и логично, с этим никто не спорит.
QUOTE(Yoti @ May 12 2019, 18:34)
Собрано на Delphi 2010. Консольное приложение там стало 300 кб, вместо 90 как у Delphi 7.
Там не 90, а 15 должно быть. Сейчас без всяких хаков взял программу "test.dpr":
CODE
{$APPTYPE CONSOLE}
begin
writeln('Hello world!');
end.
Собираю её:
dcc32 test.dpr
Получился test.exe размером 15360 (можно до 14336 уменьшить, если
StripReloc применить).
QUOTE(Yoti @ May 12 2019, 18:34)
На Си переписывать не хочу, нет пользы.
Так я ж и писал, что можно не переписывая попробовать жир снять. А что до Си как языка, то понимание что на нём многие технические вещи пишутся проще и быстрее, чем на том же Delphi, приходит с опытом и большим количеством написанного кода. Торопиться не нужно. (*улыбается*)
QUOTE(Yoti @ May 12 2019, 18:34)
Проверять там нечего, всё работает. Вся структура: заголовок, количество файлов, таблица и дальше тела файлов без выравнивания.
Дело было не в проверять - написать программу можно как угодно - если она работает так как задумано, то остальное уже детали. Но мне, например, интересны технические детали - они позволяют писать более аккуратный, надёжный, быстрый и даже короткий код. Подсмотрев где-то интересные приёмы, я адаптирую их для своих нужд. Ладно, я, наверное, не смогу ясно объяснить что я здесь хотел сказать, ибо уставший совсем.
Ну, например, нужно тебе найти все изображения с точным соотношеним сторон 4 к 3.
Можно так сделать:
if ((width div 4) = (height div 3)) then ...
Но у тебя получается два деления и непонятно что с остатком, так что лучше делать так:
if ((width*3) = (height*4)) then ...
Здесь тоже не всё гладко, т.к. может быть переполнение, но уже лучше (нет проблемы с остатком, для переполнения должны быть очень большие числа, особенно если тип переменных как минимум uint32) и быстрее (умножение быстрее деления, к тому же копилятор оптимизирует оба умножения через сдвиг, что ещё быстрее: width*3 => (width shl 1)+width; height*4 => height shl 2).
Собственно это и есть обсуждение кода и каких-то вещей там.
Но, если не интересно, то приставать не буду.
QUOTE(Yoti @ May 12 2019, 18:34)
Исходники позже, есть желание игру перевести. После завершения перевода или по факту отказа от идеи выложу вместе с упаковщиком.
А! Вот оно что, тогда понятно. Удачи с проектом!