Re: Int64 und Delphi 3
Hallo,
Zitat:
Delphi-Quellcode:
und GetDiskFreeSpaceEx wird mit Int64 unter Delphi 3 so auch nicht funktionieren,
function DiskSize(Drive: Byte): Integer;
da es so deklariert ist:
Delphi-Quellcode:
@Ati:
function GetDiskFreeSpaceEx(lpDirectoryName: PChar;
var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes: Integer; lpTotalNumberOfFreeBytes: PInteger): BOOL; stdcall; Hast Du das Programm in der Zip (http://www.efg2.com/Lab/Library/Delp...paceKludge.ZIP) aus meinem Beitrag ausprobiert? Es liefert richtige Werte, zumindest bei XP. Das tut der folgende Code, den ich so ähnlich unter XP und NT nutze, auch:
Delphi-Quellcode:
Das sagt Microsoft dazu:
procedure TForm1.Button1Click(Sender: TObject);
var SectorsPerCluster, BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters : DWORD; Cluster, Gesamt, Frei: double; begin GetDiskFreeSpace(PChar('C:\'), SectorsPerCluster, BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters); Cluster := SectorsPerCluster * BytesPerSector; Gesamt := Cluster * TotalNumberOfClusters; Frei := Cluster * NumberOfFreeClusters; showmessage('Freier Speicherplatz: '+FormatFloat('#,##0',Frei)); showmessage('Gesamte Speichergröße: '+FormatFloat('#,##0',Gesamt)); end; GetDiskFreeSpace |
Re: Int64 und Delphi 3
@Flocke
Dein Code funktioniert so nicht. Delphi meckert bei LARGE_INTEGER (undefinierter Bezeichner). Auch einändern in TLargeInteger bringt nichts. Auch eine Fehlermeldung: "Die Typen der tatsächlichen und formalen Var-Parametermüssen übereinstimmen" @Lannes Dein Code funktioniert einwandfrei. Vielen Dank werde mir den Code nochmal genauer anschauen um ihn auch wirklich zu verstehen!!!! Ati |
Re: Int64 und Delphi 3
Zitat:
Wenn die Deklaration von Lannes richtig ist, dann müsstest du es so schreiben können:
Delphi-Quellcode:
Die Variante von Lannes wird aber dasselbe ausrechnen.
var
iFreeBytesAvailable, iTotalNumberOfBytes, iTotalNumberOfFreeBytes: LARGE_INTEGER; xFreeBytesAvailable, xTotalNumberOfBytes, xTotalNumberOfFreeBytes: Extended; begin GetDiskFreeSpaceEx('C:', PInteger(@iFreeBytesAvailable)^, PInteger(@iTotalNumberOfBytes)^, PInteger(@iTotalNumberOfFreeBytes)); xFreeBytesAvailable := LoadInt64(iFreeBytesAvailable); ... end; |
Re: Int64 und Delphi 3
Hi,
Zitat:
In Delphi 3 scheint das wirklich nicht zu klappen! Wenn ich meinen Code mit Delphi 7 mache, klappt alles ohne Probleme. :wink: MfG Marc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 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