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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2013
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 174
Poder: 12
elcharlie Va por buen camino
Usar una Funcion de una Dll dentro de la Propia Dll

Buenas:
Como veis soy novatillo en esto de Delphi, y me he encontrado con un problema. La cuestion es que estoy desarrollando una dll, con unas funciones, que reutilizare en otro programa.Hasta ahi todo correcto, el problema es que necesito algunas funciones para reutilizarlas en el propio codigo de la dll, y delphi no me deja o yo no se como hacerlo.
Alguna Idea?
Gracias de Antemano.
Os pongo un ejemplo para verlo, por si no me he explicado bien:
Código Delphi [-]
library OrtoisDll;



uses
  System.SysUtils,
  Vcl.Forms,
  System.Classes;

function StringToPAnsiChar(stringVar : string) : PAnsiChar;
Var
  AnsString : AnsiString;
begin
    if stringVar <> '' Then
    begin
       AnsString := AnsiString(StringVar);
       Result := PAnsiChar(PAnsiString(AnsString));
   end; 
end;

function RetornoVer():PAnsiChar;stdcall;
begin
   Result:= //Aqui es donde quiero llamar a la funcion StringToPAnsiChar
end;

exports RetornoVer;

begin
end.
Responder Con Cita
  #2  
Antiguo 25-04-2013
WkaymQ48 WkaymQ48 is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 43
Poder: 0
WkaymQ48 Va por buen camino
No debería de haber ningún problema por usar funciones dentro de una dll.

Lo que si es mala idea es devolver un puntero (PAnsiChar) a un string que no existe fuera de la función. Es decir una vez finalizada la función StringToPAnsiChar el puntero que devuelve apunta a una dirección de memoria indeterminada, no a la cadena de texto que le pasas como parámetro a la función.

Para que te hagas una idea de lo que pasa al llamar a la funcion StringToPAnsiChar
  • Llamas a la función pasandole una cadena como parámetro
  • Dentro de la función se reserva memoria para guardar ese texto
  • La función devuelve un puntero a esa memoria
  • La función al terminar libera esa memoria que tenia reservada
  • Ahora el puntero apunta a una posición de memoria que no esta en uso
Responder Con Cita
Respuesta


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
Ayuda con Funcion dentro de DLL n03l Varios 3 29-12-2011 21:09:37
como se crea una funcion dentro de una dll ronimaxh Varios 3 29-12-2011 01:37:25
error de funcion dentro de un stringlist... Greco Varios 6 03-09-2008 09:57:08
llamada a una funcion dentro de una dll mauqu Varios 4 16-10-2007 18:47:57
TQuery dentro de una funcion Function jorgito Varios 4 26-09-2005 16:44:57


La franja horaria es GMT +2. Ahora son las 10:45:06.


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