Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateigröße ohne Öffnen der Datei berechnen (https://www.delphipraxis.net/100403-dateigroesse-ohne-oeffnen-der-datei-berechnen.html)

Nils_13 27. Sep 2007 21:17

Re: Dateigröße ohne Öffnen der Datei berechnen
 
Mein Fehler war, wie schon angedeutet, dass ich nFileSizeHigh, statt nFileSizeLow genommen habe.

Arbeitskompatibilität: Wenn es keine Dokumentationen mehr gibt, werden viele die Abwärtskompatibilität nicht mehr "nutzen", weil es ihnen zu aufwendig wäre oder man weiß nicht, was einem unter Win98 erwartet. Alles in allem kann man denke ich sagen, dass man immer möglichst plattformunabhängig bleiben sollte, also alle APIs meiden sollte. Da das hier ein pures Windowsprogramm wird, kann mir das ausnahmsweise mal egal sein :)

jbg 27. Sep 2007 21:35

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

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 :gruebel:

OregonGhost 27. Sep 2007 21:49

Re: Dateigröße ohne Öffnen der Datei berechnen
 
Wo sonst sollen sich die CodeGear-Leute auch ihre Delphi-Tricks holen, wenn nicht in der Delphi-PRAXiS :mrgreen:

Nils_13 28. Sep 2007 14:36

Re: Dateigröße ohne Öffnen der Datei berechnen
 
Hast du mal ein Aufrufbeispiel dafür ? Ich bin gerade echt zu blöd dafür :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.
Seite 2 von 2     12   

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