Entwickler-Ecke
Dateizugriff - Dateigröße bestimmen
P@u1 - Do 11.03.10 17:30
Titel: Dateigröße bestimmen
Hi,
gibt es eine gute Möglichkeit, die Größe einer Datei rauszufinden? Die Anwendung für die ich das verwenden will, soll die Größe von sich selbst bestimmen.
Bitte jetzt nicht einfach sagen, dass es keinen Grund dafür gibt, ich möchte wissen ob und wenn ja, wie das geht.
Vielen Dank
DonManfred - Do 11.03.10 17:37
Ich schmeiss mal ein FileSize(f) in den Raum...
Delphi-Quelltext
1: 2: 3:
| AssignFile(f, OpenDialog1.FileName); Reset(f); size := FileSize(f); |
P@u1 - Do 11.03.10 17:39
danke, habs hinbekommen
Ironwulf - So 11.07.10 13:20
das scheint nicht mit datein > 2gb zu funktionieren, gibt es dafür eine möglichkeit?
z.b. hab ich bei ner 8gb datei das ergebnis: -62539274
Ironwulf - So 11.07.10 14:16
thx funktioniert
Ironwulf - So 11.07.10 14:40
doch nicht so recht das funktioniert nur bis 4gb...
gibts da noch was anderes?
dummzeuch - So 11.07.10 15:05
DonManfred hat folgendes geschrieben : |
Ich schmeiss mal ein FileSize(f) in den Raum...
Delphi-Quelltext 1: 2: 3:
| AssignFile(f, OpenDialog1.FileName); Reset(f); size := FileSize(f); | |
Ist das Reset wirklich noetig? Wenn ja, fehlt noch ein FileClose.
twm
Bergmann89 - So 11.07.10 17:24
Ironwulf hat folgendes geschrieben : |
doch nicht so recht das funktioniert nur bis 4gb...
gibts da noch was anderes? |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| function GetFileSize(Filename: String): Int64; var Stream: TFileStream; begin result := 0; Stream := TFileStream.Create(Filename, fmOpenRead); try result := Stream.Size; finally Stream.Free; end; end; |
jaenicke - So 11.07.10 20:54
Oder so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function GetFileSize(AFilename: string): Int64; const SEEK_END = 2; var FileHandle: THandle; begin Result := 0; FileHandle := CreateFile(PChar(AFilename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0); if FileHandle <> INVALID_HANDLE_VALUE then begin Int64Rec(Result).Lo := SetFilePointer(FileHandle, 0, @Int64Rec(Result).Hi, SEEK_END); if (Int64Rec(Result).Lo = $FFFFFFFF) and (GetLastError <> 0) then Int64Rec(Result).Hi := $FFFFFFFF; CloseHandle(FileHandle); end; end; |
Laut Doku von SetFilePointer muss man GetLastError prüfen um festzustellen, ob es sich um einen Fehlerwert oder einen gültigen Wert handelt. Getestet habe ich den Fall nicht.
Gerd Kayser - Di 13.07.10 11:51
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); var Search : TSearchRec; begin if FindFirst('L:\Test.rar', faAnyFile, Search) = 0 then Label1.Caption := IntToStr(Search.Size); SysUtils.FindClose(Search); end; |
Funktioniert auch bei Dateien größer 4 GB.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!