Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MemoBox bzw. Textdatei im Speicher verwalten (https://www.delphipraxis.net/117553-memobox-bzw-textdatei-im-speicher-verwalten.html)

mkinzler 21. Jul 2008 12:54

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Zitat:

[OT]Warum deklarieren hier alle etwas besseren Delphi-Programmierer eine StringListe nur als TStrings? Bringt das was oder ist das wirklich einfach nur kürzer? Mr. Green [/OT]
TStrings ist der abstrakte Vorgänger von TStringList.

Diamondback2007 21. Jul 2008 13:02

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Zitat:

Zitat von mkinzler
Zitat:

[OT]Warum deklarieren hier alle etwas besseren Delphi-Programmierer eine StringListe nur als TStrings? Bringt das was oder ist das wirklich einfach nur kürzer? Mr. Green [/OT]
TStrings ist der abstrakte Vorgänger von TStringList.

Ich weiß, aber was macht es für einen Sinn bei der Deklaration nicht auch schon den Nachfolger zu deklarieren?
Im Moment sehe ich nur den Sinn, dass TStrings einfach weniger zu schreiben ist. ;) Klärt mich auf wenn ich falsch liege. :)

DeddyH 21. Jul 2008 13:34

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Z.B. TMemo.Lines sind als TStrings deklariert und nicht als TStringList. Deklarierst Du also einen Übergabeparameter als TStringlist, kannst Du TMemo.Lines nicht mehr übergeben, so einfach ist das ;)

p80286 21. Jul 2008 13:47

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Hallo,

da muß ich nun doch wiedersprechen.
Delphi-Quellcode:
var
  ll : tstrings;
begin
  ll:=tstringlist.Create;
  ll.add('einms');
  ll.add('zwei');
  ll.add('dreir');
  ll.add('vier');
  ll.add('fünf');
  ll.sort;        {---- das geht nicht!}
  ll.Free;
end;
Wenn man die StringList sortieren will, oder sonst etwas nutzen will was in TStrings enthalten ist, dann knallt's.
Und die Übergabe geht über .Text ganz gut.

Gruß
K-H

DeddyH 21. Jul 2008 13:50

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Und was willst Du damit zum Ausdruck bringen (vor allem, wem widersprichst Du denn da nun)?

nat 21. Jul 2008 14:07

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Zitat:

Zitat von p80286
Hallo,

da muß ich nun doch wiedersprechen.
Delphi-Quellcode:
var
  ll : tstrings;
begin
  ll:=tstringlist.Create;
  ll.add('einms');
  ll.add('zwei');
  ll.add('dreir');
  ll.add('vier');
  ll.add('fünf');
  ll.sort;        {---- das geht nicht!}
  ll.Free;
end;
Wenn man die StringList sortieren will, oder sonst etwas nutzen will was in TStrings enthalten ist, dann knallt's.
Und die Übergabe geht über .Text ganz gut.

Gruß
K-H

über
Delphi-Quellcode:
TStringList(l1).sort;
würde das dann auch wieder gehen :)

DeddyH 21. Jul 2008 14:13

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Ist zwar in diesem Fall wurscht, aber IMO wäre es besser mit
Delphi-Quellcode:
(ll as TStringList).sort;

p80286 21. Jul 2008 14:30

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Hallo

ich hatte den Eindruck, das sich Kuba mit den Stringlisten ein wenig schwer tut, und dann ist eine eine solche Konstruktion meiner Meinung nach nicht das wahre:

Delphi-Quellcode:
var
  sl : TStrings;

  sl:=TStringlist.create;
Wenn dann irgendwo hinten im Code eine Methode oder eine Eigenschaft von TStringlist genutzt wird, ist Hängen im Schacht. Wenn man nur die Methoden und Eigenschaften von TStrings benötigt, und man ist sich dessen bewusst, ist dies ein gangbarer Weg. Aber dann sollte man nicht von Stringlisten sondern von "deabstrahiertem" (oder wie ach immer das heißt) TStrings sprechen.

Und daß
Delphi-Quellcode:
 
  TStringlist(ll).sort
funktioniert, wußte ich nicht.

Typecasting mit Klassen eröffnet ganz neue Möglichkeiten.

Gruß
K-H

mkinzler 21. Jul 2008 14:34

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Der harte Cast sollte aber, wie Detlef schon erwähnt hat, durch eine Softcast ersetzt werden.
Die Verwendung des abtrakten Vorgängers bei der Variablendeklaration hat weiterhin den Vorteil, dass man später die implementierende lasse einfacher ändern kann. Deshalb wird innerhalb der VCL auch immer TStrings als Typ verwendet.

nat 21. Jul 2008 14:43

Re: MemoBox bzw. Textdatei im Speicher verwalten
 
Zitat:

Zitat von mkinzler
Der harte Cast sollte aber, wie Detlef schon erwähnt hat, durch eine Softcast ersetzt werden.
Die Verwendung des abtrakten Vorgängers bei der Variablendeklaration hat weiterhin den Vorteil, dass man später die implementierende lasse einfacher ändern kann. Deshalb wird innerhalb der VCL auch immer TStrings als Typ verwendet.

warum?
in diesem fall weiß ich doch 100%ig von welchem typ mein objekt ist und, dass ich das garantiert zu TStringList casten kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz