Hi, ich hab ein änhliches Problem.
Bei mir liegts jedoch an der rückgabe , wenn ich 'result:=s' weglasse dann klappts:
Delphi-Quellcode:
library Project2;
uses
SysUtils,
Classes;
{$R *.res}
function func(o:TObject):string;stdcall;
var s:string;
c:TClass;
begin
c:=o.ClassType;
while Assigned(c) do
begin
if s<>'' then
s:=s+'-->'+c.ClassName
else
s:=c.ClassName;
c:=c.ClassParent;
end;
result:=s;
end;
exports
func;
begin
end.
und hier der aufruf :
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
RichEdit1: TRichEdit;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function func(o:TObject):
String;
stdcall;
external '
project2.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
richedit1.Text:=func(button1);
end;
end.
Es funktioniert wunderbar, bis auf die Meldung 'Ungültige Zeigeroperation'
und das programm äuft nach der meldung auch weiter.
Wenn ich die funktion ohne die
dll aufrufe dann klappt auch ohne Meldung.
Bitte um Hilfe
MfG Moep