![]() |
AW: RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1
Zitat:
Also bei dem Frame der nicht funktioniert anschauen in welcher RegGroup der bei registerClass landet und mit welchem Hash. Dann im Findclass schauen welcher Hash zum suchen erzeugt wird und das ales vergleichen. Es muss da ein Problem sein und ich könnte nicht ruhig schlafen ohne dem nachzugehen |
AW: RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1
Der DFM-Loader macht selber RegisterClass/UnregisterClass mit allen Typen, die der Compiler im Published der zu ladenden Hauptklasse findet.
Da hätte es eventuell Probleme geben können, aber wenn es auch schon direkt nach der Registrierung knallt ... :gruebel: |
AW: RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1
Ich habe hier ein Projekt mit über 300 Frames in unterschiedlich tiefer Vererbungshierarchie - und das läuft problemlos auch unter Berlin Update 2.
Allerdings hatte ich zwischendurch auch das Problem, daß mir meine Frames beim Einfügen im Designer nicht angezeigt wurden. Abhilfe schaffte ein kleiner Eingriff in die dproj-Datei in der Art, daß die <DCCReference>-Einträge eines Frames zusätzlich zum <Form> folgende Sub-Einträge haben mussten:
Code:
Ich vermute mal, daß diese Frame-bezogenen Einträge beim Neuaufbau der dproj-Datei nicht gesetzt werden.<FormType>dfm</FormType> <DesignClass>TFrame</DesignClass> Ob das jetzt Auswirkungen auf das RegisterClass/FindClass hat, kann ich nicht sagen. |
AW: RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1
Vielen Dank für die vielen Antworten!
Zitat:
Zitat:
Delphi-Quellcode:
ein nil zurückgegeben... .
FClassList.TryGetValue(AClassName, Result);
FClassList ist vom Typ
Delphi-Quellcode:
Hier bin ich dann auch irgendwie mit meinem Latein am Ende :-(
TPersistentClassDictionary = TDictionary<string, TPersistentClass>;
Zitat:
Ich habe nun aber noch eine weitere Sache festgestellt. Angenommen ich habe folgende Struktur:
Code:
Rufe ich folgendes im TMyBaseFrame auf funktiniert alles:
- TMyBaseFrame = class(TFrame) //Basisframe
- TMySpecialFrame = class(TMyBaseFrame) //Von Basisframe abgeleitet
Delphi-Quellcode:
Rufe ich aber beim Programmstart noch einmal FindClass('TMyBaseFrame'); auf, dann findet er die Klasse schon nicht mehr.
initialization
RegisterClass(TMyBaseFrame); FindClass('TMyBaseFrame'); Wenn ich RegisterClass und FindClass im initialization-Abschnitt von TMySpecialFrame aufrufe, dann klappt es nicht mal dort. Arbeitet denn schon jemand mit der neusten Delphiversion mit der Registrierung von Frames? Mir gehen leider so langsam die Ideen aus. Grüße Headbucket |
AW: RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1
Zitat:
Zitat:
|
AW: RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1
Zitat:
Und dann was beim findclass gemacht wird? Wirklich mal komplett da durch debuggen. Ist vielleicht Zeitaufwändig aber immer noch besser als dauernd im Nebel herumzustochern. |
AW: RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1
:wall: :wall: :wall:
Ich habe den Fehler gefunden. Manchmal braucht man wirklich ein paar energische Worte, wie von euch beiden. Denn danach wollte ich das Projekt nochmal komplett neu erstellen. Beim Einfügen der Units wurde dabei 2 mal angemerkt, dass die uses-parts von 2 Units FMX-Units enthielten. Mit dem Hinweis, dass es zu Compiler-Fehlern kommen kann. Wenn ich diese Units durch VCL-Units ersetze, funktioniert nun auch wieder das FindClass ordnungsgemäß. Vielen Dank für eure Geduld. Auf so etwas kann man natürlich nicht kommen, denn sowas sollte natürlich auch erst gar nicht passieren. Grüße Headbucket |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz