Registriert seit: 2. Mär 2004
5.508 Beiträge
Delphi 5 Professional
|
Re: Wechseldatenträger erkennen ?
28. Sep 2005, 16:27
Die ersten beiden Probleme sind nun gelöst, aber wie kann man feststellen, ob man schreiben darf ?
Und zwar ohne eine Dummydatei zu erzeugen und kompatibel zu allen Win32 Versionen.
Das Flag FILE_READ_ONLY_VOLUME gibt's erst ab WinXP aufwärts
Delphi-Quellcode:
function GetDriveName(const path:string):string;
begin
Result := ExtractFileDrive(path);
if Result <> '' then
Result := Result+ '\';
end;
function IsRemovableDrive(const path:string):Boolean;
var
vol : string;
begin
vol := GetDriveName(path);
if vol = '' then
Result := False
else
Result := GetDriveType(PChar(vol))=DRIVE_REMOVABLE;
end;
function IsDriveAvailable(const path:string):Boolean;
var
vol : string;
maxcomplen : DWORD;
flags : Cardinal;
begin
vol := GetDriveName(path);
if vol = '' then
Result := False
else
Result := GetVolumeInformation(PChar(vol), nil, 0, nil, maxcomplen, flags, nil, 0);
end;
// Prüfen, ob ein Volume beschreibbar ist
function IsVolumeOK(const path:string):Boolean;
begin
if IsRemovableDrive(path) then
begin
Result := IsDriveAvailable(path);
while not Result do
begin
if (MessageDlg('Please insert Disk in Drive '+GetDriveName(path), mtWarning, [mbOK, mbCancel], 0) = mrCancel) then
Exit;
Result := IsDriveAvailable(path);
end;
end
else
Result := IsDriveAvailable(path);
end;
Andreas
|
|
Zitat
|