Hi Leute,
Ich möchte einen string, bzw. einen PChar von einer
dll an die Applikation & umgekehrt übergeben.
Mit einem Integer kriege ich das hin, aber nicht mit einem PChar, dann kommt immer eine zugriffsverletzung.
könnt ihr mir da weiterhelfen?
alle meine tutorials sind nur mit integer werten (
dsdt.info + ein buch)
applikation:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TInfoFunktion =
function(about_what: pchar):pchar;
stdcall;
function info1(about_what: pchar):pchar;
type
TForm1 =
class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function info1(about_what: pchar):pchar;
var InfoFunktion: TInfoFunktion;
Handle: THandle;
begin
Handle:=LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'
dll.dll'));
if Handle <> 0
then begin
@InfoFunktion := GetProcAddress(
Handle, '
info');
if @InfoFunktion <>
nil then begin
result := InfoFunktion(about_what);
end;
FreeLibrary(
Handle);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var test:pchar;
begin
test:='
test';
showmessage(info1(@test));
end;
end.
dll:
Delphi-Quellcode:
library dll;
uses
SysUtils,
Classes;
{$R *.res}
function info(about_what: pchar):pchar;
stdcall;
begin
if about_what='
test'
then
result := '
super1'
else
result:='
super2';
end;
exports
info;
begin
end.
edit: hmm und ich hatte heute schon ein paar
av's