![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
A continuación escribo la función del DLL (el manual esta escrito para VB)
Int EnrollUser(char *Template, char *ImagePath, char *GuideMessage, HWND Owner, int x1, int y1, int x2, int y2, int Core) y esta es mi función en delphi type TEnroll = function(Out Template char; ImagePath char;Out GuideMessage char;HOwner,x1,y1,x2,y2,Core :integer): integer; stdcall;Te agradeceré muchisimo si me explicas un poco acerca de "dimensionar" |
|
#2
|
||||
|
||||
|
hola...
desconozco VB, pero creo tu "traslado" de la función es correcta ... tal vez si pusieras parte del codigo desde donde la llamas (incluyendo las variables que asignas a la llamada) podriamos ver si es por ahi donde esta la falla... saludos... |
|
#3
|
|||
|
|||
|
type
TEnroll = function(Out Template :Pchar; ImagePath char; Out GuideMessage :Pchar;HOwner,x1,y1,x2,y2,Core :integer): integer; stdcall; TEstaELDedo = function(): Integer; stdcall; TCapturaFP = procedure(HOwner,x1,y1,x2,y2,Core :integer); stdcall; var Form1: TForm1; implementation {$R *.dfm} {$H+} procedure TForm1.EnrollClick(Sender: TObject); var hLib: Cardinal; Enrola: TEnroll; Template,GuideMessage : Pchar; res : integer; begin hLib := LoadLibrary('UF100.DLL'); Enrola := GetProcAddress(hLib,'EnrollUser'); res := Enrola(Template,'D:\MIENTRAS\prueba.bmp',GuideMessage,Form1.Handle,0,0,0,0,1); Memo1.Lines.Add('Enrola :'+intToStr(Res)); FreeLibrary(hLib); end; |
|
#4
|
||||
|
||||
|
hola...
al ver tu función creo que el problema esta en que si, efectivamente declaras una variable de tipo PChar, pero esta apunta a ningun lado, por lo que al tratar la función de ponerte en ella los resultados pues te manda el error que mencionas, lo que tienes que hacer es "reservar" para esa variable (apuntador) el espacio de memoria suficiente para valor de retorno... para un manejo mas sencillo yo cambiaria algunas lineas como sigue : asi me ha funcionado, pero en el foro hay personas mas versadas en estos manejos por lo que puede que alguien te de una mejor sugerencia. espero te sirva... saludos... |
|
#5
|
|||
|
|||
|
Ya casi salgo del problema, ahora solo me marca el siguiente error, lamentablemente no sé como resolverlo:
en la linea: res := Enrola(PChar(Template),'D:\MIENTRAS\prueba.bmp',PChar(GuideMessage) , Form1.Handle,0,0,0,0,1); [Error] PruebaHuella.pas(53): Constant object cannot be passed as var parameter Espero me puedas ayudar. Te agradezco mucho |
|
#6
|
||||
|
||||
|
hola...
bueno es cierto, no habia notado ese detalle, si te fijas es del mismo tipo de parametros que los otros dos, por lo que no puedes pasar un valor constante, en este caso una cadena literal, lo que debes hacer es simplemente definir una variable asi: espero te ayude... saludos... |
|
#7
|
|||
|
|||
|
Sigo con error, ya intente usar GetMem pero marca el mismo error.
Me parece que debo cambiar de utilerías..... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|