Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zwei Stringlisten sortieren (https://www.delphipraxis.net/45670-zwei-stringlisten-sortieren.html)

Luckie 10. Mai 2005 13:32


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?

bernau 10. Mai 2005 13:41

Re: Zwei Stringlisten sortieren
 
Frage: Unterscheidet sich der Inhalt der beiden Listen? Oder ist der Inhalt bis auf die Sortierung gleich?


Gerd

Luckie 10. Mai 2005 13:46

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.

Chris1986 10. Mai 2005 14:07

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

Luckie 10. Mai 2005 14:13

Re: Zwei Stringlisten sortieren
 
Nein, es werden nicht die dateinamen sortiert, das Kriterium ist ein anderes, was die Dateinamen total durcheinander würfelt.

Sharky 10. Mai 2005 14:19

Re: Zwei Stringlisten sortieren
 
Zitat:

Zitat von Luckie
... aber das bietet das TMS StringGrid irgendwie nicht - oder ich habe es nochnicht gefunden.

Hai Luckie,
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 Delphi-Referenz durchsuchenAddObject für jede Zeile/Spalte ([oh]Colls/Rows[/oh])

Luckie 10. Mai 2005 14:52

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;

Alexander 10. Mai 2005 14:54

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?

Luckie 10. Mai 2005 14:55

Re: Zwei Stringlisten sortieren
 
Deswegen: http://www.delphipraxis.net/internal...=365641#365641 In der sortieretn fehlen die Pfade zu den Dateien.

Christian Seehase 10. Mai 2005 15:11

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 09:35 Uhr.
Seite 1 von 3  1 23      

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