![]() |
Neue Daten werden sortiert, geöffnete Datei nicht
Hallo!
Ich habe folgendes Problem: In meinem Programm, welches CDs verwaltet, kann ich das dynamische Array in der Listbox nach Interpret (alphabetisch) sortieren, wenn ich neue Datensätze eingebe. Aber wenn ich eine Datei öffne, wird diese nicht sortiert, stattdessen kommen nur Nullen. Was mache ich falsch? :wall: Dies ist der entsprechende Quelltext:
Delphi-Quellcode:
Datei öffnen:
implementation {$R *.dfm}
type tCDname=Record interpret, album:string[20]; end; type tEintrag=Record CDname:tCDname; genre:string[15]; jahr:integer; preis:real; end; type tAlleCDs = Array of tEintrag; var daten:tAlleCDs; i:integer;
Delphi-Quellcode:
Und die Sortierroutine + Listbox füllen:
{Datenbank öffnen}
procedure TForm1.Datenbankffnen1Click(Sender: TObject); VAR Zeile : string; datei:textfile; begin cd_listbox.Items.clear; if oeffnen_dialog.Execute then begin AssignFile (Datei,oeffnen_dialog.Filename); Reset (Datei); while not eof (Datei) do begin SetLength(daten,Length(daten)+1); i:=i+1; Readln (Datei, Zeile); cd_listbox.Items.Add (Zeile); end; CloseFile(Datei); anzahl_edit.text:=IntToSTr(cd_listbox.items.Count); end; end;
Delphi-Quellcode:
procedure tausche(var l,j: tEintrag);
var h: tEintrag; begin h:=l; l:=j; j:=h; end;
Delphi-Quellcode:
procedure TForm1.nachInterpret1Click(Sender: TObject);
var ljahrstr, lmonatstr, ltagstr, lstdstr, lminstr, lsecstr:string; l,j: integer; begin cd_listbox.items.Clear; for l:=0 to high(daten)-1 do for j:=l+1 to high(daten) do begin if daten[j].cdname.interpret < daten[l].cdname.interpret then tausche(daten[l],daten[j]); end; with cd_listbox do begin For j:=0 to high(daten) do begin items.Add(daten[j].CDname.interpret+#9+daten[j].CDname.album+#9+ daten[j].genre+#9+inttostr(daten[j].jahr)+#9+floattostrf(daten[j].preis,fffixed,8,2)); end end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 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