Замена системных модулей для Delphi, Уменьшим размер WinAPI приложений на 9-11 кб. |
Добро пожаловать, гость ( Вход | Регистрация )
Замена системных модулей для Delphi, Уменьшим размер WinAPI приложений на 9-11 кб. |
Grom PE |
Nov 7 2007, 01:15
Сообщение
#1
|
Advanced Member Группа: CTPAX-X Сообщений: 84 Регистрация: 7-February 08 Из: i@grompe.org.ru Пользователь №: 3,120 Спасибо сказали: 95 раз(а) |
Как говорится, писал для себя, но думаю, пригодится и другим.
Если у вас чистый проект на Delphi, в котором используется только WinAPI, и по минимуму всяких встроенных функций языка, то большой шанс, что программу можно сократить примерно на 10 кб, используя эту замену системных модулей. Пропатченный компилятор от Delphi 7 — DCC32HACK, нацеленный на минимальный размер WinAPI программ, а также обновленная замена системных модулей внутри. http://grompe.org.ru/files/dcc7hack.rar |
-=CHE@TER=- |
May 3 2010, 10:08
Сообщение
#2
|
Walter Sullivan Группа: Root Admin Сообщений: 1,355 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 311 раз(а) |
Вопрос - чем можно воспользоваться в Delphi для увеличения длины строки до нужного размера?
Если писать так: CODE SetLength(S, Len); То при использовании DCC32HACK в готовый код пихается куча всякого барохла, в частности строчка имени программы указанная в: CODE Program PrgName; Т.е. в исполняемый файл зачем-то пихается строчка "PRGNAME", если не писать "Program...", то на месте "PRGNAME" будет слово "PROGRAM". Зачем это делается - знают только в фирме Borland. Если использовать: CODE S:=#32; While Length(S) < Len Do S:=S + S[1]; То это долго. Можно конечно и так: CODE S:=#32; While Length(S) < Len Do S:=S + S; S:=Copy(S, 1, Len); Но при большом Len это будет занимать в два раза больше чем надо памяти на финальном шаге - как следствие жуткие тормоза при реаллоцировании. Есть какие-нибудь ещё способы удобные? Для тех случаев, когда нужна именно строка - когда нужен просто буфер, то там и GetMem()'ом обойтись можно... Или тогда вопрос к Grom PE ты можешь в DCC32HACK как-нибудь перехватить работу с SetLength()?.. Спасибо сказали:
|
Упрощённая версия | Сейчас: 13th June 2024 - 03:01 |