Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Providers (https://www.clubdelphi.com/foros/forumdisplay.php?f=10)
-   -   Acceder a Biblioteca COM Desde Delphi (https://www.clubdelphi.com/foros/showthread.php?t=94791)

novato_erick 19-07-2020 23:09:42

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

Neftali [Germán.Estévez] 20-07-2020 09:24:52

Cita:

Empezado por novato_erick (Mensaje 538010)
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:
....

Estaría bien que comentaras si el código te da algún problema, algún error o si simplemente no funciona.
No nos has dicho cual es el resultado de ejecutarlo.

cloayza 20-07-2020 17:03:56

De verdad poco aportas...solo hay que deducir...

Bueno
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);
    TipoFinal:=@Tipo //TipoFinal da la impresión que es un puntero a TSafeArrayBound...
    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;

Saludos cordiales


La franja horaria es GMT +2. Ahora son las 10:38:17.

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