Ver Mensaje Individual
  #1  
Antiguo 19-07-2020
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 397
Reputación: 16
novato_erick Va por buen camino
Acceder a Biblioteca COM Desde Delphi

Estimado Sres:

Siempre es un placer utilizar este recurso para evacuar mi dudas y en lo posible dar colaboración pero 🤔 bien recibo más ayuda 😁. Gracias por esa parte.

Al grano:



requiero utilizar una biblioteca creada en Visual Studio ya que requiero conectar una balanza ZEBRA MP7001 para realizar lectura de Peso, la documentación de la misma esta en su sitio dejo aquí el enlace del SDK.

en fin tengo la duda más importante:
al realizar esto:

Código Delphi [-]
//En la unidad este es el procedimiento
procedure TCCoreScanner.Open(appHandle: Integer; sfTypes: PSafeArray;
  lengthOfTypes: Smallint; out status: Integer);
begin
  DefaultInterface.Open(appHandle, sfTypes, lengthOfTypes, status);
end;


// Para hacer una prueba de conexión hago esto según la documentación esto en C++ estos son los tipos de Valores para la entrada 
{
HRESULT STDMETHODCALLTYPE Open(
/* [in] */ LONG reserved,
/* [in] */ SAFEARRAY * sfTypes, --Aqui donde no logro definir el tipo de valor para Delphi 
/* [in] */ SHORT lengthOfTypes,
/* [out] */ LONG *status) = 0;
}

procedure TForm1.btnWeightsClick(Sender: TObject);
var
   Encabezado, Estado: Integer;
  Tipo: array[0..0] of TSafeArrayBound;
  TipoFinal: PSafeArray;
  NumeberOfScannerTypes: SmallInt;
  Conectador: TCCoreScanner;
begin
    Conectador := TCCoreScanner.Create(Self);
    try
    Tipo[0].lLbound := 0;
    Tipo[0].cElements := 10;
    TipoFinal := SafeArrayCreate(VT_I1,1, Tipo);
    NumeberOfScannerTypes := 1;  //SCANNER_TYPES_ALL Todos los tipos de Scaner que encuentra
    Conectador.Open(0, TipoFinal, NumeberOfScannerTypes, Estado);
    if Estado = 0 then
    begin
      lblEstadoEscaner.Caption := 'CoreScanner API: Open successful';
    end
    else
    begin
      lblEstadoEscaner.Caption := 'CoreScanner API: Open Failed';
    end;
  finally
    Conectador.Free;
    SafeArrayDestroy(TipoFinal);
  end;
end;

Agradeciendo su ayuda;

Saludos;

novato_erick
Responder Con Cita