Thema: Delphi Problem Dateiagröße

Einzelnen Beitrag anzeigen

Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Problem Dateiagröße

  Alt 2. Dez 2008, 18:20
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
  Mit Zitat antworten Zitat