Найти классы, зарегистрированные классом формыDelphi , Компоненты и Классы , КлассыНайти классы, зарегистрированные классом формы
Оформил: DeeCo type PFieldClassTable = ^TFieldClassTable; TFieldClassTable = packed record Count: Smallint; Classes: array[0..8191] of ^TPersistentClass; end; function GetFieldClassTable(AClass: TClass): PFieldClassTable; assembler; asm MOV EAX,[EAX].vmtFieldTable OR EAX,EAX JE @@1 MOV EAX,[EAX+2].Integer @@1: end; procedure TForm1.Button1Click(Sender: TObject); procedure Display(const S: string); begin memo1.Lines.Add(S); end; var pFCT: PFieldClassTable; aClass: TClass; i: SmallInt; begin memo1.Clear; aClass := Classtype; while aClass <> TPersistent do begin Display('Registered classes for class ' + aClass.ClassName); pFCT := GetFieldClasstable(aClass); if not Assigned(pFCT) then Display(' No classes registered') else begin Display(Format(' %d classes registered', [pFCT^.Count])); for i := 0 to pFCT^.Count - 1 do Display(' ' + pFCT^.Classes[i]^.ClassName); end; aClass := aClass.ClassParent; end end; Программа на Delphi, которая ищет все классы, зарегистрированные другим классом (родительским классом). Цель программы - отобразить все классы, зарегистрированные для каждого родительского класса. Описание работы программы:
В статье описывается способ нахождения классов, зарегистрированных в классе формы Delphi, с помощью функции GetFieldClassTable и цикла поиска родительских классов. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |