Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Erweitern einer vorahandenen Property in einer VCL Komponente

  Alt 25. Jul 2017, 10:39
Habs getestet und macht was es soll. Gibts da noch was zu beachten oder passt der Code so?
Delphi-Quellcode:
function tmarkerhelper.getAddressGGUID : string;
begin
  AddressGGUIDDictionary.TryGetValue(self,result);
end;
Dein Rückgabewert ist nicht initialisiert. (eigentlich doch, da String ein Managed-Type ist, aber nicht in Bezug auf diese Function)
Sowas macht Spaß, wenn getAddressGGUID z.B. in einer For-Schleife aufgerufen wird.
Delphi-Quellcode:
if not AddressGGUIDDictionary.TryGetValue(self,result) then
  Result := '';
Du hast ein Speicherleck bei AddressGGUIDDictionary. Die Liste wird nicht freigegeben.
Ich weiß nicht ob Class-Constructor und Class-Destructor bei Class-Helpern möglich sind, aber es gibt ja noch Initialization und Finalization der Unit.

Wenn TMarker von TComponent abgeleitet ist, dann könnte man noch Delphi-Referenz durchsuchenTComponent.FreeNotification verwenden, um automatisch die GUID zu löschen, wenn der TMarker freigegeben wird.
https://stackoverflow.com/questions/...has-been-freed
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Jul 2017 um 10:41 Uhr) Grund: :sleep:
  Mit Zitat antworten Zitat