Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Wechseldatenträger erkennen ?

  Alt 28. Sep 2005, 15: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
  Mit Zitat antworten Zitat