AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fehlermeldung: Reguläre Prozedur und Methodenzeiger?
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung: Reguläre Prozedur und Methodenzeiger?

Ein Thema von Puhbaehr · begonnen am 11. Apr 2007 · letzter Beitrag vom 11. Apr 2007
Antwort Antwort
Puhbaehr
(Gast)

n/a Beiträge
 
#1

Fehlermeldung: Reguläre Prozedur und Methodenzeiger?

  Alt 11. Apr 2007, 06:18
Guten Morgen,

folgendes Beispiel soll mein Problem erklären/zeigen.
Ich möchte einer Variablen eine Prozedur aus einer Klasse zuweisen:

Delphi-Quellcode:
program Project1;

uses
  SysUtils,
  Windows;

type
  TOnTest = procedure;

type
  TTest = class
    public
      procedure ThisTest;
   end;

procedure TTest.ThisTest;
 begin
  Windows.MessageBox (0, 'Test', 'Test', MB_OK);
 end;

var
  Test : TTest;
  POnTest : TOnTest;

begin
  Test := TTest.Create;

  POnTest := Test.ThisTest; // <--

  // irgendwann später...
  if (Assigned (POnTest)) then
   begin
    POnTest;
   end;

  Test.Destroy;
end.
Bekomme aber die Fehlermeldung Inkompatible Typen: Reguläre Prozedur und Methodenzeiger - weshalb und wie mach ich es richtig? Unter was kann ich suchen?

Ersetze ich obige Zeile durch
POnTest := @TTest.ThisTest; dann wird in diesem Beispiel der Code fehlerfrei ausgeführt.
Aber in meinem Projekt in welchem ich diesen Fall anwenden möchte, wird zwar die Prozedur erfolgreich ausgeführt, aber beim Rücksprung bekomme ich eine Zugriffsverletzung.
Lege ich stattdessen die Prozedur die ich Zuweisen möchte Lokal in die Unit bekomme ich keine Zugriffsverletzung:

Delphi-Quellcode:
program Project1;

uses
  SysUtils,
  Windows;

type
  TOnTest = procedure;

procedure ThisTest;
 begin
  Windows.MessageBox (0, 'Test', 'Test', MB_OK);
 end;

var
  POnTest : TOnTest;

begin
  POnTest := ThisTest;

  // irgendwann später...
  if (Assigned (POnTest)) then
   begin
    POnTest;
   end;
end.
Ziel ist es aber die Prozedur aus der Klasse zu verwenden.

  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Fehlermeldung: Reguläre Prozedur und Methodenzeiger?

  Alt 11. Apr 2007, 06:46
Guten Morgen,

du hast den Typ TOnTest falsch vereinbart:
Delphi-Quellcode:
type
  TOnTest = procedure of object;
Grüße vom marabu
  Mit Zitat antworten Zitat
Puhbaehr
(Gast)

n/a Beiträge
 
#3

Re: Fehlermeldung: Reguläre Prozedur und Methodenzeiger?

  Alt 11. Apr 2007, 06:52
Jupp, bin eben mal auf die Idee gekommen nach meinem eigenen Titel zu suchen und bin grade eben durch die Ergebnisse auch darauf gekommen.
Muh... aber dennoch bekomm ich eine Zugriffsverletzung.
Aber vermutlich sind die anderer Natur...

Danke soweit
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz