Zitat von
foerster7892:
Delphi-Quellcode:
AssignFile(Buecher, 'C:\Users\user\Documents\Bücher\111Buchtitel111.dat');
if (FileExists('C:\Users\user\Documents\Bücher\111Buchtitel111.dat')) then
reset(Buecher)
else
rewrite(Buecher);
Groesse:= FileSize(Buecher);//<---- is File of ShortString(dort sind die Namen aller eingetragenen Bücher gespeichert)
for AlleBuecher := 1 to Groesse do
begin
read(Buecher, x);
Form3.RadioGroup2.Items.Add(x);
end;
closefile(Buecher)
end;
allerdings hab ich mitbekommen das FileSize nciht die Anzahl der Elemente die auf der Datei gespeichert sind feststellt sondern einfach nur die größe an sich.
Wie könnte ich die Größe der Elemente in der datei feststellen???
Du arbeitest hier mit einer typisierten Datei. Ein Datensatz, Element, hat die Größe Deiner Typisierung, hier also SizeOf("ShortString"), gibt also 256 Byte.
Die Dateigröße wird bei einem Write immer um diese Größe vergrößert.
Einfacher ist es, einfach durch die Datei zu gehen, ohne for:
Delphi-Quellcode:
reset(Buecher);
while not Eof(Buecher) do
begin
read(Buecher, x);
Form3.RadioGroup2.Items.Add(x);
end;
closefile(Buecher);
Hierbei spielt die Datensatzgröße keine Rolle, denn nach jedem Read wird der Datensatzzeiger um eins nach vorne gesetzt. Und am Ende der Datei steht dann EOF.
Falls Du Interesse an einem von mir in der MIF-Vorlesung erstellten Beispieles hast, einfach nochmal melden, dann suche ich die Quellen raus. Dort haben wir ein kleines Adressverwaltungsprogramm erstellt, welches mit Records arbeitet.
mfg
Michael