Frage zu Pos / PosEx ?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
bernd30bln
Beiträge: 1
Registriert: Di 6. Jul 2010, 13:19

Frage zu Pos / PosEx ?

Beitrag von bernd30bln »

Hallo ,

Ich will aus einer Datei, die werte Sortieren.
Die Werte stehen so in der Datei : 1;22;5.0;125.19;22.5
Die Sotierung soll sich nach dem Dritten Wert richten.

Mein versuch:

Code: Alles auswählen

procedure Sortieren(ts: TStrings);
var   flag: boolean;
      i: integer;
      s: string;
      d1, d2: double;
begin
  repeat
    flag := true;
    for i := 0 to ts.Count - 2 do
     begin
      d1 := StrToFloat(copy(ts[i], pos(';', ts[i]) + 1, maxint));
      d2 := StrToFloat(copy(ts[i + 1], pos(';', ts[i + 1]) + 1, maxint));
     if d1 > d2 then
      begin
       s := ts[i];
       ts[i] := ts[i + 1];
       ts[i + 1] := s;
       flag := false;
      end;
      end;
     until flag;
end;
Wie kann ich die Procedure anpassen damit ich auf andere Werte zugreifen kann?

Gruß Bernd

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Frage zu Pos / PosEx ?

Beitrag von Scotty »

Ich würde die Werte in eine TStringList einlesen - vorher den Delimiter entsprechend setzen - und dessen Quicksort-Routine benutzen.

Antworten