Ver Mensaje Individual
  #5  
Antiguo 23-11-2018
omarperez.qui omarperez.qui is offline
Miembro
 
Registrado: ago 2006
Posts: 26
Reputación: 0
omarperez.qui Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
¿Donde falla el código?

La dll debe estar en la carpeta del ejecutable o estar registrada en la ruta Windows\System32. El ejemplo que pones se basa en localizar el puntero a la función exportada por la dll de forma dinámica con GetProcAddress. Lo primero que hay que ver es donde está fallando, si es en la importación dinámica o en la ejecución.

Cuando una función exportada estilo C espera un puntero, desde delphi puede declararse como paso por referencia sin problemas que es como está en el ejemplo que muestras.
Las cadenas pueden ser estilo clasico o unicode, no sebemos que estilo dtiene esa dll, al menos no lo sabemos en el foro. puedes forsar la declaración con PAnsiChar que funcionará si tu delphi usa Unicode por defecto y la dll usa Char clasico (AnsiChar)



Prueva a declararla así:
Código Delphi [-]
TConsultarVersionDll = function (descripcion: PAnsiChar; descripcion_largo_maximo: integer; var mayor: integer; var menor: integer): integer; stdcall;

Saludos.
Hola escafandra, gracias por tu respuesta.
La dll se carga y funciona. Las funciones que no llevan parametros son bien aceptados por la impresora. El tema son los parametros.
Probe de la forma que me has indicado, no se cual de los parametros sera el problema. Tendria que comenzar con alguna funcion que tenga un solo parametro a ver que pasa.
La documentacion de la dll es la que puse al comienzo del post.
He probado usando punteros en los parametros Integer, he usado "var" para el 1e parametro, He usado widestring, pchar, string, pstring, ansistring....ya no que poner.
El codigo de error que me devuelve en todos los casos es 83886082 que no hay referencia en los documentos de epson.

Saludos
Responder Con Cita