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

    {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;

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