Ver Mensaje Individual
  #11  
Antiguo 06-09-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Alan_B.

Primero analicemos la funcion USBOpenDriver:
Código Delphi [-]
Function USBOpenDriver:boolean;
begin
  USBPORT := CreateFile('\\?\USB1', GENERIC_WRITE or GENERIC_READ,
  FILE_SHARE_WRITE or FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED OR FILE_ATTRIBUTE_NORMAL, 0);
  USBOpenDriver:= USBPORT <> INVALID_HANDLE_VALUE;
  if USBPORT = INVALID_HANDLE_VALUE then // error at open port
    result:=false
  else
    result:=true;
end;
  1. Llama a la función CreateFile cuyos detalles podes mirar aquí:CrateFile function. El resultado queda en la variable USBPORT de tipo THandle.
  2. Asigna a la variable USBPORT el valor obtenido de comparar el resultado de CreateFile con INVALID_HANDLE_VALUE. Esta línea la veo redundante y prescindible(excepto para guardar compatibilidad con Pascal).
  3. Nuevamente evalua y asigna el resultado.

Particularmente y sin conocer sobre celulares, la hubiera escrito así:
Código Delphi [-]
function USBOpenDriver(PathToPhone: string):boolean;
begin
  USBPORT := CreateFile(PChar(PathToPhone), GENERIC_WRITE or GENERIC_READ,
    FILE_SHARE_WRITE or FILE_SHARE_READ, nil, OPEN_EXISTING,
    FILE_FLAG_OVERLAPPED OR FILE_ATTRIBUTE_NORMAL, 0);
  Result := USBPORT <> INVALID_HANDLE_VALUE
end;

La llamada correcta a la función es el que te sugirió cloayza, por ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not USBOpenDriver then  // error
    raise Exception.Create('No se encuentra el celular');
  // demas operaciones
  // ...

end;
Supongo que si la función te muestra el error, será debido a que no encuentra la ruta, pero hasta allí llegan mis conocimientos sobre rutas a celulares...

También podés reescribir la función USBOpenDriver para que admita diferentes rutas
Código Delphi [-]
function USBOpenDriver(PathToPhone: string):boolean;
begin
  USBPORT := CreateFile(PChar(PathToPhone), GENERIC_WRITE or GENERIC_READ,
    FILE_SHARE_WRITE or FILE_SHARE_READ, nil, OPEN_EXISTING,
    FILE_FLAG_OVERLAPPED OR FILE_ATTRIBUTE_NORMAL, 0);
  Result := USBPORT <> INVALID_HANDLE_VALUE
end;
y luego recompilar la unidad...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita