AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem Dateiagröße

Ein Thema von foerster7892 · begonnen am 2. Dez 2008 · letzter Beitrag vom 2. Dez 2008
Antwort Antwort
Seite 1 von 2  1 2      
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#1

Problem Dateiagröße

  Alt 2. Dez 2008, 15:38
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???
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Problem Dateiagröße

  Alt 2. Dez 2008, 15:39
Teile mal die größe der Datei durch die größe eines Eintrags:

Groesse:= FileSize(Buecher) / SizeOf(x);
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Problem Dateiagröße

  Alt 2. Dez 2008, 16:00
File of ShortString? Wieso nicht einfach eine Textdatei und dann mit TStringlist bearbeiten?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#4

Re: Problem Dateiagröße

  Alt 2. Dez 2008, 16:17
ka hab ich erst gehabt und dann geändert weils nciht ging
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Problem Dateiagröße

  Alt 2. Dez 2008, 16:25
Was bedeutet ging nicht? Fehler?
Markus Kinzler
  Mit Zitat antworten Zitat
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#6

Re: Problem Dateiagröße

  Alt 2. Dez 2008, 16:40
dann kommt immer fehler 104 und 32 wo genau und so ka hier schaut selbst ich weiß nicht was da falsch läuft

ach und das ich suboptimal programmiere wurde mir schon gesagt lasst es bitte trotzdem so (ich sitz jetzt schon ne ganze weile and dem problem)



ich hab das jetzt nochmal auf textfile geändert
Angehängte Dateien
Dateityp: exe datens_tze_von_b_chern_122.exe (306,4 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Problem Dateiagröße

  Alt 2. Dez 2008, 17:14
Zitat:
Delphi-Quellcode:
  AssignFile(Buecher, 'C:\Users\user\Documents\Bücher\111Buchtitel111.txt');
  if (FileExists('C:\Users\user\Documents\Bücher\111Buchtitel111.txt')) then
  reset(Buecher)
  else
  rewrite(Buecher);
  //von hier
  Groesse:= FileSize(Buecher);
  for AlleBuecher := 1 to 2 do
  begin
    readln(Buecher, x);
    Form3.RadioGroup2.Items.Add(x);
  end;
  //bis hier ist das alles ein Fall für den Reset-Zweig
  closefile(Buecher)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
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, 17: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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Problem Dateiagröße

  Alt 2. Dez 2008, 17:29
Ein Minimalbeispiel hatte ich ihm bereits per PM geschickt (hab wohl mein eigenes Tut nicht gelesen ), aber er möchte von seinem Konzept nicht abweichen. Ich persönlich finde allerdings, wenn man im Laufe der Programmierung merkt, dass bereits der Ansatz Mist war, muss man (zumindest bei kleineren Projekten) auch mal den Mut haben, alles in die Tonne zu treten und neu anzufangen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#10

Re: Problem Dateiagröße

  Alt 2. Dez 2008, 17:31
@michael habbe: ich hab das einfach mal so eingesetzt wie dus gesagt hast (jetzt startets nicht mehr) (im Aufruf Stack wird angezeigt auf die Prozedure kann nicht zugegriffen werden)

@deddyh : ich mach das noch mal neu wenn ich es so fertig bekommen hab (ich hab mich auch darüber gefreut das de mir das geschickt hast (dadurch lernt man immer was dazu))
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 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