Выпуск №4.Ведущий рассылки: Пугачёв Сергей.

 E-mail:  w3ser@yandex.ru . Все предыдущие выпуски можно найти по адресу http://w3ser.narod.ru

Сейчас лето и я не имею возможности написать полноценный выпуск, поэтому я выкладываю справочник по полезным функциям для работы с классами. Для использования этих функций необходим модуль Classes . Если Вы что-то не поняли не отчаивайтесь, этот материал пригодится Вам в дальнейшем.

Примечание. TPersistent – этот класс потомок TObject. Почти все стандартные классы (кромего TException, TniFile и TList) его потомки.

 

 

Функция FindClass(const ClassName: string ): TPersistentClass;

Функция определяет тип класса-потомка TPersistent по имени, переданном в параметре ClassName, и возвращает ссылку на него.
Искомый класс должен быть зарегистрирован.
Классы формы и компонентов, объявленные в разделе декларации формы, регистрируются автоматически. Другие классы могут быть зарегистрированы с помощью процедур RegisterClass или RegisterClasses.
Если искомый класс не найден, то функция вызывает исключение EClassNotFound.

Функция GetClass( const ClassName: string ): TPersistentClass;

Функция возвращает ссылку на зарегистрированный класс-потомок TPersistent, имя которого определено в параметре ClassName.
Класс должен быть зарегистрирован до вызова функции.
Классы формы и компонентов, объявленные в разделе декларации формы, регистрируются автоматически. Другие классы могут быть зарегистрированы с помощью процедур RegisterClass или RegisterClasses.
Результат функции может быть использован в функциях или методах, в которых в качестве параметра требуется класс.
Данная функция аналогична функции FindClass за исключением того, что если для указанного имени не найден зарегистрированный класс, то функция GetClass возвращает nil.

Процедура RegisterClass( AClass: TPersistentClass );

Процедура регистрирует класс постоянного объекта потомка TPersistent.
Классы форм и компонентов, объявленные в разделе декларации формы, регистрируются автоматически при загрузке формы. Любые другие классы, используемые в программе, должны быть зарегистрированы с помощью процедуры RegisterClass. Если класс, указанный в параметре AClass уже зарегистрирован, то процедура не производит ни каких действий. Если под именем регистрируемого класса уже зарегистрирован другой класс, то процедура вызывает исключение EFilerError.
Ссылка на зарегистрированный класс может быть получена по имени класса с помощью функций FindClass и GetClass.

Процедура RegisterClassAlias (AClass: TPersistentClass;const Alias: string );

Процедура регистрирует класс, идентичный классу, указанному в параметре AClass, под именем, определенным в параметре Alias. Параметр AClass должен представлять собой класс-потомок TPersistent.

Процедура RegisterClasses( AClasses: array of TPersistentClass );

Процедура регистрирует множество классов.
Вызов данной процедуры заменяет несколько вызовов процедуры RegisterClass, которая за один вызов регистрирует только один класс.

Процедура RegisterIntegerConsts (IntegerType: Pointer;IdentToInt: TIdentToInt;IntToIdent: TIntToIdent );

type

TIdentToInt = function( const Ident: string; var Int: LongInt): Boolean;
TIntToIdent = function( Int: LongInt; var Ident: string): Boolean;

Описание
Процедура регистрирует функции взаимного преобразования целочисленного и строкового типов.
Данные функции используются для преобразования целочисленных значений в их строковое представление и обратно.
Параметр IntegerType должен указывать на информацию о базовом целочисленном типе. Для получения указателя для данного параметра, используйте функцию TypeInfo.

Пример

function EstimToStr( i: LongInt; var S: string): Boolean;
begin

Result:= True;
case i of

1,2: S:= 'неудовлетворительно';
3 : S:= '
удовлетворительно';
4 : S:= '
хорошо';
5 : S:= '
отлично'

else Result:= False;
end;

end;


function StrToEstim( const S: string; var i: LongInt): Boolean;
begin

Result:= True;
if S='
неуд' then i:=2 else

if S='уд' then i:=3 else
  if S='
хор' then i:=4 else
    if S='
отл' then i:=5 else Result:= False;

end;


procedure TForm1.FormCreate( Sender: TObject);
begin

RegisterIntegerConsts( TypeInfo(LongInt), StrToEstim, EstimToStr);

end;


procedure TForm1.Button1Click( Sender: TObject);
var

Number: string;

begin

if EstimToStr( StrToInt(Edit1.text), Number) then

Edit2.text:= Number;

end;

Функция TypeInfo( TypeIdent ): Pointer;

Функция возвращает указатель на информацию о типе, сгенерированную компилятором во время выполнения программы.
Идентификатор типа передается в параметре TypeIdent.
Данная функция используется в качестве параметра в некоторых низкоуровневых VCL процедурах и функциях, в которых требуется передать информацию о типе. Фактический формат информации является внутренним форматом и зависит от версии используемого компилятора.

Процедура UnRegisterClass( AClass: TPersistentClass );

Процедура отменяет регистрацию объектного класса, указанного в параметре AClass.
После отмены регистрации класса, под его именем может быть зарегистрирован другой класс.

Процедура UnRegisterClasses (AClasses: array of TPersistentClass );

Процедура отменяет регистрацию нескольких классов, определенных в массиве AClasses.
После отмены регистрации классов, под их именами могут быть зарегистрированы другие классы.

Процедура UnRegisterModuleClasses( Module: HMODULE );

Процедура отменяет регистрацию всех объектных классов в указанном модуле.
Дескриптор модуля передается в параметре Module.
После отмены регистрации классов, под их именами могут быть зарегистрированы другие классы.

Hosted by uCoz