Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Somos los parias de la programación? (https://www.clubdelphi.com/foros/showthread.php?t=20584)

adebonis 19-04-2005 22:47:56

¿Somos los parias de la programación?
 
Hola.

Os expongo el caso, para mí incomprensible.

La Agencia Tributaria española tiene un ActiveX en un archivo .dll para realizar factura electrónicas (firmar digitalmente una factura) y al instalarlo Delphi me devuelve el mensaje de "Interfaz no compatible", en las Faqs de la Agencia Tributaria ya informa de este mensaje e indica que el ActiveX debe instalarse por REFERENCIA. Yo, la verdad, no sé cómo se instala por referencia en Delphi.

El caso es que envío un correo a la Agencia Tributaria pidiendo información y me contestan literalmente.

"Desconocemos Delphi, y el programador del ActiveX también, de todas formas el ActiveX debe funcionar por Referencia."

He quedado atónito. Desconocen Delphi!!!!, y tal como responden me quedaré sin poder utilizar el control ActiveX, y el caso es que lo necesito incorporar en mi aplicación, si no, adiós dinero.

Bueno. Si alguien es capaz de ayudarme, aunque sea pagando, se lo agradeceré.

Un saludo a todos.
Adolfo de Bonis Mora

mamcx 20-04-2005 00:07:49

Delphi no es el lenguaje mas conocido... eso es cierto. Pero lo de parias me parece exagerado. Por otro lado, yo desconozco a Ruby, TCL, Python y practicamente todo lo que me huela a C ;)

Si miras en https://sourceforge.net/softwaremap/...p?form_cat=160 veras que hasta hoy, hay inscritos 1761 proyectos. Teniendo en cuenta que son proyectos open source y se supone que PHP, C++, Java sobre plataforma Linux deberia ser casi lo unico, es un numero impresionante, y esta MUY por encima de Visual Basic.NET y Visual FoxPro y otros y sourceforge es *nix a la lata (Obviamente hay que tener en cuenta que en todo sourceforge hay varios proyectos muertos y que esto no es una estadistica de certeza absoluta, pero una buena indicacion)

Lo de instalarce por referencia? Prueba:

- Registra la dll con RegSvr32 que se encuentra en Windows\System32
- Dale un IMport de activeX. Si asi no funciona:
- Dale un import Type Library. Debe funcionar asi.

De todas maneras todo control activex se puede crear usando CreateOleObject (en tiempo de ejecucion) pero asi no tienes soporte a programacion tipada, mejor dicho, toca programar como si fuera un lenguaje de script.

Neftali [Germán.Estévez] 20-04-2005 10:33:10

Cita:

Empezado por adebonis
... y al instalarlo Delphi me devuelve el mensaje de "Interfaz no compatible", en las Faqs de la Agencia Tributaria ya informa de este mensaje e indica que el ActiveX debe instalarse por REFERENCIA. Yo, la verdad, no sé cómo se instala por referencia en Delphi.

Antes de nada debes registrar el componente con la siguiente línea de comandos:
regsvr32 AEATFACT.dll

Otra cosa, ¿No te deja instalarlo? o ¿No te deja colocar en un Form? Si es el segundo como me imagino, intenta crear el componnente por código sin arrastrarlo en diseño.

adebonis 20-04-2005 22:56:04

Hola.

Ok. Ya tenía registrada la dll.

Tienes razón. Me deja instalar el ActiveX pero no me deja colorcarlo en un Form.

El Caso es que incorporo el archivo tlb creado en mi aplicación y me es imposible acceder a sus métodos. Utilizo el siguiente código

procedure FacturaDigital;
var
MiFactura: Variant;
begin
MiFactura := CreateOleObject('TAeatFactCtl'); // Aquí me da el error
try
MiFactura.Firma('archivofactura, Nif, Facturadestino);
finally
MiFactura.Unassigned;
end;
end;

De aquí no paso. No sé mas. Si me das alguna idea lo agradeceré.

Gracias.
Adolfo Bonis Mora

roman 20-04-2005 23:05:39

Seguramente 'TAeatFactCtl' no es el nombre correcto del control. En la documentación o el servicio técnico debieran informarte cuál es el nombre correcto. Si no, posiblemente una búsqueda en el registro de Windows por el término AeatFactCtl te lleve al nombre adecuado.

Y por cierto, nada de parias. Que haya personas que consideren otros lenguajes como mejores que Delphi o incluso que consideren que Delphi es malo, es normal, todos tienen un punto de vista distinto. Pero si el programador del control ActiveX afirma que desconoce Delphi, entonces es simplemente que se trata de un soberbio, incapaz además, de dar el soporte requerido.

// Saludos

Neftali [Germán.Estévez] 21-04-2005 09:53:04

Cita:

Empezado por adebonis
De aquí no paso. No sé mas. Si me das alguna idea lo agradeceré.

Tal vez "meo fuera de tiesto", pero en el fichero TLB debes tener una declaración de la clase similar a ésta:

Código Delphi [-]
 TAeatFactCtl = class(TOleControl)
   private
     FIntf: IAeatFactCtl;
     function  GetControlInterface: IAeatFactCtl;
   protected
     procedure CreateControl;
     procedure InitControlData; override;
   public
     function FIRMA(const rutaOrigen: WideString; const certificado: WideString; 
                    const rutaDestino: WideString): WideString;
     function VERIFICA(const rutaOrigen: WideString; const rutaDestino: WideString): WideString;
     property  ControlInterface: IAeatFactCtl read GetControlInterface;
     property  DefaultInterface: IAeatFactCtl read GetControlInterface;
   published
   end;

¿Has probado a utilizarla de la forma estándard? TOLeControl (de la que deriva) posee el método create:

Código Delphi [-]
 constructor Create(AOwner: TComponent); override;

¿Has probado?

Código Delphi [-]
 var
   Fact:TAeatFactCtl ;
 begin
   Fact := TAeatFactCtl.Create(Self);
   try
     Fact.FIRMA(....
     Fact.VERIFICA(...
   finally
     Fact.Free;
   end;
   ...

adebonis 21-04-2005 23:12:16

Hola.

Si, ya he hecho lo que indicas, pero al ejecutar el programa y en el momento en que se ejecuta el método create muestra el mensaje "Interfaz no compatible" y adiós.

Lo de parias todavía creo que lo somos. Una cosa es que un programador no sepa qué es Delphi, pero otra cosa es que la Agencia Tributaria española no tenga en cuenta otro lenguaje de programación que no sea Visual basic, y encima me digan nue !!No lo conocen!!. Otra cosa sería que lo conocen pero que no han puesto ejemplos de utilización o que no tienen ganas de hacerlo.

En definitiva, sigo sin conseguir utilizar el componente.

Gracias.
Adolfo Bonis Mora

adebonis 25-04-2005 17:56:27

Hola.

Por fin he dado con el tema.

El código sería tal como este:

Factura := CreateOleObject('AeatFact.AeatFactCtl');
try
Salida := Factura.FIRMA(Inicio, Nif, Final);
finally
Factura := Unassigned;
end;


Gracias a todos.
Adolfo Bonis Mora
Barcelona

Neftali [Germán.Estévez] 25-04-2005 18:12:05

Cita:

Empezado por adebonis
...
Factura := CreateOleObject('AeatFact.AeatFactCtl');
...

Una pregunta. ¿Cómo llegaste a ésta línea?
En concreto de dónde sale ésto (simple curiosidad): 'AeatFact.AeatFactCtl'

adebonis 25-04-2005 20:03:42

Hola.

Bueno, me metí otra vez en las Faqs de la Agencia Tributaria y ví una en la que daba un ejemplo de utilización del componente en Visual basic en la que utilizaba la misma función "CreateOleObject" con el parámtero "AeatFact.AeatFactCtl". Así que lo probé y funcionó.

Un saludo
Adolfo Bonis Mora
Barcelona


La franja horaria es GMT +2. Ahora son las 09:27:07.

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