![]() |
Re: Zwei Stringlisten sortieren
Zitat:
|
Re: Zwei Stringlisten sortieren
Moin Luckie,
statt
Delphi-Quellcode:
AddObject(ExtractFilename(slFiles.Strings[i]), TObject(FileObj));
Delphi-Quellcode:
Da die andere Liste (slFiles) ja nicht angetastet wird, so wie ich es verstanden habe, ist der Index ja eindeutig
AddObject(ExtractFilename(slFiles.Strings[i]), TObject(i));
|
Re: Zwei Stringlisten sortieren
Hm, ich würde gerne meine ursprüngliche Idee mit dem manuellen Sortieren der Stringlisten trotzdem gerne weirer verfolgen. Ich habe jetzt:
Delphi-Quellcode:
Nur bekomme ich dann eine AV, wenn ich auf eine Zelle mit einem Dateinamen klicke:
procedure SortSl(slInOut, slTemplate: TStringlist);
var slTemp: TStringList; i: Integer; //idx: Integer; s: string; begin slTemp := TStringList.Create; try //for i := 0 to slTemplate.Count - 1 do while slTemp.Count > slTemplate.Count do begin s := slInOut.Strings[i]; if pos(slTemplate.Strings[i], s) > 0 then slTemp.Add(s); end; slInOut.Assign(slTemp); finally //FreeAndNil(slTemp); end; end;
Delphi-Quellcode:
Ich zerschieße mir wohl irgendwie die ursprüngliche Dateiliste (slFiles).
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var Col, Row: Integer; sl: TStringList; i: Integer; begin StringGrid1.MouseToCell(X, Y, Col, Row); if (Col = 0) and (Row > 0) and (StringGrid1.Cells[Col, Row] <> '') then begin IndexFileToOpen := Row - 1; TempForm := TfrmDisplayFiles.Create(self); // hier AV!!! FormList.Add(TempForm); TfrmDisplayFiles(FormList.Items[FormList.Count - 1]).Show; TfrmDisplayFiles(FormList.Items[FormList.Count - 1]).BringToFront; end; if (Col = StringGrid1.ColCount - 1) or (Col = StringGrid1.ColCount - 2) and (Row = 0) then begin StringGrid1.SortSettings.Column := Col; StringGrid1.QSort; sl := TStringList.Create; try for i := 1 to StringGrid1.RowCount - 2 do begin sl.Add(StringGrid1.Cells[0, i]); end; SortSl(slFiles, sl); finally FreeAndNil(sl); end; Sorted := True; mnuUnsort.Enabled := Sorted; end; end; |
Re: Zwei Stringlisten sortieren
Hai Luckie,
da man in deinem Code nicht sieht was TfrmDisplayFiles ist und wo TempForm deklariert wurde kann man schwer etwas sagen. Wenn Du das Projekt mal anhängst schaue ich gerne mal drüber (wenn es keine besonderen Komponenten benötigt). |
Re: Zwei Stringlisten sortieren
Anhängen ungerne, ich verdiene damit Geld. ;) Schicken könnte ich es dir, aber erst morgen, ich muss noch ein paar Worte dazu schreiben, damit du wenigstens den Hauch einer Chance hast dich zurecht zu finden. :mrgreen:
|
Re: Zwei Stringlisten sortieren
Zitat:
|
Re: Zwei Stringlisten sortieren
Da die vorgeschlagenen Methoden irgendwas als Objekt zu speichern irgendwie nicht funktionieren, versuche ich jetzt über die Methode mit dem Sortieren der Stringliste zu gegehn. Problem habe ich im mersten Posting beschrieben. Ich bin jetzt so weit:
Delphi-Quellcode:
Der Aufmerksame Leser wird sehen was passiert. Ich renne über den Listenidex hinaus, da i jedesmal erhöht wird und irgendwann ist i größer als Count - 1 und ich habe noch nicht alle Einträge in der neuen Liste. Es wäre schön, wenn mir da jemand helfen könnte, ich wollte die Software in den nächsten Tagen ausliefern.
procedure Tform1.SortSlFiles(slTemplate: TStringlist);
var slTemp: TStringList; i: Integer; //idx: Integer; s: string; begin i := 0; slTemp := TStringList.Create; try while slTemp.Count <= slTemplate.Count do begin s := slFiles.Strings[i]; if pos(slTemplate.Strings[i], s) > 0 then begin slTemp.Add(s); Writeln(s); end; Inc(i); end; slFiles.Clear; for i := 0 to slTemp.Count -1 do begin slFiles.Add(sltemp.Strings[i]) end; finally FreeAndNil(slTemp); end; end; |
Re: Zwei Stringlisten sortieren
Moin Luckie,
Zitat:
Ich habe das eben mal mit D6PE ausprobiert: Alles OK. z.B. so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin StringGrid1.Objects[0,0] := TObject(50); end; procedure TForm1.Button2Click(Sender: TObject); begin ShowMessage(IntToStr(integer(StringGrid1.Objects[0,0]))); end; |
Re: Zwei Stringlisten sortieren
Hm, so geht es wohl tatsächlich. Ich habe es immer so probiert:
Delphi-Quellcode:
Mal sehen.
StringGrid1.Rows[i+1].AddObject(ExtractFilename(slFiles.Strings[i]), TObject(i));
|
Re: Zwei Stringlisten sortieren
Moin Luckie,
so geht's auch. Das Objekt hat dann den Index 0. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 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