Sortierroutine von oben etwas angepasst:
Delphi-Quellcode:
function Filler(s : String; sFillChar : Char; iLength : Integer) : String;
begin
Result := s + Copy(DupeString(sFillChar, iLength), 1, iLength - Length(s));
end;
procedure TForm1.SortMemo;
var
i : Integer;
k : Integer;
s : String;
begin
Memo1.BeginUpdate;
// Zuerst alles mit auf Pflichtlänge auffüllen
for i := 0 to Memo1.Lines.Count - 1 do Memo1.Lines[i] := Filler(Memo1.Lines[i],'F',14);
// und dann sortieren.
for i := 0 to Memo1.Lines.Count - 1 do begin
for k := i + 1 to Memo1.Lines.Count - 1 do begin
if Copy(Memo1.Lines[k],5,4) < Copy(Memo1.Lines[i],5,4) then begin
s := Memo1.Lines[i];
Memo1.Lines[i] := Memo1.Lines[k];
Memo1.Lines[k] := s;
end;
end;
end;
Memo1.EndUpdate;
end;
Wenn's noch flexibler sein soll, da bau ins Formular noch zwei Edits ein, z. B.: edFillChar für das Zeichen, mit dem aufgefüllt werden soll und edLineLength für die Länge, bis zu der die einzelnen Zeilen aufgefüllt werden sollen.
Delphi-Quellcode:
function Filler(s : String; sFillChar : Char; iLength : Integer) : String;
begin
Result := s + Copy(DupeString(sFillChar, iLength), 1, iLength - Length(s));
end;
procedure TForm1.SortMemo;
var
i : Integer;
k : Integer;
s : String;
iLength : Integer;
sFillChar : Char;
begin
Memo1.BeginUpdate;
iLength := StrToInt(Trim(edLineLength.Text));
sFillChar := Copy(edFillChar.Text,1,1);
// Zuerst alles mit auf Pflichtlänge auffüllen
for i := 0 to Memo1.Lines.Count - 1 do Memo1.Lines[i] := Filler(Memo1.Lines[i],sFillChar,iLength);
// und dann sortieren.
for i := 0 to Memo1.Lines.Count - 1 do begin
for k := i + 1 to Memo1.Lines.Count - 1 do begin
if Copy(Memo1.Lines[k],5,4) < Copy(Memo1.Lines[i],5,4) then begin
s := Memo1.Lines[i];
Memo1.Lines[i] := Memo1.Lines[k];
Memo1.Lines[k] := s;
end;
end;
end;
Memo1.EndUpdate;
end;
Falls Delphi 5 die Funktion DupeString noch nicht kennen sollte:
Delphi-Quellcode:
function DupeString(sZeichen : String; iAnzahl : Integer) : String;
var
i : Integer;
begin
Result := '';
for i := 1 to iAnzahl do Result := Result + sZeichen;
end;