![]() |
StringList in eigener Klasse
Hi,
ich habe eine Klasse. z.B.
Delphi-Quellcode:
Wieso knallt mir da immer die exception rein, lesen von Adresse 000000, als wenn de Stringlist nicht createt ist?
type
TMyClass = class private Fsl: THashedStringList; // Links public property sl: THashedStringList read Fsl write Fsl; procedure addSl(content: string); end; procedure addSl(content: string); Begin sl.add(content); end; Nur wenn ich ein Create davor pack, knallt es ebenfalls, das von Adresse xxxxxxx.
Delphi-Quellcode:
procedure addSl(content: string);
Begin sl.create; sl.add(content); end; |
AW: StringList in eigener Klasse
Delphi-Quellcode:
Dieser Fehler kommt hier bestimmt einmal die Woche :zwinker:
sl := THashedStringList.Create;
[edit] P.S.: Wenn Du die Liste schon selbst erzeugst, kannst Du sie auch ReadOnly definieren. Falls Du das nicht willst, solltest Du zumindest einen Setter schreiben, der die übergebene Liste dann mit Assign in Deine eigene kopiert. [/edit] |
AW: StringList in eigener Klasse
Delphi-Quellcode:
-In den Methoden auf die realen Felder zugreifen
type
TMyClass = class private Fsl: THashedStringList; // Links public property sl: THashedStringList read Fsl write Fsl; procedure addSl(content: string); end; procedure addSl(content: string); Begin if Assigned( Fsl) then Fsl.add(content); end; -Vorher überprüfen, ob die Eigenschaft zugewiesen ist |
AW: StringList in eigener Klasse
Zitat:
Also wann hast du die Stringliste erstellt, welche du dort nutzen willst? PS:
Delphi-Quellcode:
wird sehr schnell zu einem Speicherleck fürhen, wenn du nicht auspaßt.
write Fsl;
[edit] wo kommen denn plötzlich die Beiträge her ... huhu? ... blöde RedBox |
AW: StringList in eigener Klasse
Zitat:
Meinte ich natürlich, nur vergessen beim abtippen hinzu zu schreiben :) |
AW: StringList in eigener Klasse
Wird die Liste wirklich jedesmal neu erzeugt, wenn ein Eintrag hinzukommen soll?
|
AW: StringList in eigener Klasse
Delphi-Quellcode:
Wird aber nie durch laufen, da anscheinend ja die StringList nicht existiert für die Klasse.
if Assigned(FslLink_id) then FslLink_id.add('sss');
Wo muss ich die Stringlist erstellen, damit Sie für die ganze Klasse zur Verfügung steht? Im Constructor bringt es nichts |
AW: StringList in eigener Klasse
Delphi-Quellcode:
procedure addSl(content: string);
Begin if not Assigned( Fsl) then Fsl := THashedStringList.Create; Fsl.add(content); end; |
AW: StringList in eigener Klasse
Oder wenn sie in jedem Fall gebraucht wird, im Konstruktor anlegen und im Destruktor wieder freigeben.
|
AW: StringList in eigener Klasse
Da das ja keine interne Liste ist, sondern extern zugewisen werden kann, kann man sich so einen schönen Leak basteln
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 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