AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DFM-Speicherprobleme

Ein Thema von himitsu · begonnen am 18. Aug 2017
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#1

DFM-Speicherprobleme

  Alt 18. Aug 2017, 15:59
Moin, ich hab da ein kleines Problemchen mit DFMs.

Bei einer Klasse TReader.ReadComponent/TWriter.WriteComponent speichert manchmal keine Events.
Delphi-Quellcode:
published
  procedure miTestClick(Sender: TObject);
Beides sind normale Published-EventMethoden, aber Adresse-zu-Name wird nicht aufgelöst.
TObject.MethodName liefert einen Leerstring.

Rausgefunden hab ich jetzt, dass MethodAddress eine andere Adresse liefert, als die Code-Adresse in der EventVariable.
Mit einer "falschen" Adresse kann natürlich kein Name geliefert werden, aber die Adresse ist richtig, denn das Event kann ja aufgerufen werden. (Button.OnClick)
Und die betroffene Komponente liegt in einem anderem Laufzeitpackage.

Das Einzige, was ich mir da erklären könnte, dass dord die Code-Realocation vergessen wurde, aber eigenartig wäre dann, dass dieser "vermeintliche" Fehler dann seit Jahrzehnten noch keinem aufgefallen wäre.
> Delphi XE

Frame.miTest > $03CB27D0 | $10E3C590 $0DC43674 > ""
miTemplateClick > $0DC45930 | $0EBBB800 $0DC45930 > "miTemplateClick"

TestCode:
Delphi-Quellcode:
var X: TNotifyEvent;

X := Frame.miTestClick;
ShowMessage('Frame.miTestClick > '    + Format('$%p | $%p $%p > "%s"', [Frame.MethodAddress('miTestClick'),
  TMethod(X).Data, TMethod(X).Code, Frame.MethodName(TMethod(X).Code)]));

X := Self.miTemplateClick;
ShowMessage('miTemplateClick > ' + Format('$%p | $%p $%p > "%s"', [Self.MethodAddress('miTemplateClick'),
  TMethod(X).Data, TMethod(X).Code, Self.MethodName(TMethod(X).Code)]));
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz