methodenvariable "funktioniert" nicht wie erwartet"

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

methodenvariable "funktioniert" nicht wie erwartet"

Beitrag von arturx »

Eine Methodenvariable lässt sich zuweisen, aber nicht erwartungsgemäß ausführen:

Code: Alles auswählen

type tintfunc = function : integer of object;
 // ......................
procedure TForm1.testit;
      var fi    : tintfunc;
          itest : integer;
   begin
       itest := getsomething;  // klappt natürlich
 
       fi    := @getsomething;
       itest := fi;   // <--- Diese Zuweisung bemängelt der Compiler 
    end;
//...........................
function TForm1.getsomething: integer;
   begin  result := 5;
    end;
Wo liegt der Denkfehler bzw. Wie gehts ?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: methodenvariable "funktioniert" nicht wie erwartet"

Beitrag von mse »

Vermutlich

Code: Alles auswählen

itest := fi();

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1620
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: methodenvariable "funktioniert" nicht wie erwartet"

Beitrag von corpsman »

lol mse war schneller

Code: Alles auswählen

itest := fi();
du musst die Klammern machen damit der Compiler weis, dass du den Aufruf meinst, und nicht die Adresse.

Unter Delphi hättest du das nicht gemusst, ich hab auch ein Weilchen gebraucht bis ich mir das angewöhnt hatte.
--
Just try it

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: methodenvariable "funktioniert" nicht wie erwartet"

Beitrag von arturx »

W OW ...was seid Ihr schnell !!
Genau das ist die Lösung !
Vielen Dank :D

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: methodenvariable "funktioniert" nicht wie erwartet"

Beitrag von mschnell »

Im Gegensatz zu Delphi folgt die Verwendung der von prozeduralen Variablen mit FPC stringenten logischen Regeln. Daher ist der Vode zwischen Delphi und Lazarus nicht kompatibel. Man braucht zusätzliche "@"s und "()"s.

-Michael

lrlr
Beiträge: 127
Registriert: Di 3. Nov 2009, 09:48

Re: methodenvariable "funktioniert" nicht wie erwartet"

Beitrag von lrlr »

auch unter delphi (5) muss man die klammer () manchmal machen .

ich weiß aber nicht mehr genau wann, ich glaub wenn es ein property ist und keine variable...

(oder so..)

Antworten