![]() |
Filegrösse von Datei aus Opendialog
Hi Delphianer.
Ich öffne mitels Opendialog eine Datei und möchte die Dateigrösse der Datei in eine Litvie schreiben.
Delphi-Quellcode:
Li.SubItems.Add(GetFileSize(ClientForm.opendialog1.Files[i]));
Delphi-Quellcode:
Allerdings bekomme ich da immer die Fehlermeldung: Inkompatible Typen: NativeUInt und String;
function GetFileSize(FileName: string): integer;
var Handle: THandle; begin Result := 0; Handle := CreateFile(pchar(FileName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if Handle <> INVALID_HANDLE_VALUE then Result := windows.GetFileSize(Handle,nil); CloseHandle(handle); end; |
AW: Filegrösse von Datei aus Opendialog
Zitat:
Da würde ich fast drauf wetten. PS: THandle ist nur ein Alias und aktuell ist es intern ein NativeUInt. Zitat:
Reihenfolge der Units im Uses ändern (ohne "overload" wird immer der letzte Implementation verwendet, also jene, welche am Nächsten an der Aufrufstelle dran ist) oder mit Namespace aufrufen. Bzw. deine Deklaration vom GetFileSize liegt natürlich auch vor dem Aufruf? |
AW: Filegrösse von Datei aus Opendialog
Ich nehme folgende Version:
(ist schneller: öffnet kein File, Ergebnis auch für grosse Files geeignet: INT64)
Delphi-Quellcode:
function GetFileSizeEx(const AFileName: string): Int64;
var F: TSearchRec; begin Result := -1; if FindFirst(AFileName, faAnyFile, F) = 0 then begin try Result := F.FindData.nFileSizeLow or (F.FindData.nFileSizeHigh shl 32); finally SYSTEM.SysUtils.FindClose(F); end; end; end; //Alternative function GetFileSize(const AFileName: string): Int64; var SearchRec: TSearchRec; OldMode: Cardinal; Size: TULargeInteger; begin Result := -1; OldMode := SetErrorMode(SEM_FAILCRITICALERRORS); try if FindFirst(AFileName, faAnyFile, SearchRec) = 0 then begin Size.LowPart := SearchRec.FindData.nFileSizeLow; Size.HighPart := SearchRec.FindData.nFileSizeHigh; Result := Size.QuadPart; SYSTEM.SysUtils.FindClose(SearchRec); end; finally SetErrorMode(OldMode); end; end; |
AW: Filegrösse von Datei aus Opendialog
Oder so
Delphi-Quellcode:
function getFileSizeA(const aFileName: string): Int64;
var SR: TSearchRec; begin Result := 0; if not FileExists(aFileName) then Exit; if FindFirst(aFileName, faAnyFile and not faDirectory, SR) = 0 then try Result := SR.Size; finally System.SysUtils.FindClose(SR) end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz