Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wirkliche Unterschiede?? (https://www.delphipraxis.net/192494-wirkliche-unterschiede.html)

Delbor 24. Apr 2017 13:27

AW: Wirkliche Unterschiede??
 
Hi zusammen
@DeddyH:
Zitat:

Das hat doch nichts mit Liste oder Collection zu tun, sondern rein damit, wie der Rückgabewert (im Bezug auf den Datentyp) der Add-Methode deklariert ist.
Tja, wenn ich das jetzt richtig verstanden habe, hat Hobbycoder gezeigt, wie auch eine TStringlist.Add-Methode ein Object zurüchgeben kann.

Gruss
Delbor

bra 24. Apr 2017 13:32

AW: Wirkliche Unterschiede??
 
Ist eine TStringList vielleicht auch eine Liste? :wink:

DeddyH 24. Apr 2017 13:33

AW: Wirkliche Unterschiede??
 
Zitat:

Zitat von Delbor (Beitrag 1368874)
Tja, wenn ich das jetzt richtig verstanden habe, hat Hobbycoder gezeigt, wie auch eine TStringlist.Add-Methode ein Object zurüchgeben kann.

Wo?

Hobbycoder 24. Apr 2017 14:06

AW: Wirkliche Unterschiede??
 
Zitat:

Zitat von DeddyH (Beitrag 1368870)
Das hat doch nichts mit Liste oder Collection zu tun, sondern rein damit, wie der Rückgabewert (im Bezug auf den Datentyp) der Add-Methode deklariert ist.

Das war es, was ich damit klar machen wollte.

Zitat:

Zitat von Delbor (Beitrag 1368874)
Hi zusammen
@DeddyH:
Zitat:

Das hat doch nichts mit Liste oder Collection zu tun, sondern rein damit, wie der Rückgabewert (im Bezug auf den Datentyp) der Add-Methode deklariert ist.
Tja, wenn ich das jetzt richtig verstanden habe, hat Hobbycoder gezeigt, wie auch eine TStringlist.Add-Methode ein Object zurüchgeben kann.

Gruss
Delbor

Wenn die Add-Methode der Klasse TStringList dieses unterstützen würde, sicher. Tut sie aber nicht, sie liefert einen Integer. Hab ich auch nie irgendwo geschrieben.

Delbor 24. Apr 2017 14:24

AW: Wirkliche Unterschiede??
 
Hi DeddyH

Zitat:

Wo?
Hier:
Delphi-Quellcode:
function TAdressList.Add(Name: string): TAdress;
var
  Adress: TAdress;
begin
  Adress: TAdress.create;
  Adress.Name:=Name;
  self.Add(Adress);
  Result:=Adress;
end;
@Hobbycoder:
Zitat:

Wenn die Add-Methode der Klasse TStringList dieses unterstützen würde, sicher. Tut sie aber nicht, sie liefert einen Integer. Hab ich auch nie irgendwo geschrieben.
Was machst du denn anderes, als die von TStringlist geerbte Add-Methode in TAdresslist zu überschreiben?
Okay, das müsste anders formuliert sein:
Zitat:

wie auch eine TStringlist.Add-Methode ein Object zurüchgeben kann.
Stattdessen müsste es wohl heissen:
Zitat:

wie auch in einem TStringlist-Nachkomme eineAdd-Methode ein Object zurüchgeben kann.

Gruss
Delbor

DeddyH 24. Apr 2017 14:28

AW: Wirkliche Unterschiede??
 
Wer sagt denn, dass die TAddressList von TStringList abstammt?

Delbor 24. Apr 2017 15:07

AW: Wirkliche Unterschiede??
 
Hi DeddyH
Zitat:

Wer sagt denn, dass die TAddressList von TStringList abstammt?
Ich, in Antwort 15:

Delphi-Quellcode:
var Adresslist: TStringlist;

Adresslist.Add(xxxx);
Adresslist.Add(xxxx);
Adresslist.Add(xxxx);
Adresslist.Add(xxxx);
Das ist definitiv immer die gleiche Instanz und auch immer die gleiche Add-Methode.
Okay,hier verwende ich eine lokale Instanz. So aus dem Stegreif heraus (ich bin mir nicht ganz sicher) müsste ich eine eigene Klasse TAddresslist deklarieren und könnte dann in deren Konstruktor die geerbte Add-Methode überschreiben.

Gruss
Delbor

DeddyH 24. Apr 2017 15:26

AW: Wirkliche Unterschiede??
 
Jetzt wirfst Du aber alles durcheinander. Im gesamten Thread war nie von TStringList die Rede, bis Du damit angefangen hast. Die eingangs gezeigten MapRules jedenfalls sind definitiv keine TStrings oder Nachkommen davon.

Delbor 24. Apr 2017 17:22

AW: Wirkliche Unterschiede??
 
Hi DeddyH
Zitat:

Jetzt wirfst Du aber alles durcheinander. Im gesamten Thread war nie von TStringList die Rede, bis Du damit angefangen hast. Die eingangs gezeigten MapRules jedenfalls sind definitiv keine TStrings oder Nachkommen davon.
Bis ungefähr hierhin hatte ich angenommen, dass Maprules eine Liste ist:
Zitat:

Ich ging eigentlich erstmal auch davon aus, dass Add eine Methode von MapRules ist und war deshalb auch erstaunt, dass das Konstrukt
MapRules.Add(PrecMax := 2); nicht funktionierte.
Daher auch meine Vermutung, dass Add eine Klasse mit dem Property PrecMax sein müsste. Aber eben: wer nennt seine Klasse schon 'Add'??
Und mit der Klasse hatte ich gar nicht so unrecht - nur heisst die nicht 'Add', sondern wird von einer Funktion diesen Namens zurückgegeben. Nur war mir das damals noch nicht wirklich klar, wesshalb ich nach wie vor von einer Liste ausging. Zumindest, bis ich einen lange übersehenen Beitrag entdeckte:
Zitat:

hier, guckt doch einfach in die Wiki :p
Ich hatte zwar darauf aufmerksam gemacht, nur hatte ich übersehen, dass der Link nicht mitkopiert wurde.
Später hatte ich dann wegen dieses Links auf TCollection Bezug genommen und Vergleiche mit TStringlist gemacht.

Denn genau diese und ihre Add-Methode waren es ja, die mich veranlasst hatten, diesen Thread zu eröffnen. Und da lag wohl auch mein Hauptfehler: Im Eingangsbeitrag hätte ich schreiben müssen, dass mit dem in Delphi vordefinierten TStringlist.Add der auskommentierte Code hätte funktionieren müssen.

'tschuldigung :(

Ich hoffe, ich konnte den von mir geknüpften gordischen Knoten nun etwas lösen!

Gruss
Delbor

Hobbycoder 24. Apr 2017 17:55

AW: Wirkliche Unterschiede??
 
Alles gut :-)

Manchmal passiert das eben, dass man mehr oder weniger an einander vorbei redet.
Auch ich hatte in deinem Post#15 überlesen, dass du nun das Beispiel auf TStringList geändert hattest.
Ich bin immer von einer TList oder ToBjectList ausgegangen, weil ich mal angenommen habe, dass TMapRules nicht nur eine einfache StringList ist. Und das wiederum deswegen, weil sowas:
Delphi-Quellcode:
      with MapRules.Add do begin
         PrecMax := 19;
         PrecMin := 4;
         SourceDataType := dtFmtBCD;
         TargetDataType := dtCurrency;
       end;
bei einer StringList so überhaupt nicht funktionieren kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 Uhr.
Seite 3 von 4     123 4      

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