Mega Code Archive

 
Categories / Delphi / Hardware
 

Determining if there is a diskdisketteCD in a removable disk drive

Title: Determining if there is a disk/diskette/CD in a removable-disk drive Question: How can I know if there is a CD in the CD drive? Answer: The trick is done by calling the API GetDiskFreeSpace and returning its return value as a boolean. The following function takes the drive letter as a parameter (for example 'A', 'D', etc.) and returns True if there is a disk in the drive, or False if not. var DrivePath: array [0..3] of char = 'A:\'; function IsDiskIn(drive: char): boolean; var d1, d2, d3, d4: longword; begin DrivePath[0] := drive; Result := GetDiskFreeSpace(DrivePath, d1, d2, d3, d4); end; In the implementation we use an initialized null-terminated string (DrivePath) that contains the root directory of drive A: and we substitute the drive letter with the one passed as parameter before calling GetDiskFreeSpace. Sample call ----------- procedure TForm1.Button1Click(Sender: TObject); begin if not IsDiskIn('A') then ShowMessage('Drive A: Not Ready'); end;