Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   y.... como... StringToChar ??? (https://www.clubdelphi.com/foros/showthread.php?t=43657)

MaMu 17-05-2007 04:03:48

y.... como... StringToChar ???
 
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:

Código Delphi [-]
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

Código Delphi [-]
...
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í?
Código Delphi [-]
    drive:=ADOQuery1.FieldByName('unidad').AsString;
    if  DiskInDrive(drive[1]) then .... //no funciona

MaMu 17-05-2007 04:26:32

SOLUCIONADO

Gracias Xander


Código Delphi [-]
"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 ...




La franja horaria es GMT +2. Ahora son las 11:35:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi