PDA

Ver la Versión Completa : Usar una Funcion de una Dll dentro de la Propia Dll


elcharlie
25-04-2013, 13:57:44
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:

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.

WkaymQ48
25-04-2013, 19:57:36
:confused: 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