String y PChar en DLL y Delphi
Hola, aunque el hilo ya es viejo, algunos colegas lo ven por primera vez o por centésima vez jeje, encontré este ejemplo en donde se puede obtener un string desde la dll sin tener errores extraños, por si le sirve a alguien, saludos
///En la DLL---------------------------
library MyDLL;
uses
SysUtils;
const
AString: string = 'Hello world!';
function ReturnsAString: PChar;
begin
GetMem( Result, length( AString ) +1 );
StrPCopy( Result, AString )
end;
procedure FreeString( s: PChar );
begin
FreeMem( s )
end;
exports
ReturnsAString,
FreeString;
begin
end.
//En Delphi--------------------------------
procedure Button1Click( Sender: Object ); // or whatever
var
s: string;
p: PChar;
begin
p := ReturnsAString; // get the DLL's memory
s := p; // get a copy into our string
FreeString( p ); // return the DLL's memory
ShowMessage( s )
end;
|