AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit Dateigrößen-Feststellung bei "kleineren" Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Dateigrößen-Feststellung bei "kleineren" Dateien

Ein Thema von Helmi · begonnen am 24. Mär 2008 · letzter Beitrag vom 24. Mär 2008
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Problem mit Dateigrößen-Feststellung bei "kleineren&quo

  Alt 24. Mär 2008, 13:21
Hallo,

ich hab folgende zwei Funktionen um die Größe einer Datei festzustellen:

1. GetFileSize
Delphi-Quellcode:
function GetFileSize(const FileName: String): Int64;
var
  SearchRec: TSearchRec;

begin
  Result := -1;
  If FindFirst(FileName, faAnyFile, SearchRec) = 0 then
  begin
    try
      Result := SearchRec.Size;
    finally
      FindClose(SearchRec);
    end;
  end;
end;
2. FileSize
Delphi-Quellcode:
AssignFile(FromF, OpenDialog1.FileName);
FileMode := fmOpenread;
reset(FromF);
Label2.Caption := IntToStr(FileSize(FromF));
Nun hab ich diese zwei Funktionen verglichen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  FromF: file of byte;

begin
  If OpenDialog1.Execute then
    begin
      Label1.Caption := IntToStr(GetFileSize(OpenDialog1.FileName));

      AssignFile(FromF, OpenDialog1.FileName);
      FileMode := fmOpenread;
      reset(FromF);
      Label2.Caption := IntToStr(FileSize(FromF));
    end;
end;
Ich hab eine Datei die ist 5,12 GB (5.501.142.528 Bytes) groß.
Bei dieser wird mir in beiden Labels ein Wert von
1206175232.

Bei einer anderen Datei die eine Größe von 2,97 GB (3.199.247.872 Bytes).
Bei dieser Datei wird aber in beiden Labels ein Wert
von -1095719424.

Wieso ist bei der kleinen Datei ein Minus davor?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#2

Re: Problem mit Dateigrößen-Feststellung bei "kleineren

  Alt 24. Mär 2008, 13:23
Hört sich nach nem Integer-Overflow an.
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Problem mit Dateigrößen-Feststellung bei "kleineren

  Alt 24. Mär 2008, 13:25
Zitat von phXql:
Hört sich nach nem Integer-Overflow an.
Kann ich mir nicht vorstellen. Denn das passiert bei der
kleineren der beiden Dateien. Bei der Größeren wird alles
normal (also positiv) angezeigt.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

Re: Problem mit Dateigrößen-Feststellung bei "kleineren

  Alt 24. Mär 2008, 13:27
Moin, Moin,
in beiden Fällen reicht der Wertebereich von Integer nicht aus! Auch im ersten Fall liefert SearchRec.Size nur einen Integer zurück, da nutzt das Int64 leider nix
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Problem mit Dateigrößen-Feststellung bei "kleineren

  Alt 24. Mär 2008, 13:51
Zitat von Helmi:
Bei der Größeren wird alles normal (also positiv) angezeigt.
Da sollte doch ein Blick reichen, um zu erkennen, dass auch die positive Zahl alles andere als "normal" ist . 1206175232 Byte sind 1,12 GB, etwas weniger als 5 GB . Addiere einmal 2^32 Byte und staune .

Und wie man's richtig macht, hast du ja schon längst hier als Antwort bekommen...
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort


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