FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Ejecutable creado en Delphi 6 utiliza librería en Delphi Rio(dll)
Buen Días a los amigos del foro,
Aquí después de unos días acudiendo a su experiencia y me ayuden a resolver un problema. Proceso: Se quiere crear una DLL en Delphi 10 y que esta sea utilizada desde Delphi 6. Nota: Cuando se define y crea ambos proyectos en D10 y usando la unidad “SimpleShareMem” para liberar la librería, no me da ningún problema usando todo como “string”, Si creo el App en D6 y que este utilice la DLL(D10) este genera un error de “Access Violation!!!”. Yo he creado la DLL que devuelva tipo PCHAR por recomendación de unos foros y al ejecutar el App D6 ya no me muestra error, pero tan solo me devuelve un solo carácter de la cadena. Según el ejemplo tan solo devuelve: "P" Me ayudan a detectar el problema en el App D6, La forma de como obtener la cadena completa desde el App D6?. Muchas Gracias. Código de la DLL en D10:
La APP en D6 y utiliza la DLL(Creada D10): (Contiene 2 formas de leer la DLL)
|
#2
|
||||
|
||||
Prueba a usar ansistring en lugar de string.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Hola Casimiro.
Te refieres que haga la prueba usando AnsiString en donde? en la DLL (D10) o el APP (D6)? o en ambos? Gracias por tus respuesta . |
#4
|
||||
|
||||
Es que los Delphi últimos usan unicode, por lo que delphi 6 no pueden usarlo.
Así que si en Delphi Río usas ansistring en lugar de string, lo podrás usar también en delhi 6. Todo lo que sea string, cámbialo a ansistring. Casi seguro que ese es el problema.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
Casimiro,
Tenias mucha razón, hice el cambio de cambiar todo a AnsiString tanto el APP y la DLL. si bien es cierto ya me devuelve la cadena. pero sale el error "Invalid pointer operation." en el primer caso en el método ADD y en el segundo en el método FreeLibrary. que puede estar faltando? Nota: Cuando hice todo en D10 me salia error al hace click por segunda vez y ahí donde encontré que se debería de usar la unidad: "SimpleShareMem" y ya no me salio error. tendrá que ver algo similar en D6? |
#6
|
||||
|
||||
No se si irán por ahí los tiros, pero también los PChar tienen soporte Unicode en los nuevos RAD Studio. En su lugar tendrías también que probar con PAnsiChar.
Saludos |
#7
|
||||
|
||||
Gracias amigo Kurgan por tu respuesta.
He realizado el cambio que sugieres ("PAnsiChar") y me sale el mismo resultado según el ejemplo que adjunte. Me devuelve el carácter "P" como resultado. Según la ayuda del buen amigo Casimiro el trabajar todo con AnsiString me devuelve la información. pero problema es al liberar la librería y el error que muestra es el indico en unos post anteriores. Capaz alguien tenga una posible solucion? |
#8
|
|||
|
|||
Prueba de esta manera
con Rio 10.2
con D7
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
colocar una libreria en la ruta del ejecutable | shinopeat87 | OOP | 1 | 08-11-2018 20:32:33 |
Consumir DLL creado con Delphi 2007 causa error al consumirlo con Delphi 5 | rchavezh | Providers | 2 | 27-07-2012 14:53:43 |
Formulario creado desde libreria y traspaso de informacion | mjjj | OOP | 0 | 03-02-2012 22:21:20 |
Cual es el equivalente de un ejecutable de delphi para win32 en delphi PHP | kurono | Varios | 8 | 05-07-2010 06:11:16 |
Consulta Sobre el Lenguaje que utiliza Delphi | Neeruu | Varios | 8 | 14-08-2008 19:35:05 |
|