Sorry, the serial number is usually expressed in hex. So the following
is slightly better:
procedure TForm1.Button1Click(Sender: TObject);
var drive :string;
begin
drive:='c:\';
case GetDriveType(@drive[1]) of
DRIVE_UNKNOWN :ShowMessage('DRIVE_UNKNOWN');
DRIVE_NO_ROOT_DIR :ShowMessage('DRIVE_NO_ROOT_DIR');
DRIVE_REMOVABLE :ShowMessage('DRIVE_REMOVABLE');
DRIVE_FIXED :ShowMessage('DRIVE_FIXED');
DRIVE_REMOTE :ShowMessage('DRIVE_REMOTE');
DRIVE_CDROM :ShowMessage('DRIVE_CDROM');
DRIVE_RAMDISK :ShowMessage('DRIVE_RAMDISK');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
drive:string;
VolumeName,FileSystemName:array[0..256]of char;
SerialNumber,MaximumComponentLength,FileSystemFlags:DWORD;
begin
drive:='c:\';
if GetVolumeInformation(@drive[1], VolumeName, length(VolumeName),
@SerialNumber, MaximumComponentLength,
FileSystemFlags, FileSystemName,
length(FileSystemName)) then
ShowMessage('Disk '+drive+' has a serial number of
'+IntToHex(SerialNumber,8))
else
raise Exception.CreateFmt('GetVolumeInformation failed. ErrorCode %d
: %s',
[GetLastError,SysErrorMessage(GetLastError)]);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
AnyDirectoryNameOnDisk:string;
FreeBytesAvailable,
TotalNumberOfBytes,
TotalNumberOfFreeBytes:TLargeInteger;
begin
AnyDirectoryNameOnDisk:='c:\temp\';
if GetDiskFreeSpaceEx(@AnyDirectoryNameOnDisk[1],
FreeBytesAvailable,
TotalNumberOfBytes,
@TotalNumberOfFreeBytes) then
ShowMessage('Disk size of c: is '+IntToStr(TotalNumberOfBytes div
(1024*1024*1024))+'GB')
else
raise Exception.CreateFmt('GetDiskFreeSpaceEx failed. ErrorCode %d :
%s',
[GetLastError,SysErrorMessage(GetLastError)]);
end;
_______________________________________________
Delphi mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi