Contributor: AHTO TANNER


{With my last project if a disk is not in say one of the Floppy drives
or my CDRom drive it will crash so i used this function that borland
suggest
}

function DiskInDrive(Drive: Char): Boolean;
var
  ErrorMode: word;

ok it stops the program from crashing but it shows
I/O 32 error message the question is how do i show them another message
telling the user that thay need to pop in a disk.
And pop the Drive Combo box back to the Hard Drive.
<<<<<<<<<<<<<<<<<<

I'm using the following snippet in cmbDrive.OnChange event. Be sure NOT
to connect lstDir through DirList property of cmbDrive. It's a bit like a
batch file, but it works for me OK in Delphi 2 :)

procedure TfrmMain.cmbDriveChange(Sender: TObject);
var
   OldDrive: char;

label
   Retry;

   function SetDrive(const NewDrive: char): boolean;
   begin
      try
         lstDir.Drive := NewDrive;
         Result := true;
      except
         Result := false;
      end;
   end;

begin

Retry:
   OldDrive := lstDir.Drive;

   if not SetDrive(cmbDrive.Drive) then begin
      beep;
      if MessageBox(Handle, PChar(UpperCase(cmbDrive.Drive) + ':\ is not accessible.'#13#13'Drive not ready.'),
         'Error', mb_RetryCancel or mb_IconStop or mb_DefButton1) =
IDRETRY then
            goto Retry
      else
         begin
            lstDir.Drive := OldDrive;
            cmbDrive.Drive := lstDir.Drive;
         end;
   end;

end;