Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

Re: Dateigröße ohne Öffnen der Datei berechnen

  Alt 27. Sep 2007, 22:35
Zitat von Nils_13:
Arbeitskompatibilitä
Du könntest GetFileAttributesEx auch so nutzen, wie CodeGear das in Delphi 2007 bei FileAge macht.

Delphi-Quellcode:
function GetFileAttributesExPreload(lpFileName: PChar; fInfoLevelId: TGetFileExInfoLevels;
  lpFileInformation: Pointer): BOOL; stdcall;
  forward;

var
  { Diesen Funktion-Zeiger kann man nun aufrufen }
  GetFileAttributesExFunc: function(lpFileName: PChar; fInfoLevelId: TGetFileExInfoLevels;
    lpFileInformation: Pointer): BOOL; stdcall = GetFileAttributesExPreload;

{ Use FindFirstFile as an alternative on systems that do not support the GetFileAttributesEx }
function GetFileAttributesExEmulated(lpFileName: PChar; fInfoLevelId: TGetFileExInfoLevels;
  lpFileInformation: Pointer): BOOL; stdcall;
var
  Handle: THandle;
  FindData: TWin32FindData;
begin
  Handle := FindFirstFile(lpFileName, FindData);
  if Handle <> INVALID_HANDLE_VALUE then
  begin
    Windows.FindClose(Handle);
    if lpFileInformation <> nil then
    begin
      Move(FindData, lpFileInformation^, SizeOf(TWin32FileAttributeData));
      Result := True;
      Exit;
    end;
  end;
  Result := False;
end;

function GetFileAttributesExPreload(lpFileName: PChar; fInfoLevelId: TGetFileExInfoLevels;
  lpFileInformation: Pointer): BOOL; stdcall;
begin
  GetFileAttributesExFunc := GetProcAddress(GetModuleHandle(kernel32), 'GetFileAttributesExA');
  if not Assigned(GetFileAttributesExFunc) then
    GetFileAttributesExFunc := GetFileAttributesExEmulated;
  Result := GetFileAttributesExFunc(lpFileName, fInfoLevelId, lpFileInformation);
end;
Da fällt mir gerade auf, dass ich haar genau den selben Code doch in DelphiSpeedUp benutze und das bevor Delphi 2007 überhaupt das Licht der Welt erblickte. Sogar die Namensgleichheit der Funktionen ...Emulated und ...Preload ist verblüffend. Wo die den Code nur her haben
  Mit Zitat antworten Zitat