Ниже обсуждаются реквизиты и объекты окон реквизита. Функционально реквизиты аналогичны управляющим элементам - они используются для получения информации от пользователя или ее вывода.
Однако реквизиты реализуются по-другому. В отличие от большинства
других интерфейсных элементов, реквизиты не являются окнами: они
не имеют описателей окна, не получают событий и сообщений и не
базируются на TWindow. Реквизиты ограничиваются окном реквизита,
которое управляет их представлением, обрабатывает все сообщения и
т.д. Реквизит получает команды и указания от этого окна.
В Windows-приложениях интерфейсные элементы (окна, блоки диалога и управляющие элементы) связаны между собой отношениями родитель-потомок. Два интерфейсных элемента являются связанными,
когда один из них является родительским окном, а другой дочерним.
Не путайте эти родительские взаимоотношения с наследованием или
владением экземпляров, которые являются отношениями между объектами. Дочернее окно не обязательно происходит из своего родительского окна или наследует его свойства.
Дочернее окно - это интерфейсный элемент, управляемый другим
интерфейсным элементом. Например, блоки списков управляются окном
или блоком диалога в котором они появляются. Они выводятся только
в случае вывода их родительских окон. И наоборот, блоки диалога
являются дочерними окнами, управляемыми порождающими их окнами.
При закрытии родительского окна, дочерние окна закрываются автоматически. Аналогично, при перемещении родительского окна, все
его дочерние окна перемещаются вместе с ним.
Все интерфейсные элементы (окна, блоки диалога и управляющие
элементы) могут выступать как родительские и как дочерние окна.
Segment сегмент exceeds 64K
Сообщение об ошибке утилиты TLINK
(сегмент превышает 64К)
Данная ошибка возникает, если определено слишком много дан-
ных для данного сегмента кода или данных, когда утилита TLINK
комбинирует сегменты с одним именем из разных исходных файлов.
Segment сегмент is in two groups: группа_1 and группа_2
Предупреждение утилиты TLINK
(указанный сегмент содержится в двух группах)
Компоновщик обнаружил конфликт в двух указанных группах.
Обычно это происходит только в программах на языке Ассемблера.
Это означает, что два модуля присваивают сегмент двум различным
группам.
Segment сегмент in two groups: группу_1 and группа_2
Предупреждение утилиты TLINK
(сегмент содержится в двух группах)
Компоновщик встретил конфликтное требование двух групп имен.
Обычно это происходит в программах на ассемблере. Это означает,
что два модуля присваивают сегмент двум различным группам.
Self relative fixup overflowed in module модуль
Предупреждение утилиты TLINK
(переполнение корректировок в модуле "модуль")
Это сообщение выводится в результате самоотносительной ссыл-
ки (обычно вызова) из одного физического сегмента в другой. Обыч-
но это происходит при использовании кода ассемблера, но может
возникать и при указании параметров именования сегмента компиля-
тора. При ссылке из одного сегмента кода на другой все нормально.
Однако ссылка на сегмент данных может означать ошибку.
Size of идентификатор unknown or zero
Сообщение об ошибке этапа компиляции
(Размер идентификатора неизвестен или нулевой)
Данный идентификатор использоваться в контексте, где нужен
размер. Без размера могут быть объявлены только признак (тег)
структуры (структура еще не определена), либо массив extern.
Ссылки на такие элементы (например, операцией sizeof) или обраще-
ние к ним через указатель к этому типу запрещены. Реорганизуйте
объявление таким образом, чтобы размер данного идентификатора был
известен.
sizeof may not be applied to a bit field
В своем текущем программном коде вы можете считывать и записывать базовые классы непосредственно, например:
void Derived::write( opstream& out )
{
Base::write( out );
...
}
void *Derived::read( ipstream& in )
{
Base::read( in );
...
}
Этот метод продолжает работать, но не будет записывать в базовый класс никакого номера версии. Чтобы использовать все преимущества отслеживания версий, измените эти вызовы и используете
новые шаблоны функций, которые работают с версиями:
void Derived::Write( opstreams& out )
{
WriteBaseObject( (Base *)this, out );
...
}
void *Derived::Read( ipstream& in, uint32 ver )
{
ReadBaseObject( (Base *)this, out );
...
}
Важно привести указатель к базовому классу, иначе ваша программа может аварийно завершиться.
Сегментные регистры: Размер сегмента:
Младший ^ CS
адрес _TEXT класс 'CODE'
код до 64К
DS
_DATA класс 'DATA'
инициализированные данные
DGROUP до 64К
_BSS класс 'BSS'
не инициализирован.данные
SS Свободная
область
SP(TOS) памяти
^
стек до 64К
Начало SP
динамически До конца
распределя- памяти
емая область v
Свободная
Старший область
адрес v памяти
Несколько
sfile
sfile A
sfile B
CS sfile Z
Сегментные регистры: Размер сегмента:
Младший ^
адрес sfile_TEXT класс 'CODE' до 64К
код каждый
sfile
Несколько
sfile
sfile_DATA класс 'DATA' до 64К
sfile A инициализированные данные каждый
DS sfile B sfile
sfile Z
SS Свободная
область
SP(TOS) памяти
^
стек До 64К
Начало SP
динамически До конца
распределя- памяти
емая область v
Свободная
Старший область
адрес v памяти
В следующей таблице сведены различные модели и их сравнение
друг с другом. Модели часто группируются по модели кода или данных на малые (64К) и большие (16М); эти группы соответственно отражены в столбцах и строках таблицы.
Модели tiny, small и compact относятся к малым моделям кода,
поскольку по умолчанию указатели кода являются ближними (near).
Аналогичным образом, модели compact, large huge относятся к большим моделями данных, поскольку по умолчанию указатели на данные
являются дальними (far).
Несколько
sfile
sfile A
CS sfile B
sfile Z
Сегментные регистры: Размер сегмента:
Младший ^
адрес _TEXT класс 'CODE' до 64К
sfile код каждый
DS sfile
_DATA класс 'DATA'
инициализирован. данные
DGROUP до 64К
_BSS класс 'BSS'
не инициализирован.данные
SS Свободная
область
SP(TOS) памяти
^
стек до 64К
Начало SP
динамически До конца
распределя- памяти
емая область v
Свободная
Старший область
адрес v памяти
CS и DS указывают одновременно только на один sfile.
Сегментные регистры: Размер сегмента:
Младший ^
адрес _TEXT класс 'CODE' до 64К
sfile код каждый
DS,SS sfile
_DATA класс 'DATA'
Несколько инициализирован. данные
sfile
_BSS класс 'BSS'
CS sfile A не инициализирован.данные до 64К
sfile B
динамически распределяе-
sfile Z мая область памяти
v
DGROUP Свободная
область
SP(TOS) памяти
^
стек
Начало SP
дальняя
динамически До конца
распределя- памяти
емая область v
Свободная
Старший область
адрес v памяти
CS указывает одновременно только на один sfile.
Сегментные регистры: Размер сегмента:
Младший ^ CS
адрес _TEXT класс 'CODE'
код до 64К
DS,SS
_DATA класс 'DATA'
инициализированные данные
_BSS класс 'BSS'
DGROUP не инициализирован.данные до 64К
динамически
распределя-
емая об-
ласть памя-
ти v
Свободная
область
SP(TOS) - памяти
^
стек
Начало SP
дальняя
динамически До конца
распределя- памяти
емая область v
Свободная
Старший область
адрес v памяти
Сегментные регистры: Размер сегмента:
Младший ^ CS,DS,SS
адрес _TEXT класс 'CODE'
код
_DATA класс 'DATA'
инициализированные данные
_BSS класс 'BSS'
DGROUP не инициализирован.данные до 64К
динамически
распределя-
емая область v
Свободная
область
SP(TOS) памяти
^
Старший стек
адрес v Начало SP
Память микропроцессора Intel 80x86 имеет сегментированную
архитектуру. Непосредственно можно адресоваться к 64К памяти сегменту. Процессор 80x86 отслеживает 4 различных сегмента: сегмент кода, сегмент данных, сегмент стека и дополнительный сегмент. В сегменте кода находятся машинные инструкции, а в дополнительном сегменте - дополнительные данные. Процессор 80x86 имеет 4
16-разрядных сегмента (по одному на сегмент) - CS, DS, SS и ES,
которые указывают на сегмент кода, данных, стека и дополнительный
сегмент соответственно. Сегмент может находиться в любом месте
памяти, но начинаться должен по адресу, кратному 10. Сегменты могут перекрываться. Например, все четыре сегмента могут начинаться
с одного адреса.
Стандартная запись адреса имеет форму "сегмент:смещение",
например, 2F84:0546. Начальный адрес сегмента всегда представляет
собой 20-битовое число, но так как сегментный регистр содержит
только 16 бит, нижние 4 бита полагаются равными 0. Это значит,
что сегменты могут начинаться только с тех адресов, у которых
последние 4 бита равны 0.
| CS | Сегментный регистр кода |
| DS | Сегментный регистр данных |
| SS | Указатель сегмента стека |
| ES | Дополнительный регистр сегмента |
В разделе системной информации файла регистрации показывается режим и версия Windows, под которой выполняется ваша программа. Показывается также следующее:
информация процессора:
наибольший свободный блок памяти;
общее пространство линейной памяти;
свободное пространство линейной памяти;
страницы свопинга файлов.
Реализует массив объектов типа T, используя в качестве основы реализации вектор. Для управления памятью используется TStandardAllocator.
Реализует объект итератора для перебора объектов TArrayAsVector. Элементы см. в TMArrayAsVectorIterator.
Реализует множество объектов типа T, используя в качестве
основы реализации вектор. Для управления памятью используется
TStandardAllocator. Элементы описываются в TMBagAsVector.
Реализует несбалансированное двоичное дерево. Класс T должен
иметь операции < и == и заданный по умолчанию конструктор.
Реализует итератор, выполняющий перебор по всем объектам
TBinarySearchTreeImp.
Реализует счетный вектор объектов типа T. Предполагается,
что T имеет операцию копирования и используемый по умолчанию
конструктор.
Реализует итератор вектора, работающий с непосредственным
счетным вектором объектов типа T. Функции-элементы см. в TMCVectorIteratorImp.
Стандартная ассоциация (непосредственный ключ, непосредственное значение). Реализует ассоциацию, связывая непосредственный ключ K с непосредственным (прямым) значением L. Предполагается, что K имеет функцию-элемент HashValue, или что существует
глобальная функция со следующим прототипом:
unsigned HashValue( K & );
K должно также иметь допустимую операцию ==. Элементы см. в
TMDDAssociation.
Реализует управляемую ассоциацию, связывая косвенный ключ K
с косвенным значением L. Предполагается, что K имеет функцию-элемент HashValue, или что существует глобальная функция со следующим прототипом:
unsigned HashValue( K & );
K должно также иметь допустимую операцию ==. Класс A представляет администратор хранения, заданный пользователем.
Реализует управляемую двунаправленную очередь косвенных объектов T, используя в качестве основы реализации двусвязанный список, а в качестве администратора памяти - TStandardAllocator.
Элементы см. в TMDequeAsDoubleList.
Для управляемой двунаправленной очереди на основе двусвязанного списка реализует итератор объектов.
Для управляемой двунаправленной очереди на основе двусвязанного списка реализует итератор объектов.
Реализует управляемую двунаправленную очередь объектов T,
используя в качестве основы реализации вектор. Для управления
памятью используется TStandardAllocator. Элементы см. в TMDequeAsVector.
Для управляемой двунаправленной очереди на основе вектора
реализует итератор объектов. Элементы см. в TMDequeAsVectorIterator.
Реализует ассоциацию, связывая непосредственный ключ K с непосредственным (прямым) значением L. Предполагается, что K имеет
функцию-элемент HashValue, или что существует глобальная функция
со следующим прототипом:
unsigned HashValue( K & );
K должно также иметь допустимую операцию ==. Элементы см. в
TMDIAssociation.
Упрощенное имя для TIDictionaryAsHashTable. Функции-элементы
см. в TIDictionaryAsHashTable.
Используя в качестве основы хеш-таблицу и стандартное средство распределения TStandardAllocator, реализует словарь объектов T. Подразумевается, что T - это один из четырех ассоциативных типов, который имеет используемый по умолчанию конструктор и операцию ==. Функции-элементы см. в TMDictionaryAsHashTable.
Реализует итератор, который выполняет перебор по объектам
TDictionaryAsHashTable, используя стандартное средство распределения памяти TStandardAllocator.
Упрощенное имя для TDictionaryAsHashTableIterator. Функции-элементы см. в TDictionaryAsHashTableIterator.
Реализует управляемый двусвязанный список объектов типа T,
используя для управления памятью TStandardAllocator. Предполагается, что T имеет операцию копирования и заданный по умолчанию конструктор.
Реализует итератор двусвязанного списка. Этот итератор работает с непосредственными двунаправленными списками. Функции-элементы см. в TMDoubleListIteratorImp.
Используя заданный распределитель памяти TStandardAllocator,
реализует управляемую хеш-таблицу объектов типа T. Предполагается, что T имеет операцию копирования и заданный по умолчанию конструктор.
Реализует итератор для перебора контейнеров THashTableImp.
Функции-элементы см. в TMHashTableIteratorImp.
Реализует косвенный массив объектов типа T, используя в качестве основы реализации вектор. Для управления памятью используется TStandardAllocator. Элементы см. в TMIArrayAsVector.
Реализует объект итератора для перебора объектов TIArrayAsVector. Для управления памятью использует TSrandarsAllocator.
Элементы и операции см. в TMIArrayAsVectorIterator.
Реализует множество объектов типа T, используя в качестве
основы реализации вектор. Для управления памятью используется
TStandardAllocator. Элементы описываются в TMIBagAsVector.
Реализует итератор объекта для перебора объектов TIBagAsVector. Для управления памятью используется TStandardAllocator. Элементы описываются в TMBagAsVector. Элементы описываются в TMArrayAsVectorIterator.
Реализует косвенное несбалансированное двоичное дерево.
Класс T должен иметь операции < и == и заданный по умолчанию
конструктор.
Реализует итератор, выполняющий перебор по всем объектам
TIBinarySearchTreeImp.
Реализует счетный вектор указателей на объекты типа T. Предполагается, что указатели всегда имеют операцию копирования, поэтому данный класс может работать с любым типом объектов.
Реализует итератор вектора, работающий с косвенным счетным
вектором объектов типа T. Функции-элементы см. в TMIVectorIteratorImp.
Реализует ассоциацию, связывая косвенный ключ K с косвенным
значением L. Предполагается, что K имеет функцию-элемент HashValue, или что существует глобальная функция со следующим прототипом:
unsigned HashValue( K & );
K должно также иметь допустимую операцию ==. Элементы см. в
TMDIAssociation.
| Constructor | Строит объект, который связывает объект ключа с объектом значения. |
Реализует косвенную двунаправленную очередь объектов T, используя в качестве основы реализации двусвязанный список. Элемента см. в TMDoubleListIteratorImp.
Реализует двунаправленную очередь косвенных объектов T, используя в качестве основы реализации вектор. Элементы см. в TMIDequeAsVector.
Используя в качестве основы хеш-таблицу и стандартное распределение TStandardAllocator, реализует косвенный словарь. Подразумевается, что T - это один из четырех ассоциативных типов.
Функции-элементы см. в TMIDictionaryAsHashTable.
Реализует итератор, который выполняет перебор по объектам
TIDictionaryAsHashTable, используя заданное пользователем средство распределения памяти. Функции-элементы см. в TMIDictionaryAsHashTable.
Реализует двусвязанный список указателей на объекты типа T,
используя для управления памятью TStandardAllocator. Обрабатывает
любые типы объектов.
Реализует итератор двусвязанного списка. Этот итератор работает с любыми косвенными двунаправленными списками. Функции-элементы см. в TMIDoubleListIteratorImp.
Используя стандартные распределитель памяти TStandardAllocator, реализует хеш-таблицу указателей на объекты типа T. Функции-элементы см. в TMIHashTableImp.
Используя системный распределитель памяти TStandardAllocator, реализует итератор объектов для перебора контейнеров TIHashTableImp. Функции-элементы см. TMIHashTableIteratorImp.
Реализует управляемую ассоциацию, связывая косвенный ключ K
с косвенным значением L. Предполагается, что K имеет функцию-элемент HashValue, или что существует глобальная функция со следующим прототипом:
unsigned HashValue( K & );
K должно также иметь допустимую операцию ==. Элементы см. в
TMIIAssociation.
Реализует список указателей на объекты типа T. Так как указатели всегда имеют операцию копирования, этот класс может обрабатывать любой тип объектов. Функции-элементы см. в TMListImp.
Реализует итератор списка, работающий с любым косвенным управляемым списком. Функции-элементы см. в TMListIteratorImp.
Реализует косвенную очередь объектов типа T, используя в качестве основы реализации двусвязанный список. Функции-элементы см. в TMIDequeueDoubleList.
Реализует очередь из указателей на объекты типа T, используя
в качестве основы реализации вектор.
Реализует итератор для косвенных очередей, построенных на
основе списка. Функции-элементы см. в TMDequeueAsVectorIterator.
Реализует косвенный отсортированный массив объектов типа T,
используя в качестве основы реализации вектор. Функции-элементы
см. в TMIArrayAsVector.
Реализует объект итератора для перебора объектов TISArrayAsVector. Элементы и операции см. в TMArrayAsVectorIterator.
Реализует отсортированный двусвязанный список указателей на
объекты типа T, используя для управления памятью TStandardAllocator. Обрабатывает любые типы объектов. Наследует функции-элементы
TMIDoubleListImp.
Реализует итератор двусвязанного списка. Этот итератор работает с любыми косвенными отсортированными двунаправленными списками. Функции-элементы см. в TMIDoubleListIteratorImp.
Реализует очередь указателей на объекты типа T, используя в
качестве основы реализации вектор. Для управления памятью используется TStandsardAllocator. См. также функции-элементы в TMIBagAsVector.
Реализует итератор для перебора объектов TISetAsVector.
Функции-элементы см. в TMIArrayAsVectorIterator.
Реализует отсортированный список указателей на объекты типа
T. Так как указатели всегда имеют операцию копирования, этот
класс может обрабатывать любой тип объектов. Функции-элементы см.
в TMISListImp.
Реализует управляемый стек указателей на объекты типа T, используя в качестве основы реализации список. Функции-элементы см.
в TMIStackAsVector.
Реализует итератор для управляемых стеков, построенных на
основе вектора. Функции-элементы см. в TMIVectorIteratorImp.
Реализует косвенный стек указателей на объекты типа T, используя в качестве основы реализации вектор. Функции-элементы см.
в TMIVectorIteratorImp.
Реализует итератор для косвенных стеков, построенных на основе вектора. Функции-элементы см. в TMVectorIteratorImp.
Реализует отсортированный вектор указателей на объекты типа
T. Предполагается, что указатели всегда имеют операцию копирования, поэтому данный класс может работать с любым типом объектов.
Реализует итератор вектора, работающий с косвенным управляемым и отсортированным вектором объектов типа T. Функции-элементы
см. в TMIVectorIteratorImp.
Реализует вектор указателей на объекты типа T. Указатели
всегда имеют операцию копирования, поэтому данный класс может работать с любым типом объектов. Функции-элементы могут работать с
TMIVectorImp.
Реализует итератор вектора, работающий с косвенным управляемым вектором объектов типа T. Функции-элементы см. в TMIVectorIteratorImp.
Реализует итератор списка, работающий с непосредственным
управляемым списком. Функции-элементы см. в TMListIteratorImp.
Реализует объект итератора для перебора объектов TMArrayAsVector.
Реализует управляемый массив объектов типа T, использующий в
качестве основы вектор. Для типа T требуется операция ==.
Реализует управляемое мультимножество объектов T, используя
в качестве основы реализации вектор. В отличие от множеств, мультимножества могут содержать дублируемые объекты.
Реализует итератор объекта для перебора объектов TMBagAsVector. Элементы см. в TMArrayAsVectorIterator.
Реализует итератор объекта для перебора объектов TBagAsVector. Для управления памятью используется TStandardAllocator. Элементы описываются в TMArrayAsVectorIterator.
Реализует управляемый счетный вектор объектов типа T. Предполагается, что T имеет операцию копирования и используемый по
умолчанию конструктор. Кроме перечисленных элементов данных они
также наследуются из TMVectorImp.
Реализует итератор вектора, работающий с непосредственным
управляемым и счетным вектором объектов типа T. Функции-элементы
см. в TMVectorIteratorImp.
Реализует управляемую ассоциацию, связывая непосредственный
ключ K с непосредственным (прямым) значением L. Предполагается,
что K имеет функцию-элемент HashValue, или что существует глобальная функция со следующим прототипом:
unsigned HashValue( K & );
K должно также иметь допустимую операцию ==. Класс A представляет администратор хранения, заданный пользователем.
Реализует управляемую двунаправленную очередь объектов T,
используя в качестве основы реализации двусвязанный список.
Для управляемой двунаправленной очереди на основе двусвязанного списка реализует итератор объектов. Элементы см. в TMDoubleListIteratorImp.
Реализует управляемую двунаправленную очередь объектов T,
используя в качестве основы реализации вектор.
Для управляемой двунаправленной очереди на основе вектора
реализует итератор объектов.
Используя в качестве основы хеш-таблицу и заданное пользователем распределение A реализует управляемый словарь. Подразумевается, что T - это один из четырех ассоциативных типов, который имеет используемый по умолчанию конструктор и операцию ==.
Реализует итератор, который выполняет перебор по объектам
TMDictionaryAsHashTable, используя заданный пользователем механизм распределения A.
Определяет узлы для двусвязанного списка TMDoubleListImp и TMIDoubleListImp.
Реализует управляемый двусвязанный список объектов типа T.
Предполагается, что T имеет операцию == и заданный по умолчанию
конструктор.
Реализует итератор двусвязанного списка объектов. Этот итератор работает с непосредственными двунаправленными списками. Для косвенных списков см. TMIDoubleListIteratorImp.
Реализует управляемый косвенный массив объектов типа T, используя в качестве основы реализации вектор.
Реализует объект итератора для перебора объектов TMIArrayAsVector. Базируется на TMVectorIteratorImp.
Реализует множество управляемых объектов типа T, используя в
качестве основы реализации вектор.
Реализует итератор объекта для перебора объектов TMIBagAsVector. Элементы описываются в TMArrayAsVectorIterator.
Реализует управляемый счетный вектор указателей на объекты
типа T. Предполагается, что указатели всегда имеют операцию копирования, поэтому данный класс может работать с любым типом объектов.
Реализует итератор вектора, работающий с косвенным управляемым и счетным вектором объектов типа T. Функции-элементы см. в
TMIVectorIteratorImp.
Реализует управляемую ассоциацию, связывая косвенный ключ K
с косвенным значением L. Предполагается, что K имеет функцию-элемент HashValue, или что существует глобальная функция со следующим прототипом:
unsigned HashValue( K & );
K должно также иметь допустимую операцию ==. Класс A представляет администратор хранения, заданный пользователем.
Реализует управляемую двунаправленную очередь косвенных объектов T, используя в качестве основы реализации двусвязанный список.