Einzelnen Beitrag anzeigen

Moep123

Registriert seit: 12. Jun 2007
1 Beiträge
 
#8

Re: ungültige zeigeroperation bei dll

  Alt 16. Jun 2007, 21:38
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
  Mit Zitat antworten Zitat