MaMu
17-05-2007, 04:03:48
Resulta que yo uso una funcion booleana para determinar si un disco esta preparado, como es el caso de determinar si hay un diskette en la unidad A, la funcion es la siguiente:
function DiskInDrive(Drive: Char): Boolean;
var
ErrorMode: word;
begin
{ make it upper case }
if Drive in ['a'..'z'] then Dec(Drive, $20);
{ make sure it's a letter }
if not (Drive in ['A'..'Z']) then
raise EConvertError.Create('Not a valid drive ID');
{ turn off critical errors }
ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
try
{ drive 1 = a, 2 = b, 3 = c, etc. }
if DiskSize(Ord(Drive) - $40) = -1 then
Result := False
else
Result := True;
finally
{ restore old error mode }
SetErrorMode(ErrorMode);
end;
end;
Pero el tema esta, en que las unidades a verificar si estan listas, las debo tomar si o si de una base de datos access, pero estan en un campo de tipo string, y no se como puedo pasar ese string[1] a Char, ya que haciendo lo siguiente, no me funciona
...
var
drive:string;
begin
drive:=ADOQuery1.FieldByName('unidad').AsString;
if DiskInDrive(pChar(drive)) then .... //no funciona
.....
Por lo que no se como hacer para pasar ese string de 1 caracter a Char.
Alguna idea, sugerencia????
Saludos y Gracias
function DiskInDrive(Drive: Char): Boolean;
var
ErrorMode: word;
begin
{ make it upper case }
if Drive in ['a'..'z'] then Dec(Drive, $20);
{ make sure it's a letter }
if not (Drive in ['A'..'Z']) then
raise EConvertError.Create('Not a valid drive ID');
{ turn off critical errors }
ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
try
{ drive 1 = a, 2 = b, 3 = c, etc. }
if DiskSize(Ord(Drive) - $40) = -1 then
Result := False
else
Result := True;
finally
{ restore old error mode }
SetErrorMode(ErrorMode);
end;
end;
Pero el tema esta, en que las unidades a verificar si estan listas, las debo tomar si o si de una base de datos access, pero estan en un campo de tipo string, y no se como puedo pasar ese string[1] a Char, ya que haciendo lo siguiente, no me funciona
...
var
drive:string;
begin
drive:=ADOQuery1.FieldByName('unidad').AsString;
if DiskInDrive(pChar(drive)) then .... //no funciona
.....
Por lo que no se como hacer para pasar ese string de 1 caracter a Char.
Alguna idea, sugerencia????
Saludos y Gracias