Hallo Leute,
ich freue mich, daß es ein solches Forum gibt, das Hilfe bei Problemen in verschiedenen Programmiersprachen ermöglicht. Eine gelungene Sache, dafür erst einmal meine Hochachtung. :-)
Nun zu meinem Problem. Ich versuche, eine Listbox zu sortieren. Dafür gibt es verschiedene Algorythmen. Bei einer bestimmten Routine werde ich stutzig und frage mich, ob mein Delphi irgendwo fehlerhaft ist.
Es werden im Programm 400 ZufallsDatums mit Randomize erstellt, und in der Listbox unsortiert ausgegeben und sollen nun sortiert werden, ohne 'Listbox.sorted'.
Immer wieder derselbe Error:
[IMG][/IMG]
Ich versuche, den Fehler zu finden.
Egal, wie ich es mache, hier ein paar Beispiele, wo es hängt:
und hier:
und das geht auch nicht:
Es ist immerderselbe Fehler, wobei das hier funktionieren würde:
Was ist da mit meinem Delphi, oder was mache ich da noch falsch?
ich freue mich, daß es ein solches Forum gibt, das Hilfe bei Problemen in verschiedenen Programmiersprachen ermöglicht. Eine gelungene Sache, dafür erst einmal meine Hochachtung. :-)
Nun zu meinem Problem. Ich versuche, eine Listbox zu sortieren. Dafür gibt es verschiedene Algorythmen. Bei einer bestimmten Routine werde ich stutzig und frage mich, ob mein Delphi irgendwo fehlerhaft ist.
Es werden im Programm 400 ZufallsDatums mit Randomize erstellt, und in der Listbox unsortiert ausgegeben und sollen nun sortiert werden, ohne 'Listbox.sorted'.
Immer wieder derselbe Error:
[IMG][/IMG]
Ich versuche, den Fehler zu finden.
Egal, wie ich es mache, hier ein paar Beispiele, wo es hängt:
Code:
procedure TForm1.Button1Click(Sender: TObject); var MStr:TStrings; //<-(TStrings Lo,Hi:integer; begin MStr:=TStrings.Create; Lo:=0; Hi:=Listbox1.items.count-1; Mstr:=TStrings(Listbox1.Items.Objects[(Lo + Hi)div 2]); // <- Hier der <- EStringListERROR MStr.Destroy; end;
Code:
procedure TForm1.Button1Click(Sender: TObject); var MStr:TStringlist; //<-(TStringList Lo,Hi:integer; begin MStr:=TStringlist.Create; Lo:=0; Hi:=Listbox1.items.count-1; Mstr:=TStringlist(Listbox1.Items.Objects[(Lo + Hi)div 2]); //<- EStringListERROR MStr.Destroy; end;
Code:
function CompareDates(List: TStringList; Index1, Index2: Integer): Integer; var d1, d2: TDateTime; begin d1 := StrToDate(List[Index1]); d2 := StrToDate(List[Index2]); if d1 < d2 then Result := -1 else if d1 > d2 then Result := 1 else Result := 0; end; procedure TForm1.Button1Click(Sender: TObject); var List: TStringlist; begin ZufallsDatumHinzufuegen; List := TStringlist.Create; try ListBox1.Items.BeginUpdate; try List.Assign(ListBox1.Items); List.CustomSort(@CompareDates); //<- EStringListERROR ListBox1.Items.Assign(List); finally ListBox1.Items.EndUpdate; end; finally List.Free; end; end;
Code:
procedure TForm1.Button2Click(Sender: TObject); var MStr:string; //<-StringVariable Lo,Hi:integer; begin Lo:=0; Hi:=Listbox1.items.count-1; Mstr:=(Listbox1.Items[(Lo + Hi)div 2]); //<- das geht Label2.caption:=MStr; end;
Comment