![]() |
Zwei Stringlisten sortieren
Problem: Ich habe zwei Stringlisten. In der einen sind die Einträge in einer bestimmten Reihenfolge in der anderen nicht. In dieser anderen sollen die Einträge jetzt die gleiche Reihenfolge haben, wie die in der ersten. hat da jemand eine Idee, wie man das elegant lösen könnte?
Mir schwebt irgendwie was mit einer dritten temporären vor. Aber eht es eventuell noch besser? |
Re: Zwei Stringlisten sortieren
Frage: Unterscheidet sich der Inhalt der beiden Listen? Oder ist der Inhalt bis auf die Sortierung gleich?
Gerd |
Re: Zwei Stringlisten sortieren
Man kann sagen, dass der Inhalt nahezu identisch ist. Hintergrund ist der: Ich habe eine Stringliste mit Dateien. Diese zeige ich in einem Stringgrid an. Aber dort nur die Dateinamen, der Pfad ist in dem Moment uninteressant. Mit Klick auf die Zelle wird die Datei in einem Memo angezeigt. Kein Problem, da ich aus der Zeile den Index in der Stringliste ermitteln kann. Jetzt kann das Stringgrid aber sortiert werden, mit der Folge dass die Reihenfolge im Grid nicht mehr mit der in der Stringliste übereinstimmt und somit die falsche Datei geöffnet wird. Bei einer Listbox hätte ich mit AddObject gearbeitet, aber das bietet das TMS StringGrid irgendwie nicht - oder ich habe es nochnicht gefunden.
|
Re: Zwei Stringlisten sortieren
Hi Luckie,
welche Möglichkeiten der Sortierung bietet denn dein Stringgrid? Wenn es nur um eine alphabetisch aufsteigende, bzw. absteigende Sortierung der Dateinamen geht kannst du diese in der Stringlist doch einfach nachempfinden. Wenn aber Einträge verschoben werden fällt mir auch nichts besseres ein, als Schritt für Schritt durchs Grid zu gehen, die Einträge mit der Stringlist zu vergleichen und eine temporäre Stringlist zu schreiben :gruebel: Gruß Christian |
Re: Zwei Stringlisten sortieren
Nein, es werden nicht die dateinamen sortiert, das Kriterium ist ein anderes, was die Dateinamen total durcheinander würfelt.
|
Re: Zwei Stringlisten sortieren
Zitat:
ich habe zwar schon lange nicht mehr mit den TMS Produkten gearbeitet... aber das TMS-StringGrid ist glaube ich vom "normalen" TStringGrid abgeleitet. Dieses kannt auch ein ![]() |
Re: Zwei Stringlisten sortieren
Gut die Eigenschaft habe ich jetzt gefunden, nur leider hängt sich mein Programm ganz still auf. Es kommt keine AV oder sonst irgendetwas.
Delphi-Quellcode:
type
TFileObject = record Filename: String[255]; end; PFileObject = ^TFileObject; procedure TForm1.mnuFilesClick(Sender: TObject); var i: Integer; s: string; FileObj: PFileObject; begin if frmFiles.ShowModal = mrOK then begin // oben und unten eine Zeile zusätzlich StringGrid1.RowCount := slFiles.Count + 2; // Spaltenbreite anpassen StringGrid1.ColWidths[0] := GetLongestWord(StringGrid1.Canvas, slFiles) + 30; // Dateinamen mit Pfad als Objekt in der Zeile ablegen for i := 0 to slFiles.Count - 1 do begin new(FileObj); FileObj^.Filename := slFiles.Strings[i]; StringGrid1.Rows[i+1].AddObject(ExtractFilename(slFiles.Strings[i]), TObject(FileObj)); end; end; mnuAnalyze.Enabled := EnableAnalyzeBtn; end; |
Re: Zwei Stringlisten sortieren
Mal ne Frage: Wenn in beiden Stringlisten das gleiche drin steht, nur halt einmal sortiert und einmal nicht. Warum nimmst du dann nicht einfach gleich die sortierte Stringlist?
|
Re: Zwei Stringlisten sortieren
Deswegen:
![]() |
Re: Zwei Stringlisten sortieren
Moin Luckie,
warum nimmst Du als Objekt nicht einfach den Index der sortierten Liste? Das spart Dir anschliessend auch die Freigabe des reservierten Speichers. [EDIT] und prüf' auch mal nach, dass AddObject auch das gewünschte erledigt. Bei Memo/RichEdit.Lines kann man auch AddObject machen, aber hier enthält das Objekt anschliessend nur 0 [/EDIT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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