Hier ist mein einfacher Code, der gut kompiliert, aber Zugriffsverletzung erhöhen. Es tritt MD Prozedur und Debugger zeigt einige X und Y-Wert, aber nach dem Beenden der Prozedur AV passiert. Hoffe jemand kann helfen.aufrufen Delphi-Prozedur als Methode
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Controls, Forms, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure MD(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
form1.caption:= inttostr(x)+ ' '+ inttostr(y);
end;
procedure TForm1.FormCreate(Sender: TObject);
function MakeMethod(data, code: pointer): TMethod;
begin
result.Data:= data;
result.Code:= code;
end;
begin
panel1.OnMouseDown:= TMouseEvent(MakeMethod(nil, @MD));
end;
end.
Dank
Sind Sie von der AV überrascht? - Sie übergeben Nil zu MakeMethod. – MartynA
Das gleiche passiert, wenn ich Zeiger auf ein Array von Bytes setzen. – Djole
@MartynA, Ihre Kommentare sind völlig irreführend, "MD" verweist nie auf "Datenzeiger", der tatsächliche Grund für einen Fehler ist ein Parameter, der nicht übereinstimmt. –