Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2019
Avatar de Maniches
Maniches Maniches is offline
Miembro
 
Registrado: nov 2012
Ubicación: Lima - Perú
Posts: 67
Poder: 12
Maniches Va por buen camino
Lightbulb 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:
Código Delphi [-]
library MyLibrary;
uses
  System.SimpleShareMem,
  System.SysUtils,
  System.Classes;

function Test1(): PChar; stdcall;
begin
  Result:= PChar('Prueba de Función en DLL');
end;

exports
  Test1;

La APP en D6 y utiliza la DLL(Creada D10): (Contiene 2 formas de leer la DLL)
Código Delphi [-]
// PARA USO DE DLL EN BTN2
TTest1 = function() : PChar; stdcall;

implementation

// PARA USO DE DLL EN BTN1
function Test1() : PChar; stdcall; external 'MyLibrary.dll';

procedure TFormMain.btn1Click(Sender: TObject);
var
  sResult : string;
begin
  sResult:= string(Test1);
  memo1.Lines.Clear;
  memo1.Lines.Add(sResult);
end;

procedure TFormMain.btn2Click(Sender: TObject);
var
  sResult: string;
  Handle: THandle;  
  TestStr: TTest1;
begin
  Handle := LoadLibrary('MyLibrary.dll');
  if Handle <> 0 then
    @TestStr:= GetProcAddress(Handle, 'RestAPIfJSON');
    if @ TestStr <> nil then
    begin
      sResult := string(TestStr);
      mmoJSONResult.Lines.Clear;
      mmoJSONResult.Lines.Add(sResult);
    end;
    FreeLibrary(Handle);
  end;
end;
__________________
Maniches
maniches@outlook.com
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
colocar una libreria en la ruta del ejecutable shinopeat87 OOP 1 08-11-2018 19:32:33
Consumir DLL creado con Delphi 2007 causa error al consumirlo con Delphi 5 rchavezh Providers 2 27-07-2012 13:53:43
Formulario creado desde libreria y traspaso de informacion mjjj OOP 0 03-02-2012 21:21:20
Cual es el equivalente de un ejecutable de delphi para win32 en delphi PHP kurono Varios 8 05-07-2010 05:11:16
Consulta Sobre el Lenguaje que utiliza Delphi Neeruu Varios 8 14-08-2008 18:35:05


La franja horaria es GMT +2. Ahora son las 18:03:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi