Einzelnen Beitrag anzeigen

absentsilence

Registriert seit: 1. Feb 2004
10 Beiträge
 
#1

Neue Daten werden sortiert, geöffnete Datei nicht

  Alt 12. Feb 2004, 17:36
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?
Dies ist der entsprechende Quelltext:

Delphi-Quellcode:
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;
Datei öffnen:
Delphi-Quellcode:
{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;
Und die Sortierroutine + Listbox füllen:
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;
  Mit Zitat antworten Zitat