Delphi-Quellcode:
var Adresslist: TStringlist;
Adresslist.Add(xxxx);
Adresslist.Add(xxxx);
Adresslist.Add(xxxx);
Adresslist.Add(xxxx);
Ist klar, es werden 4 Instanzen von irgendwas unter AddressList
Das ist definitiv immer die gleiche Instanz und auch immer die gleiche Add-Methode.
In einem With-Konstrukt würde ich das allerdings so schhreiben:
Delphi-Quellcode:
with Adresslist do begin
Add(xxxx);
Add(xxxx);
Add(xxxx);
Add(xxxx);
end;
Entspricht dem gleichen wie in Beispiel 1.
Nach dem Angetroffenen Konstrukt ginge dies offenbar aber auch so:
Delphi-Quellcode:
with Adresslist.Add do begin
y:=xxxx;
y:=xxxx;
fy:=xxxx;
dy:=xxxx;
end;
Ist aber eben nur 1 Instanz von Irgendwas, wo jetzt werte für die Eigenschaften y, y, fy und dy zugewiesen werden
Die Frage ist also, was liefert die Methode Add überhaupt zurück?
Denn ich könnte ja folgendes im Sourcecode von TAddresslist schreiben:
Delphi-Quellcode:
function TAdressList.Add(Name: string): integer;
var
Adress: TAdress;
begin
Adress: TAdress.create;
Adress.Name:=Name;
self.Add(Adress);
Result:=self.Count-1;
end;
Jetzt kannst du als AdressList.Add('Willi') ausführen,
aber
With AddressList.Add do
Name:='Willi'
hagelt es eine
Exception.
Würde da aber stehen:
Delphi-Quellcode:
function TAdressList.Add(Name: string): TAdress;
var
Adress: TAdress;
begin
Adress: TAdress.create;
Adress.Name:=Name;
self.Add(Adress);
Result:=Adress;
end;
dann könnte man so oder so arbeiten.
Entscheidet ist aber immer noch dass jedes Add eine neue Instanz erzeugt.
Delphi-Quellcode:
AdressList.Add('Willi');
AdressList.Add('Willi');
AdressList.Add('Willi');
AdressList.Add('Willi');
Erzeugt 4 Adresseinträge die alle Willi heißen
Aber
Delphi-Quellcode:
with AdressList.Add do
begin
Name:='Willi';
Name:='Willi';
Name:='Willi';
Name:='Willi';
end;
Erzeugt 1 Adresseinttrag der Willi heißt.
Es ist also entscheidend die Methode Add aussieht.
Möglicherweise habe ich auch die Frage falsch verstanden.