FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con UDF
Buen dia despues de estar en una ardua investigacion de las udf y darle un ojo al articulo de UDF de este foro, no puedo resolver este problema intento crear una udf que contiene un codigo siemple y sin chiste, como prueba para crear la libreria que necesito para mi aplicacion , pero no he podido con la prueba , esto es lo que he hecho pero no encuentro porque no funciona
Esta es mi DLL Código:
unit Unit1; interface function StrMid(pCadena : String; iIndex : Integer ; iNum : integer) : ShortString; cdecl; export; implementation function StrMid(pCadena : String; iIndex : Integer ; iNum : integer) : ShortString; begin result := copy(pCadena,iIndex,Inum); end; end. Código:
DECLARE EXTERNAL FUNCTION F_FSSTRMID CSTRING(256) CHARACTER SET NONE, INTEGER, INTEGER RETURNS CSTRING(256) CHARACTER SET NONE FREE_IT ENTRY_POINT 'StrMid' MODULE_NAME 'fsStrMid'; Código:
select SUS_IDUSUARIO from S_USUARIO WHERE SUS_IDUSUARIO = cast(F_FSSTRMID('123',1,1) as integer) Bueno de antemano muchas gracias
__________________
Edgar Talavera |
#2
|
|||
|
|||
Tienes un error con los parametros, las UDF solo aceptan parametros por referencia y no acepta strings, tienes qe usar pchar en su lugar.
function StrMid(pCadena : String; iIndex : Integer ; iNum : integer) : ShortString; cdecl; export; sería: function StrMid(pCadena : pchar; var iIndex : Integer ; var iNum : integer) : pchar; cdecl; export; |
#3
|
||||
|
||||
Holas,
Utilizo Delphi 7.0 interbase 7.1. Escribo estas lineas, no para dar respuesa a este hilo si para invocar ayuda a uds. Original de EITB
El asunto es que yo para crar una DLL hago siguiente, Elijo la Opcion <File/New/Other...> alli aparce un folder con muchas pestañas y elijo <New> dentro de esta hay un icono que dice <DLL wizard>.. le hago click Me aparece el siguiente codigo:
Teniendo esta estructura procedi a crear mi funcion asi: Procedi a compilarlo y me resulto <project1.dll> y lo copie a la carpeta BIN de interbase. Abri mi ibexpert y declare mi funcion asi: Hasta alli todo parece correcto, pero cuando intento utilizar dicha funcion.. Me envia el siguiente error: Código:
Invalid token. invalid request BLR at offset 78. function SUMA_01 is not defined. module name or entrypoint could not be found. Si alguien pudiera detallar la forma de crear funciones definidas por el usuario en delphi les estaremos agradecidos.. Your friend, StartKill Lima-Perú |
#4
|
|||
|
|||
Cita:
__________________
Edgar Talavera |
#5
|
||||
|
||||
Holas EITB, tambien lo copie y envia otro error, no me acuerdo en estos momento el mensaje de error..
Pero seria muy servicial de tu parte que explicaras como creas una dll, por que si te das cuenta el codigo que tengo es totalmente diferente al tuyo. Para no abusar de tu tiempo, lo podrias enviar a mi correo StartKill@hotmail.com y ya con paciencia lo pego en el hilo <con tu permiso>. A la espera de tu ayuda. Your friend, StartKill Lima-Perú |
#6
|
||||
|
||||
Holas,
My friend EITB, no he olvidado el e-mail que enviaste... te agradesco el gesto de ayuda... Quedó una promesa pendiente con respecto a pegar el codigo que enviaras..., para los interesados alli lo tienen: Email de EITB Código:
Sigo los mismos pasas que tu New -> DLL Creo una nueva unit para mis funciones pongo su prototipo hago su implementacion y pongo la clausula Exports en la parte de DLL con el nombre de la funcion Te mando el codigo de la dll para que la veas despues de eso tube que hacer otra funcion para trabajar con fechas y los integer en los parametros tambien me dieron problemas en interbase , parece que nada mas le gustan los pchar asi que te recomiento que lo manejes asi todos los parametros en pchar y ya dentro de tu dll los cambies al tipo que le corresponda de cualquier forma el pchar lo puedes convertir como si fuera una cadena , que al final siempre apunta a una espero que te sirva y suerte EITB
Y como archivo final nuestro *.pas
Your friend, StartKill Lima-Perú |
|
|
|