![]() |
TStringList als Property
hallo erst mal
Ich arbeite an einer neuen komponente. Ich wollte eine TStringList zu den Propertys hinzufügen. Aber immer wenn ich auf dieses property zugreifen will Sagt er mir das er ein Read error hat. Ich habe keine ahnung woran es liegt. ich habe diesen fehler jetzt schon drei tage und er will sich nicht auflösen. |
Re: TStringList als Property
Glaskugel auspack: Du solltest die Stringliste in deiner Komponente auch anlegen
Delphi-Quellcode:
type
TMyType = class(TPersistent) private FMyStringList: TStrings; public constructor Create(Owner: TObject); MyStringList: TStrings read FMyStringList write SetMyStringList; end; constructor TMyType.Create(Owner: TObject); begin inherited FMyStringList := TStringList.Create; end; procedure SetMyStringList(Value: TStrings); begin FMyStringList.Assign(Value); end; |
Re: TStringList als Property
@Bernhard Geyer: Willst du nicht lieber das "property" Schlüsselwort verwenden? Und vielleicht den Member auch wieder freigeben?
|
Re: TStringList als Property
ich habe die stringliste declariert ind auch gecreatet funct aber trotzdem nicht
|
Re: TStringList als Property
Wie versuchst du darauf zuzugreifen?
|
Re: TStringList als Property
Zitat:
Wenn man Abends sich nebenbei mit Word und Einladungskarten herumärgern muss :twisted: Zitat:
|
Re: TStringList als Property
Meine Glaskugel sagt
count=0 Gruß K-H |
Re: TStringList als Property
Zitat:
Gruss Kh |
Re: TStringList als Property
Ohne das jetzt ausprobiert zu haben: genügt nicht eine ReadOnly-Property, da man die Instanz ja nicht verändern möchte, sondern nur ihre Methoden aufrufen?
Delphi-Quellcode:
Nur dahergetippt, daher ohne Gewähr.
type
TMyType = class(TPersistent) private FMyStringList: TStrings; public constructor Create(Owner: TComponent);override; destructor Destroy;override; property MyStringList: TStrings read FMyStringList; end; constructor TMyType.Create(Owner: TComponent); begin inherited; FMyStringList := TStringList.Create; end; destructor TMyType.Destroy; begin FMyStringList.Free; inherited; end; |
Re: TStringList als Property
Zitat:
/EDIT: nicht ohne weiteres. Es gibt die Möglichkeit mit Rechtsklick auf dem OI alle r/o Properties mit anzuzeigen. - Er hat extra einen Setter geschrieben, damit er intern Assign() aufruft, was der vollkommen korrekte Weg wäre und diese Property auch Komponententauglich/Objektinspektor-tauglich zu machen. - Grundsätzlich hast du Recht, es würde reichen, aber mit einem Setter und Assign() würde auch sowas möglich werden:
Delphi-Quellcode:
Bei deiner Lösung ohne Setter müsste man immer
MyType.MyStringList := ListBox1.Items;
Delphi-Quellcode:
nutzen. Im Endeffekt der gleiche Code, nur beim zweiten muss das auch der x. Anwender von TMyType dieses Wissen haben. Ersteres klappt nach Plug'n'Pray Methoden und verhält sich gleich zur VCL.
MyType.MyStringList.Assign(ListBox1.Items);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:27 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