![]() |
Como llamar a una DLL de Windows u otras externas
Hola a todo el foro.
Hacia varios años que no escribia por aqui. He creado una Dll, ADD.DLL , que suma o resta 2 numeros, es muy sencilla porque la uso de pruebas, para ver la compatibilidad con varios lenguajes. Me va bien en Visual Basic 6, VB.Net 2010 y SharpDevelop , incluso sin registrar la Dll en el sistema, y teniendolas en la misma carpeta que el EXE en estos lenguajes las declaro asi...... Private Declare Function SumaNumeros Lib "add.dll" (ByVal a As Integer, ByVal b As Integer) As Integer Private Declare Function RestaNumeros Lib "add.dll" (ByVal a As Integer, ByVal b As Integer) As Integer Ahora quiero probarlas en Delphi, tengo la version 7, o si puede ser, en Lazarus de FreePascal, ya que quiero probar si son compatibles con otros lenguajes que no sean Basic. Ojo, no se programar en Delphi, pero tampoco me suena todo a chino, je je Antes de escribir en el foro, he buscado por Google, me sale la funcion DLLIMPORT , pero solo suele haber ejemplos para DLLs propias de windows, y los ejemplos Y tambien, he leido algo de STDCALL y CDECL , que no tengo muy claro lo que es. Muchas gracias a todos por adelantado. Saludos desde España!!! |
Por lo que se, que no es mucho, te comento a ver si te da alguna pista o algún hilo a partir del cual tirar...
Diría que las DLLs que implementes en Visual o en C# las puedes usar desde delphi utilizando COM. Deberás registrarlas y desde Delphi usar las opciones de importación y no deberías tener mayores problemas. DLLImport (si es lo mismo que me suena a mi) es una opción que puedes usar desde .NET para generar DLL's, que pluego puedes usar desde delphi con un LoadLibrary, sin necesidad de registrarlas. Es decir, que te simplifica mucho las cosas. Te pongo algo de código (de memoria) de cómo sería la Definición/llamada en Delphi; Suponiendo que hayas conseguido usar DLLImport y puedas usarla directament sn registrar.
Revisa este link: http://es.uwenku.com/question/p-wjnivalk-bx.html Explica lo mismo creo, con algunos detalles más. |
Hola a todos !!!
Neftali, muchas gracias, ya pude solucionarlo lo de Suma y Resta, con un conversor de VB6 a Delphi. Tu ejemplo lo probe, y no me dejaba compilar, me daba errores al cargar la DLL. La Dll anterior se llamaba add.dll, aqui es fb_dll.dll, es la misma, solo que añadi las funciones Mayusculas y Minusculas. La DLL la he creado con freebasic, y este es el codigo de la funciones dentro la DLL, por si sirve de algo. Las 4 funciones, van bien en Visual Basic 6, VB.Net 2010, SharpDevelop y ThinBasic ( en ThinBasic tengo que declarar las funciones como alias, pero es cosa del compilador, me lo dijo el autor)
Este es el codigo sacado del conversor de VB6, a Delphi o Lazarus. Para los numeros me va bien. Pero vi que no me va bien para los string.....
Realmente esta Dll es para usar en VB o Basic, pero si puedo usarla en mas lenguajes, como por ejemplo Delphi, pues mucho mejor. Gracias a todos y que tengan un buen dia !!!!!! Saludos !!!!! |
Gracias por compartirlo.
^\||/^\||/^\||/^\||/^\||/ |
De nada Neftali.
Pero piensa, que solo funcionan las Sumas y Restas, pero "NO" las Mayusculas ni Minusculas. Pero es una forma sencilla de llamar a una Dll. A ver si alguien sabe como hacerlo en Delphi, ya que en VB y demas va bien Mayusculas y Minusculas. Saludosss!!! |
Cita:
No puedes usar string para DLLs. tendrías que cambiarlo por PChar o PAnsiChar. |
O sea, en el codigo de delphi o Lazarus....
function Mayusculas(Texto: String): String; stdcall; external 'fb_dll.dll' name 'Mayusculas'; Tengo que cambiar String por Pchar o PAnsichar??? Lo probare, gracias!!!! |
Si. Primero prueba con PAnsiChar.
Para trabajar con DLLs lo normal es usar punteros y eso se traduce en PChar o PAnsiChar/PWideChar. |
Netfali !!!!!!!
Era por estooooo !!!! #:-)##:-)##:-)# Ya lo probe con PAnsiChar y Pchar , en Lazarus, y funciona de las 2 maneras, asi que me imagino que tambien funcionara en Delphi 7. Lo que me hacia ultimamente, era darme un numero en vez de una palabra, o sea algo leia. Ahora ya se que FreeBasic crea bien las DLLs, y que no era problema de la Dll, si no por no saber Delphi, esto tambien lo tenia visto en C. Muchas gracias !!!!! Me lo apunto en un papel para la proxima vez. Que tengais todos un buen dia. ||-|| |
La franja horaria es GMT +2. Ahora son las 15:09:48. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi