[Back to DRIVES SWAG index] [Back to Main SWAG index] [Original]
{ JW³ How do I detect active drives in Pascal? My Program would crash if you
³ Typed in a non-existent drive as either source or destination.
Here's the method I use:
}
Uses
Dos;
Var
Isthere : Boolean;
Function ChangeDrive( drv: Char ): Boolean;
(*
Takes drive letter as parameter, returns True if change
succeeded, False if change failed (invalid drive)
*)
Var
Regs: Dos.Registers;
NewDrv: Byte;
begin
(* Calculate drive code For desired drive *)
NewDrv := orD( UpCase( drv ) ) - orD( 'A' ); (* A: = 0 *)
(* Change drive *)
Regs.DL := NewDrv;
Regs.AH := $0E; (* Function 0Eh: Select Disk *)
MSDos( Regs );
(* See if the change 'took' *)
Regs.AH := $19; (* Function 19h: Get current drive *)
MSDos( Regs );
ChangeDrive := (Regs.AL = NewDrv);
end; (* ChangeDrive *)
begin
isthere := ChangeDrive('a');
Writeln ('a: ',isthere);
isthere := ChangeDrive('b');
Writeln ('b: ',isthere);
isthere := ChangeDrive('c');
Writeln ('c: ',isthere);
isthere := ChangeDrive('d');
Writeln ('d: ',isthere);
isthere := ChangeDrive('e');
Writeln ('e: ',isthere);
end.
[Back to DRIVES SWAG index] [Back to Main SWAG index] [Original]