Einzelnen Beitrag anzeigen

Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
144 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1

  Alt 11. Jan 2017, 10:25
Vielen Dank schonmal für die Antworten!

Compiliere doch einfach mal mit debug dcu und debugge in den registerclass aufruf hinein.
Sollte Dir den Fehler ja zeigen
Habe ich gemacht. Hier scheint alles i.O. zu sein. RegisterClass sieht ja wie folgt aus:

Delphi-Quellcode:
procedure RegisterClass(AClass: TPersistentClass);
begin
  RegGroups.Lock;
  try
    while not RegGroups.Registered(AClass) do
    begin
      RegGroups.RegisterClass(AClass);
      if AClass = TPersistent then Break;
      AClass := TPersistentClass(AClass.ClassParent);
    end;
  finally
    RegGroups.Unlock;
  end;
end;
Nach dem Aufruf RegisterClass(TMyTestFrame) wird also zunächst TMyTestFrame registriert. Der ClassParent ist TFrame und wird AClass zugewiesen. Danach bricht die Schleife ab.

Vielleicht fehlt ein %CLASSGROUP in der Frame-Unit. Und gibt's da nicht ein FrameworkType o.ä. in der *.dproj?
Das werde ich mir sofort mal anschauen.

Arbeitet ihr mit Laufzeitpackages?
Und wenn ja, wird eure Unit (der Initialization-Abschnitt) auch verwendet/geladen?
Wir verwenden nur statische Packages, welche aber damit gar nichts zu tun haben sollte, da der Fehler ja auch auftritt, wenn ich ein neues Frame erstelle und dieses direkt von TFrame ableite .

Initialization wird in jedem Fall vorher ausgeführt.

Edit: Unter XE8 funktioniert es wie gesagt einwandfrei. Wenn ich das Projekt 1:1 mit Delphi 10.1 öffne, dann funktioniert es nicht. Delphi 10.1 läuft allerdings in einer anderen virtuellen Maschine. Außerdem habe ich das Problem, dass meine Anwendung mit Delphi 10.1 den Look von Windows 2000 hat. Aus diesem Grund habe ich auch die dproj-Datei neu erstellen lassen. Danach war das Aussehen der Anwendung wieder normal. In beiden Fällen funktioniert aber FindClass nicht.

Grüße
Headbucket

Geändert von Headbucket (11. Jan 2017 um 10:37 Uhr)
  Mit Zitat antworten Zitat