AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Größe auf dem Datenträger ermitteln.
Thema durchsuchen
Ansicht
Themen-Optionen

Größe auf dem Datenträger ermitteln.

Ein Thema von morbo · begonnen am 19. Okt 2004 · letzter Beitrag vom 20. Okt 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Größe auf dem Datenträger ermitteln.

  Alt 20. Okt 2004, 09:51
Zitat von Steve:
Nunja, dann funzt die Lösung mit GetCompressedFileSize also wohl nur ab NT aufwärts
Hai Stephan

ich habe das ganze jetzt mal erweitert:
Delphi-Quellcode:
function GetRealFileSize(const aFileName: string): Cardinal;
  {**********************************************************}
  // Diese Funktion ist von Daniel B. aus der Code-Library
  // [url]http://www.delphipraxis.net/post52937.html#52937[/url]
  // Es wird geprüft ob ein Windows auf NT-Basis läuft
  function NTSystem: Boolean;
  var
    OsVinfo: TOSVERSIONINFO;
  begin
    result := False;
    ZeroMemory(@OsVinfo, SizeOf(OsVinfo));
    OsVinfo.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFO);
    if GetVersionEx(OsVinfo) then
    begin
      if OsVinfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
      begin
        result := True;
      end
    end;
  end;
  {**********************************************************}
  // Diese Funktion ist von Luckie aus der Code-Library
  // [url]http://www.delphipraxis.net/post191286.html#191286[/url]
  // Ermittelt die Grösse einer Datei
  function GetFileSize(const szFile: String): Int64;
  var
    fFile: THandle;
    wfd: TWIN32FINDDATA;
  begin
    result := 0;
    if not FileExists(szFile) then exit;
    fFile := FindFirstfile(pchar(szFile),wfd);
    if fFile = INVALID_HANDLE_VALUE then exit;
    result := (wfd.nFileSizeHigh*(MAXDWORD))+wfd.nFileSizeLow;
    windows.FindClose(fFile);
  end;
  {**********************************************************}

var
  ClusterSize: Cardinal;
  SectorPerCluster: Cardinal;
  BytesPerSector: Cardinal;
  NumberOfFreeClusters: Cardinal;
  TotalNumberOfClusters: Cardinal;
  filesize: Cardinal;
  realsize: Cardinal;
  drive: string;
begin
  drive := ExtractFileDrive(aFileName) + '\';
  if (NTSystem) then
  begin
    filesize := GetCompressedFileSize(PAnsiChar(aFileName), @filesize);
  end
  else
  begin
    filesize := GetFileSize (aFileName);
  end;
  realsize := 0;
  if (filesize <> $FFFFFFFF) then
  begin
    GetDiskFreeSpace(PChar(drive ), SectorPerCluster, BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters);
    ClusterSize := SectorPerCluster * BytesPerSector;
    if not ((filesize mod clustersize) = 0) then
    begin
      realsize := ((filesize div clustersize) * clustersize) + clustersize
    end
    else
    begin
      realsize := filesize;
    end;
  end;
  result := realsize;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#12

Re: Größe auf dem Datenträger ermitteln.

  Alt 20. Okt 2004, 10:17
Siehe auch Dateigröße auf Datenträger bestimmen für einen etwas anderen Lösungsansatz


Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Größe auf dem Datenträger ermitteln.

  Alt 20. Okt 2004, 10:41
Zitat von Steve:
Siehe auch Dateigröße auf Datenträger bestimmen für einen etwas anderen Lösungsansatz ...
*Grummel*
Warum habe ich das übersehen? Da hätte ich mir die Arbeit heute sparen können
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#14

Re: Größe auf dem Datenträger ermitteln.

  Alt 20. Okt 2004, 10:45
Zitat von Sharky:
Da hätte ich mir die Arbeit heute sparen können
'Tschuldigung
Wollt's noch hier rein posten, habs aber wohl gestern bissl vergessen...

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz