![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Параметры
---------- Директивы параметров определяют параметры, которые влияют на компиляцию программы. Директива Значение $C Атрибут Атрибут сегмента кода $D Текст Описание $I ИмяФайла Файл для включения $G ИмяМодуля Группа модулей в сегменте $L ИмяФайла Компоновать объектный файл $M Стек, Куча Размеры распределения памяти $O ИмяМодуля Имя оверлейного модуля $R ИмяФайла Файл с ресурсами $S РазмерСегмента Размер сегмента Между именем директивы и параметрами должен находиться хотя бы один пробел. Например: {$I TYPES.INC} {$O MYUNIT} $C: Атрибут сегмента кода -------------------------- Управляет атрибутами сегмента кода. Синтаксис: {$C атрибут атрибут} Значение по умолчанию: {$C MOVEABLE DEMANDLOAD DISCARDABLE} Тип: Глобальная Режим: Windows, Protected Замечания: Каждый сегмент кода в приложении или библиотеке имеет набор атрибутов, которые определяют его поведение, когда он загружается в память. Директива $C влияет только на сегмент кода модуля, программы или библиотеки в которых она помещена. Атрибуты сегмента кода разбиты на группы по два в каждой. Каждая опция имеет противоположную ей опцию: Опция Значение MOVEABLE Система может изменять расположение сегмента кода в памяти. FIXED Система не может изменять расположение сегмента кода в памяти. PRELOAD Сегмент кода загружается при запуске программы. DEMANDLOAD Сегмент кода загружается только при необходимости. PERMAMENT Сегмент кода остается в памяти всегда, после загрузки. DISCARDABLE Сегмент кода может быть выгружен из памяти, если он больше не нужен. Если определены обе опции, только последняя будет иметь значение. Например запись {$C FIXED MOVEABLE DISCARDABLE} создаст сегмент кода с атрибутами MOVEABLE и DISCARDABLE. $D: Описание ------------- Вставляет указанный текст в раздел описания в заголовке EXE или DLL файлов. Синтаксис: {$D Текст} Тип: Глобальная Режим: Windows, Protected $I: Файл для включения ----------------------- Указывает компилятору включить указанный файл в компиляцию. Синтаксис: {$I Имя_файла} Тип: Локальная Замечания: Заданное по умолчанию расширение для файла - PAS Если Имя_файла не определяет каталог, то IDE ищет - Сначала в текущем каталоге - Затем в каталогах, определенных в строке ввода Options|Directories|Include directories (или в каталогах, которые вы определили в опции /I в командной строке при запуске TPC) Включаемый файл вставляется в компилируемый текст сразу после директивы $I. Вы можете использовать 15 уровней вложенных файлов. ВНИМАНИЕ: Файл для включения не может быть определен в середине операторной части. Все операторы между словами Begin и End операторной части должны находиться в одном и том же исходном файле. Директива $G: Группа модулей в сегменте ---------------------------------------- Определяет группу модулей, которые компоновщик должен поместить в один и тот же сегмент. Синтаксис: {$G ИмяМодуля, ИмяМодуля ...} Тип: Локальная Режим: Windows, Protected Замечания: Директива $G определяет группу модулей, которые компоновщик должен поместить в один и тот же сегмент. Группировка модулей в одном и том же сегменте гарантирует, что модули загружаются и выгружаются из памяти в одно и то же время. Директива $G используется прежде всего для группировки модулей, содержащих неиспользуемые данной программой части кода. Каждая директива $G определяет группу модулей. Директивы $G допустимы только в программе или библиотеке, и должны находиться после зарезервированного слова Uses. Компилятор сообщает об ошибке, если вы пытаетесь добавить модуль в более, чем одну группу. В дополнение к любым группам, созданным с помощью директивы $G, компилятор поддерживает заданную по умолчанию группу, которая включает все модули, сгруппированные неявно. Компоновщик минимизирует число сегментов кода в исполняемом файле, объединяя все модули, которые принадлежат одной и той же группе. Два или более модуля помещаются в один и тот же сегмент кода, если они принадлежат одной группе и имеют одни и те же атрибуты сегмента кода, и если их общий размер не превышает выбранный размер сегмента. Компоновщик никогда не будет помещать модули, принадлежащие разным группам, в один и тот же сегмент кода. $L: Компоновать объектный файл ------------------------------- Указывает компилятору компоновать заданный файл вместе с программой или модулем. Синтаксис: {$L Имя_файла} Тип: Локальная Замечания: Директива $L используется для компоновки с основной программой кода, написанного на ассемблере для подпрограмм, объявленных внешними. Указанный файл должен быть переместимым объектным файлом Intel (файл *.OBJ). Заданное по умолчанию расширение для файла - OBJ Если Имя_файла не определяет каталог, то IDE ищет - Сначала в текущем каталоге - Затем в каталогах, определенных в строке ввода Options|Directories|Object directories. $M: Размеры распределения памяти --------------------------------- Определяет параметры распределения памяти. Синтаксис: {$M размер_стека, размер_кучи} Значения по умолчанию: {$M размер_стека, размер кучи} (Windows) {$M размер_стека} (Защищенный режим DOS) {$M размер_стека, начало_кучи, конец_кучи} (Реальный режим DOS) Тип: Глобальная Команда меню: Options|Compiler|Memory sizes Директива $M определяет параметры распределения памяти для приложения или библиотеки. Параметр "размер_стека" должен быть целым числом в диапазоне от 1024 до 65520, что определяет размер сегмента стека. Для реального режима DOS, параметры "начало_кучи" и "конец_кучи" определяют минимальный и максимальный размеры кучи, соответственно. Параметр "начало_кучи" должен быть в диапазоне от 0 до 655360, а параметр "конец_кучи" должен быть в диапазоне от "начало_кучи" до 655360. Для Windows, параметр "размер_кучи" определяет размер локальной области кучи в сегменте данных. Параметр "размер_кучи" должен быть целым числом в диапазоне от 0 до 65520. ВНИМАНИЕ: Директива $M не дает эффекта, когда используется в модуле. Параметр "размер_стека" игнорируется в библиотеке (библиотека всегда использует стек приложения, которое ее вызывает). $O: Имя оверлейного модуля --------------------------- Записывает модуль в файл оверлеев. Синтаксис: {$O Имя_модуля} Тип: Локальная Режим: Real Когда вы компилируете программу, директива {$O Имя_модуля} определяет, какой из модулей, используемых программой должен быть помещен в OVR файл вместо EXE файла. Директивы {$O Имя_модуля} должны находиться после раздела Uses программы. Директива {$O Имя_модуля} не дает эффекта, если используется в модуле. Компилятор сообщает об ошибке, если вы пытаетесь записать в оверлейный файл модуль, который не компилировался в режиме {$O+}. Любой модуль, описанный в директиве {$O Имя_модуля}, должен компилироваться со включенной опцией Overlays allowed (в диалоговом окне Options|Compiler). $R: Файл с ресурсами --------------------- Определяет имя ресурсного файла, который будет включен в приложение или библиотеку. Синтаксис: {$R Имя_файла} Тип: Локальная Режим: Windows, Protected Замечания: Заданное по умолчанию расширение для файла - RES. Это должен быть файл ресурсов Windows. Если Имя_файла не определяет каталог, то компилятор ищет - Сначала в текущем каталоге - Затем в каталогах, определенных в строке ввода Options|Directories|Resource directories Когда используется в модуле, ресурсный файл просто переписывается в полученный файл модуля. Никакая проверка, гарантирующая что файл существует на данном этапе, не производится. При компоновке приложения или библиотеки, обрабатываются файлы ресурсов, определенные во всех модулях и в самой программе или библиотеке, и каждый ресурс каждого ресурсного файла копируется в созданный EXE или DLL файлы. Директива $S: Установка размера сегмента ----------------------------------------- Определяет размер сегмента кода для сгруппированных модулей. Синтаксис: {$S РазмерСегмента} Значение по умолчанию: {$S 16384} Тип: Глобальная Режим: Windows, Protected Замечания: Директива $S допустима только в основной программе или библиотеке. Директива определяет размер сегментов кода для сгруппированных модулей. Выбранный размер должен находиться в диапазоне от 0 до 65535. Модули, размер которых превышает выбранный размер, помещаются в отдельные сегменты кода. При группировке модулей, компоновщик помещает модули с одними и теми же атрибутами сегмента кода в один и тот же сегмент кода, до достижения определенного размера. Это ограничение действует также и на группы, определенные с помощью директивы $G. Директива $S никогда не производит предупреждений или сообщений об ошибках. Если модуль не может быть записан в сегмент кода с другими модулями, он автоматически записывается в отдельный сегмент. Установка размера сегмента в 0 гарантирует, что каждый модуль будет записан в отдельный сегмент кода, что было установкой по умолчанию в предыдущих версиях компилятора. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |