![]() |
AW: Sortieren eines Arrays of String
Zitat:
Delphi-Quellcode:
Gruß, Andreas
Function MyStringOfChar(Ch: Char; Count: Integer): String;
Var i: Integer; S: String; Begin S:= ''; For i:= 1 To Count Do S:= S + Ch; Result:= S; End; |
AW: Sortieren eines Arrays of String
StringOfChar gibt es in Delphi 5, offensichtlich integriert im Compiler (die Hilfe sagt Unit System, die Funktion ist dort aber nicht zu finden).
Grüße Dalai |
AW: Sortieren eines Arrays of String
DonPedroFo könnte - falls Delphi 5 diese Funktion schon kennt - auch direkt die Funktion
Delphi-Quellcode:
verwenden. In XE5 ist sie zu finden in der Unit System.SysUtils.
PadRight(TotalWidth: Integer; PaddingChar: Char): string;
Gruß, Andreas |
AW: Sortieren eines Arrays of String
Vermutlich gibt es die Funktion PadRight(..) in Delphi 5 noch nicht. DonPedroFo könnte jedoch wie folgt vorgehen:
Delphi-Quellcode:
function MyPadRight(Str_kurz: String; Ch: Char; Len_Soll: Integer): String;
var n_Ch: Integer; begin Result:= Str_kurz; n_Ch:= Len_Soll - Length(Str_kurz); If n_Ch < 1 Then Exit; Result:= Str_kurz + StringOfChar(Ch, n_Ch); // oder MyStringOfChar(..) von oben end; |
AW: Sortieren eines Arrays of String
Sortierroutine von oben etwas angepasst:
Delphi-Quellcode:
const
csFFFF = 'FFFFFFFFFFFFFF'; // Soviele F, wie maximal benötigt werden könnten. ciFFFF = 14; // Maximale Anzahl von F, die benötigt werden kann. function FillFFFF(s : String) : String; begin Result := s + Copy(csFFFF,1,ciFFFF - Length(s)); end; procedure TForm1.SortMemo; var i : Integer; k : Integer; s : String; begin Memo1.BeginUpdate; // Zuerst alles mit F auf Pflichtlänge auffüllen for i := 0 to Memo1.Lines.Count - 1 do Memo1.Lines[i] := FillFFFF(Memo1.Lines[i]); // 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; |
AW: Sortieren eines Arrays of String
Wahnsinn es Funktioniert auf anhieb.
Vielen Dank. Sowas nenn ich mal nützliche Hilfe. |
AW: Sortieren eines Arrays of String
@Delphi.Narium
Die Lösung ist schonmal perfekt. Könnte ich, um das ganze etwas variabler zu schreiben, die Zeilen csFFFF = 'FFFFFFFFFFFFFF'; ciFFFF = 14; irgendwie so schreiben csFFFF = (Variable)'F' ciFFFf = (Variable) wenn als Variable z.b. 10 steht csFFFF = 'FFFFFFFFFF' //10xF ciFFFF = 10 |
AW: Sortieren eines Arrays of String
Sortierroutine von oben etwas angepasst:
Delphi-Quellcode:
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.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;
Delphi-Quellcode:
Falls Delphi 5 die Funktion DupeString noch nicht kennen sollte:
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;
Delphi-Quellcode:
function DupeString(sZeichen : String; iAnzahl : Integer) : String;
var i : Integer; begin Result := ''; for i := 1 to iAnzahl do Result := Result + sZeichen; end; |
AW: Sortieren eines Arrays of String
Jetzt bekomme ich "Nicht genügend wrikliche Parameter" an dieser Stelle
Musste die Function DubString noch erstellen da sie Delphi 5 anscheinend nicht hat Result := s + Copy(DupeString(sFillChar, iLength), iLength - Length(s)); |
AW: Sortieren eines Arrays of String
Da fehlt 'ne 1,
Hab's oben ergänzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 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