Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: FileSplitter: Probleme mit großen Dateien

  Alt 25. Mär 2008, 17:14
Zitat von Luckie:
Sieht bei mir so aus:
Delphi-Quellcode:
function GetFileSize(Filename: String): Int64;
var
  fFile : THandle;
  wfd : TWIN32FINDDATA;
begin
  result := -1;
  if not FileExists(Filename) then
    exit;
  fFile := FindFirstfile(pchar(Filename), wfd);
  if fFile = INVALID_HANDLE_VALUE then
    exit;
  result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow;
  windows.FindClose(fFile);
end;
Au, wo hast du denn diese Funktion her ?
Das mit dem Multiplizieren ((wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) löst bei mir "schlechte Gefühle" aus.
Ich glaube die VCL bzw. der Compiler kann gar keine Multiplikationen der Bauart
64bit * 32Bit = 64bit
ausführen.
Delphi-Quellcode:
function FileGetSize(const FileName: string): Int64; // kopiert aus der JCL
var
  SearchRec: TSearchRec;
  OldMode: Cardinal;
  Size: TULargeInteger;
begin
  Result := -1;
  OldMode := SetErrorMode(SEM_FAILCRITICALERRORS);
  try
    if FindFirst(FileName, faAnyFile, SearchRec) = 0 then
    begin
      Size.LowPart := SearchRec.FindData.nFileSizeLow;
      Size.HighPart := SearchRec.FindData.nFileSizeHigh;
      Result := Size.QuadPart;
      SysUtils.FindClose(SearchRec);
    end;
  finally
    SetErrorMode(OldMode);
  end;
end;
Andreas
  Mit Zitat antworten Zitat