Autor |
Beitrag |
P@u1
      
Beiträge: 117
|
Verfasst: Do 11.03.10 17:30
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
      
Beiträge: 148
Erhaltene Danke: 2
Windows 7
Delphi XE3 Pro + HTML5Builder
|
Verfasst: 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); |
_________________ Gruss Manfred
Zuletzt bearbeitet von DonManfred am Do 11.03.10 17:38, insgesamt 1-mal bearbeitet
|
|
P@u1 
      
Beiträge: 117
|
Verfasst: Do 11.03.10 17:39
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: 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
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 11.07.10 13:25
Das geht z.B. mit GetFileSize bzw. besser GetFileSizeEx.
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: So 11.07.10 14:16
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: So 11.07.10 14:40
doch nicht so recht das funktioniert nur bis 4gb...
gibts da noch was anderes?
|
|
dummzeuch
      
Beiträge: 593
Erhaltene Danke: 5
Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
|
Verfasst: So 11.07.10 15:05
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: So 11.07.10 17:24
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: 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.
|
|