Some Delphi functions use a byte variable instead of a character when dealing with drives. I created this function to give me a number equivalent of a drive (1 = A, 2 = B, etc.). To get the drive letter given a number, see GetDriveLetter().
functionGetDriveNumber(Drive: char): byte; { func to return the drive number. Ex: A = 1, B = 2, C = 3, etc. } var DriveStr: string; begin DriveStr := UpperCase(Drive); if DriveStr[1] in ['A'..'Z'] then Result := ord(DriveStr[1]) - ord('A') + 1 else Result := 0; end;