하드디스크의 총용량/남은용량을 계산하여
텍스트로 표시해주고 싶습니다.
예제를 찾아서 해보았는데..에러만 납니다.
var
FreeBytesAvailableToCaller,
TotalNumberOfBytes :TLargeInteger;
TotalNumberOfFreeBytes :PLargeInteger;
begin
GetDiskFreeSpaceEx(PChar('C:'),FreeBytesAvailableToCaller,TotalNumberOfBytes,TotalNumberOfFreeBytes);
에러 : access violation error at read address....요렇게여.
한번 해보시고여,., 제대로 되시는 분 조언부탁드립니다.
뭘 선언을 안해줘서 그러는가여???
쩝./
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function GetDiskFreeSpaceEx(lpDirectoryName: PChar;
var lpFreeBytesAvailableToCaller,lpTotalNumberOfBytes,
lpTotalNumberOfFreeBytes: LONGLONG): BOOL;
stdcall; external 'KERNEL32.DLL' name 'GetDiskFreeSpaceExA';
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
FreeBytesAvailableToCaller,
TotalNumberOfBytes,
TotalNumberOfFreeBytes : LONGLONG;
begin
GetDiskFreeSpaceEx(PChar('C:'), FreeBytesAvailableToCaller, TotalNumberOfBytes,
TotalNumberOfFreeBytes);
ShowMessage('총용량 : ' + FormatFloat('#,', TotalNumberOfBytes) +
' 바이트, 남은용량 : ' + FormatFloat('#,', TotalNumberOfFreeBytes) +
' 바이트');
end;
end.