|
Determinando si hay un disco/diskette/CD en una unidad de discos removibles
Copyright © 2000 Ernesto
De Spirito
IsDiskIn
El truco es llamar a la API GetDiskFreeSpace y devolver su valor
de retorno como boolean. La siguiente función toma la letra de
la unidad que se recibe como parámetro (por ejemplo 'A', 'D', etc.) y
devuelve True si hay un disco en la unidad, o False si no es así.
uses Windows;
var
CaminoUnidad: array [0..3] of char = 'A:\';
function IsDiskIn(unidad: char): boolean;
var
d1, d2, d3, d4: longword;
begin
CaminoUnidad[0] := unidad;
Result := GetDiskFreeSpace(CaminoUnidad, d1, d2, d3, d4);
end;
En la implementación usamos una cadena terminada en nulo inicializada
(CaminoUnidad) que contiene el directorio raíz de la
unidad A: y sustituimos la letra de la unidad por la
que se pasa como parámetro antes de llamar a GetDiskFreeSpace.
Llamada de ejemplo
procedure TForm1.Button1Click(Sender: TObject);
begin
if not IsDiskIn('A') then
ShowMessage('La unidad A: no está lista');
end;
|