Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Neue Daten werden sortiert, geöffnete Datei nicht (https://www.delphipraxis.net/16214-neue-daten-werden-sortiert-geoeffnete-datei-nicht.html)

absentsilence 12. Feb 2004 17:36


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:
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz