AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei Stringlisten sortieren

Ein Thema von Luckie · begonnen am 10. Mai 2005 · letzter Beitrag vom 11. Mai 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Zwei Stringlisten sortieren

  Alt 10. Mai 2005, 15:17
Zitat von Christian Seehase:
warum nimmst Du als Objekt nicht einfach den Index der sortierten Liste?
Das spart Dir anschliessend auch die Freigabe des reservierten Speichers.
Das verstehe ich jetzt nicht. Wie meinst du das?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Zwei Stringlisten sortieren

  Alt 10. Mai 2005, 15:21
Moin Luckie,

statt

AddObject(ExtractFilename(slFiles.Strings[i]), TObject(FileObj)); AddObject(ExtractFilename(slFiles.Strings[i]), TObject(i)); Da die andere Liste (slFiles) ja nicht angetastet wird, so wie ich es verstanden habe, ist der Index ja eindeutig
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Zwei Stringlisten sortieren

  Alt 10. Mai 2005, 15:26
Hm, ich würde gerne meine ursprüngliche Idee mit dem manuellen Sortieren der Stringlisten trotzdem gerne weirer verfolgen. Ich habe jetzt:
Delphi-Quellcode:
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;
Nur bekomme ich dann eine AV, wenn ich auf eine Zelle mit einem Dateinamen klicke:
Delphi-Quellcode:
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;
Ich zerschieße mir wohl irgendwie die ursprüngliche Dateiliste (slFiles).
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Zwei Stringlisten sortieren

  Alt 10. Mai 2005, 16:26
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).
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Zwei Stringlisten sortieren

  Alt 10. Mai 2005, 17:45
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Zwei Stringlisten sortieren

  Alt 11. Mai 2005, 11:52
Zitat von Christian Seehase:
AddObject(ExtractFilename(slFiles.Strings[i]), TObject(i)); Da die andere Liste (slFiles) ja nicht angetastet wird, so wie ich es verstanden habe, ist der Index ja eindeutig
Jetzt habe ich es kapiert, aber das will auch nicht. Das Programm reagiert einfach nicht mehr.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Zwei Stringlisten sortieren

  Alt 11. Mai 2005, 20:05
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:
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;
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Zwei Stringlisten sortieren

  Alt 11. Mai 2005, 20:27
Moin Luckie,

Zitat von Luckie:
Da die vorgeschlagenen Methoden irgendwas als Objekt zu speichern irgendwie nicht funktionieren,
seltsam

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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Zwei Stringlisten sortieren

  Alt 11. Mai 2005, 20:30
Hm, so geht es wohl tatsächlich. Ich habe es immer so probiert:
StringGrid1.Rows[i+1].AddObject(ExtractFilename(slFiles.Strings[i]), TObject(i)); Mal sehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Zwei Stringlisten sortieren

  Alt 11. Mai 2005, 20:32
Moin Luckie,

so geht's auch.
Das Objekt hat dann den Index 0.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 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