Einzelnen Beitrag anzeigen

StepByStep

Registriert seit: 12. Nov 2014
Ort: Schleswig-Holstein
61 Beiträge
 
Delphi 7 Professional
 
#1

Getter-Methode mit Parameter

  Alt 16. Mär 2017, 08:22
Hallo liebe Delphianer,

ich habe eine kleine Frage zu Properties und ihren Getter- und Settermethoden. Selbstverständlich habe ich diese schon mal genutzt und bin mit dem Gebrauch vertraut, doch jetzt stehe ich vor einem Problem, welches ich zuvor noch nicht hatte und ich aus meiner Suche im Internet nicht ganz schlau werde.

Die Ausgangsstellung ist folgende:

Ich habe eine Property die wie folgendermaßen aussieht...

property AsString: string read GetAsString write SetAsString; In der GetAsString-Methode baue ich mir ein XML zusammen, in der SetAsString-Methode parse ich das XML auseinander. diese zwei Methoden sehen wie folgt aus...

Delphi-Quellcode:
function GetAsString: string;
procedure SetAsString(const Value: string);
Nun iteriere ich in der GetAsString-Methode eine Schleife durch, das ist soweit in Ordnung, aber ich möchte gerne das XML so bauen können, dass ich anhand einer TList<Integer> nur für bestimmte Indexstellen eine XML-Zeile schreibe, also dachte ich, dass ich der GetAsString-Methode eine TList<Integer> übergeben könnte. Das hatte ich gegoogelt und bin auf verschiedene Quellen gestoßen, sodass ich folgendes nun hätte, wovon ich nicht ganz sicher bin, ob es korrekt ist:

Delphi-Quellcode:
property AsString[AIndexList: TList<Integer>]: string read GetAsString write SetAsString
function GetAsString(AIndexList: TList<Integer> = nil): string;
procedure SetAsString(const Value: string);
Das wirft aber einen Fehler, es seien inkompatible Typen. Wenn ich lesen kann, dann vermute ich, dass die SetAsString-Methode ebenfalls diesen Array benötigt, richtig? Aber gibt es eine Möglichkeit der AsString-Property die Liste zu übergeben, sodass nur die GetAsString-Methode diese nutzt, weil in der SetAsString-Methode ist sie überflüssig. In der GetAsString-Methode ist diese Liste übrigens nur optional und muss nicht zwangsläufig übergeben werden.

Der Aufruf der Property müsste demnach doch so lauten: .AsString[Liste] ?

Ich bedanke mich im Voraus schon einmal für die Antworten!

Gruß
Jan
Jan
  Mit Zitat antworten Zitat