PDA

Ver la Versión Completa : y.... como... StringToChar ???


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

xander
17-05-2007, 04:19:29
Que tal así?

drive:=ADOQuery1.FieldByName('unidad').AsString;
if DiskInDrive(drive[1]) then .... //no funciona

MaMu
17-05-2007, 04:26:32
SOLUCIONADO

Gracias Xander


"Es increible que la solución siempre sea lo más elemental,
tan elemental que siempre la solución es increible" (Anónimo)

rruz
17-05-2007, 04:33:31
Algo asi ?

var
drive:char;
begin
drive:=ADOQuery1.FieldByName('unidad').AsString[1];
if DiskInDrive(drive) then ...