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


Автор: Akella 18.1.2010, 11:12
В списке форм появилась директива: $SETPEFLAGS IMAGE_FILE_RELOCS_STRIPPED

в файле dproj
Цитата

    <DCCReference Include="uDxMemData.pas">
      <Form>$SETPEFLAGS IMAGE_FILE_RELOCS_STRIPPED</Form>



uDxMemData.pas - это не форма, а модуль. Как исправить проблему?

http://fastpic.ru/view/1/2010/0118/b7d5a7470db198f68f68686362070fd6.jpeg.html


D2007

Автор: Akella 18.1.2010, 11:27
Пока просто удалил строку 
Цитата

<Form>$SETPEFLAGS IMAGE_FILE_RELOCS_STRIPPED</Form>

Надеюсь, что проблем не будет.
странно всё это.

Автор: Frees 18.1.2010, 13:25
http://durus.ru/content/view/689/1/ 

Автор: Akella 18.1.2010, 13:44
Firefox не может установить соединение с сервером durus.ru.

Автор: Frees 18.1.2010, 14:12
ОФФ
Цитата(Akella @  18.1.2010,  16:44 Найти цитируемый пост)
Firefox не может установить соединение с сервером durus.ru.

хз, опера может.....делай выводы

Добавлено @ 14:13
Цитата

Статьи - Статьи 
Многие знают, что можно уменьшить размер exe файла, не используя упаковщики и не изменяя функциональность, путём удаления из exe таблицы релокаций.
Обычно для этого используют сторонние утилиты. Например StripReloc Джордона Рассела.
А теперь я расскажу страшную тайну. В Delphi 2006 и выше, релоки можно не удалять, а просто не создавать! В Delphi 2006 появилась недокументированная директива компилятора {$SETPEFLAGS}. Она позволяет настроить несколько тонких моментов создания нашего бинарника.
В первую очередь она интересна тем, что позволяет отключить создание таблицы релокаций.
Внимание! Не отключайте таблицы релокаций в dll, bpl и др. файлах.
Таблица релокации не нужна exe файлу, т.к. он всегда грузится по одному и тому же адресу.
Использование директивы {$SETPEFLAGS} очень простое: 
Откройте файл проекта (dpr) 
В uses добавьте Windows 
Ниже пропишите {$SETPEFLAGS IMAGE_FILE_RELOCS_STRIPPED}
Попробуйте скомпилировать файл до добавления этой директивы и после.
Вы сами сможете убедиться, что размер exe уменьшился.

В дополнение хочу сказать, что использование SETPEFLAGS этим не ограничивается.
У неё есть ещё масса интересных возможностей. Получить их полный список очень просто: 
Откройте модуль Windows 
Найдите в нём поиском IMAGE_FILE_RELOCS_STRIPPED
Нашли? Ниже идёт целый список констант, начинающихся с IMAGE_FILE_
Справа идёт комментарий. Для включения нескольких инструкций, используйте or. Пример:
{$SETPEFlAGS IMAGE_FILE_RELOCS_STRIPPED or IMAGE_FILE_DEBUG_STRIPPED or
  IMAGE_FILE_LINE_NUMS_STRIPPED or IMAGE_FILE_LOCAL_SYMS_STRIPPED or
  IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP or IMAGE_FILE_NET_RUN_FROM_SWAP}
Что я здесь сделал? 
IMAGE_FILE_RELOCS_STRIPPED - отрезал релоки 
IMAGE_FILE_DEBUG_STRIPPED - Выбросил из ехе Debug информацию 
IMAGE_FILE_LINE_NUMS_STRIPPED - Выбросил из exe информацию о номерах строк 
IMAGE_FILE_LOCAL_SYMS_STRIPPED - Выбросил local symbols 
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP - При запуске exe с компакта, флэшки, других извлекаемых устройств, считать exe в свап и запустить оттуда. Полезно, если нужно запустить программу с компакта, а потом попросить вставить другой... 
IMAGE_FILE_NET_RUN_FROM_SWAP - аналогично предыдущей, только для сетевых дисков



Автор: Akella 18.1.2010, 15:03
Я не пытался изменить размер exe. И про эту директиву я в курсе.

Автор: Frees 18.1.2010, 15:15
Цитата(Akella @  18.1.2010,  18:03 Найти цитируемый пост)
Я не пытался изменить размер exe.

может какие утилиты или эксперты в тихоря пытались...

Автор: Akella 18.1.2010, 21:30
Не знаю. Сначала начали эти директивы появляться в файле проекта: ниже списка модулей, затем напротив некоторых модулей (справа от модулей). Поудалял. Принёс на работу проект, запустил и....
А так использую cnWinzards, Gexperts (но только некоторые опции включены), DDev.

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