AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dateigröße auf Netzlaufwerk ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Dateigröße auf Netzlaufwerk ermitteln

Ein Thema von haentschman · begonnen am 1. Dez 2007 · letzter Beitrag vom 2. Dez 2007
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.538 Beiträge
 
Delphi 12 Athens
 
#21

Re: Dateigröße auf Netzlaufwerk ermitteln

  Alt 2. Dez 2007, 01:28
wie groß ist denn die Datei?
Delphi-Quellcode:
function GetFileSize2(const FileName: String): Int64;
var
  H: THandle;
  D: TWIN32FindDataW;

begin
  H := FindFirstFileW(PWideChar(FileName), D);
  If H = INVALID_HANDLE_VALUE then exit; //GetLastError_auswerten;
  result := (Int64(d.nFileSizeHigh)*(MAXDWORD + 1))+d.nFileSizeLow;
  CloseHandle(H);
end;
PS: * und + sind etwas langsam/unoptimal
und bevor du versuchst einen Integer/Cardinal [d.nFileSizeHigh] (also 4 Byte) auf einen Int64 (8 Byte) zu erweitern, mußt die dessen Größe erstmal ändern (Int64)
Delphi-Quellcode:
Function GetFileSizeA(Const FileName: String): Int64;
  Var FileNameW: WideString;
    H: THandle;
    D: TWIN32FindDataW;

  Begin
    Result := -1;
    FileName := FileNameW;
    H := FindFirstFileW(PWideChar(FileName), D);
    If H = INVALID_HANDLE_VALUE Then Exit;
    If D.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0 Then
      Result := (Int64(D.nFileSizeHigh) shl 32) or D.nFileSizeLow;
    CloseHandle(H);
  End;
oder
Delphi-Quellcode:
Function GetFileSizeA(Const FileName: String): Integer;
  Var FileNameW: WideString;
    H: THandle;
    D: TWIN32FindDataW;

Begin
    Result := -1;
    FileName := FileNameW;
    H := FindFirstFileW(PWideChar(FileName), D);
    If H = INVALID_HANDLE_VALUE Then Exit;
    If (D.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0)
      and (D.nFileSizeHigh = 0) and (D.nFileSizeLow < $80000000) Then
      Result := D.nFileSizeLow;
    CloseHandle(H);
  End;
PSS: was micht wundert ist, daß bei PWideChar(FileName) nicht gemeckert wird, vonwegen AnsiString-PWideChar-Konvertierung
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 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