Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Separierte Stringliste zu String zusammenfügen (https://www.delphipraxis.net/163131-separierte-stringliste-zu-string-zusammenfuegen.html)

frieder2008 16. Sep 2011 12:25

Separierte Stringliste zu String zusammenfügen
 
Moin zusammen,

und noch ein "Problem": Wie ich einen String splitte, weiß ich. Und das geht gut und schnell. Aber umgekehrt..

Delphi-Quellcode:
Stringliste:= '1'#13#10'2'#13#10...
for i:= 0 to Stringliste.count-1 do
  MeinString:= MeinString + ' ' + Stringliste.strings[i];
..dauert es bei sehr großen Listen (~ 1 Mio Zeilen) sehr/viel zu lange.

Gibt es eine schnellere Lösung als die Liste durchzugehen und via "+" zusammenzufügen? Oder ist TStringlist dafür nicht geeignet, was aber dann?

Danke und Grüße,
frieder

mkinzler 16. Sep 2011 12:30

AW: Separierte Stringliste zu String zusammenfügen
 
Delphi-Quellcode:
MeinString := StringListe.Text;
oder
Delphi-Quellcode:
MeinString := StringListe.DelimitedText;

Lemmy 16. Sep 2011 12:31

AW: Separierte Stringliste zu String zusammenfügen
 
öhm.. versteh ich dein Problem nicht oder kennst Du
Delphi-Quellcode:
MeinString:= Stringliste.Text;
nicht? Wenn Du dann anstelle der Zeilenumbrüche nur Leerzeichen haben willst, dann probier mal:

Delphi-Quellcode:
  StringList.Delimeter:=' ';
  MeinString:=StringList.DelimetedText;
verflixt zu langsam...

Union 16. Sep 2011 17:56

AW: Separierte Stringliste zu String zusammenfügen
 
Ich hab dazu mal eine Frage: Was machst Du im konkreten Fall mit diesem Monsterstring? Hast Du dadrin Die Suche nach der verlorenen Zeit gespeichert?

sx2008 17. Sep 2011 14:12

AW: Separierte Stringliste zu String zusammenfügen
 
* mit einer Schleife die Längen aller Einzelstrings aufaddieren
* dann (Lenght-1) mal (Länge des Delimiters) dazuaddieren
das ergibt die Gesamtlänge des resultierenden Strings.
Dieser String wird einmalig mit SetLength() reserviert und dann mit einer weiteren Schleife mit den Einzelstrings und Delimitern befüllt.
Wenn man dabei mit Zeigern arbeitet und die Move()-Prozedur benützt läuft der Code sehr schnell.
Je nach Länge der Stringliste kann das Faktor 1000 und mehr sein.

DeddyH 17. Sep 2011 14:36

AW: Separierte Stringliste zu String zusammenfügen
 
Wozu dieser Umstand, wenn die Liste das von Haus aus mitbringt?

sx2008 17. Sep 2011 20:19

AW: Separierte Stringliste zu String zusammenfügen
 
Zitat:

Zitat von DeddyH (Beitrag 1125000)
Wozu dieser Umstand, wenn die Liste das von Haus aus mitbringt?

Der TStrings.Delimiter ist begrenzt auf ein Zeichen und ausserdem erst ab Delphi 6 verfügbar.
Um das zu umgehen braucht es dann eben diesen "Umstand".


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 Uhr.

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