![]() |
Stringliste Umkehren
Hallo Ich mcöhte den Inhalt einer Stringliste Umkehren...Also erstes Elemnt an letzter Stelle und das Letzte an ester Stelle ect...
Zuerst A B C D Nacher D C B A Ich habe mal folgenden Code geschrieben mit dem es soweizt funktioniert. procedure TForm1.Button1Click(Sender: TObject); var i,d: Integer; begin With OpenDialog1 do begin if Execute then begin Daten.LoadFromFile(Filename); //Daten in die Stringlist kopieren end; end; d:= Daten.Count; //Anzahl Zeilen ermitteln DatenU.Assign(Daten); //Die Umgekehrte Stringlist "DatenU" mit der richtigen gGrösse erstellen for i := 1 to d do begin DatenU.Strings[i-1]:= Daten.Strings[d-i] //Zeilen umsortieren end; Label1.Caption:=IntToStr(d); Memo1.Lines:=Daten; Memo2.Lines:=DatenU; end; procedure TForm1.FormCreate(Sender: TObject); begin Daten := TStringList.Create; DatenU := TStringList.Create; end; Da die Stringlist aber ziemlich gross werden können (txt-Logfiles) dauert dieser Algorythmus etwas lange. Hat jemand eine elegantere Lösung? Besten Dank und Gruss Simon |
Re: Stringliste Umkehren
Wohl noch nie was von DOWNTO gehört ?
|
Re: Stringliste Umkehren
Inwiefern ist DOWNTO die Antwort auf meine Frage?
|
Re: Stringliste Umkehren
Zitat:
|
Re: Stringliste Umkehren
Was Hansa meint ist vielleicht das:
Delphi-Quellcode:
Ob das schneller ist, sei mal dahingestellt.
datenU:= TStringList.create;
for i:=daten.count -1 downto 0 do DatenU.add(daten[i]); Memo2.lines.assign(datenU); datenU.free; Grüße Klaus |
Re: Stringliste Umkehren
downto brauchst du noch nicht mal!
Delphi-Quellcode:
(ungetestet)
var s: String;
... for i := 0 to (sl.Count-1) div 2 do begin s:=sl[i]; sl[i]:=sl[sl.Count-i-1]; sl[sl.Count-i-1]:=s; end; |
Re: Stringliste Umkehren
Ist TStringList.CustomSort die Antwort auf Deine Frage? :mrgreen:
|
Re: Stringliste Umkehren
Zitat:
Es kommt darauf an, was bezweckt werden soll. DOWNTO is gut, wenn man die Elemente einer Stringlist in umgekerhter Reihenfolge durchgehen will. Wenn das nicht die beabsichtigte Aktion ist, dann fürchte ich, es geht halt nicht schneller. Zumindest fällt mir nix ein, was man an dem simon790 seinem Code verbessern könnte. Außer der Formatierung. Oder so. Ich mein ja nur.. |
Re: Stringliste Umkehren
.. ist denn TStringList.exchange nicht ehr für soetwas gut?
Delphi-Quellcode:
[ungetestet)
j:=0;
for i:=daten.count -1 downto (daten.count -1) div 2 do begin daten.exchange(i,j); inc(j); end; Aus der Hilfe zu Exchange: Swaps the position of two strings in the list. procedure Exchange(Index1, Index2: Integer); override; Description Call Exchange to rearrange the strings in the list. The strings are specified by their index values in the Index1 and Index2 parameters. Indexes are zero-based, so the first string in the list has an index value of 0, the second has an index value of 1, and so on. If either string has an associated object, Exchange changes the index of the object as well. Warning: Do not call Exchange on a sorted list except to swap two identical strings with different associated objects. Exchange does not check whether the list is sorted, and can destroy the sort order of a sorted list. Grüße Klaus |
Re: Stringliste Umkehren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr. |
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