[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]

{
Here is a function I've written to test if a disk is in a drive (without
generating the Windows error message).  There may be a better way of doing
it in Delphi 2, but this is how it's done in Delphi 1.x:
}

function DiskExists(Drive: Char): Boolean;
var
  ErrorMode: Word;
begin
  Drive := UpCase(Drive);
  { Make sure drive is a valid letter }
  if not (Drive in ['A'..'Z']) then
    raise EConvertError.Create('Not a valid drive letter');
  { Turn off critical errors }
  ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
  try
    Application.ProcessMessages;
    Result := (DiskSize(Ord(Drive) - Ord('A') + 1) <> -1);
  finally
    { Restore the old error mode }
    SetErrorMode(ErrorMode);
    Application.ProcessMessages;
  end;
end;

If you want to test if a drive exists, with or without a disk in it, the
take a look at the API call GetDriveType()...


[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]