Lazarus
Home
Help
TinyPortal
Search
Login
Register
Lazarus
»
Forum
»
Using the Lazarus IDE
»
General
»
How to invoke an arbitrary method using RTTI?
Free Pascal
Website
Downloads
Wiki
Documentation
Bugtracker
Mailing List
Lazarus
Website
Downloads (Laz+FPC)
Packages (OPM)
FAQ
Wiki
Documentation (RTL/FCL/LCL)
Bugtracker
CCR Bugs
GIT
Mailing List
Other languages
Foundation
Website
Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
How to use the forum
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
(preview)
Lazarus Handbook
Search
Advanced search
Recent
How to copy file to web
by
bobonwhidbey
[
Today
at 07:48:09 am]
DBGrid editing control
by
dsiders
[
Today
at 05:45:36 am]
Animated GIF's and Lazaru...
by
Aruna
[
Today
at 05:44:42 am]
TCheckGroup Child Alignme...
by
dsiders
[
Today
at 05:34:14 am]
MainMenu: How to use the ...
by
rich2014
[
Today
at 02:45:31 am]
Interesting article about...
by
440bx
[
Today
at 02:39:50 am]
Lazarus for Windows on aa...
by
msintle
[
Today
at 02:33:01 am]
Common File Dialogs Have ...
by
msintle
[
Today
at 02:32:24 am]
Q: Debug a plugin DLL - c...
by
440bx
[
Today
at 02:23:27 am]
[SOLVED] Classic objects ...
by
TRon
[
Today
at 02:19:36 am]
[Solved] Dumb SQLite ques...
by
dsiders
[
Today
at 12:44:26 am]
How make the GUI as one p...
by
dsiders
[
Today
at 12:39:39 am]
Starting a program with h...
by
jeremiah
[December 13, 2024, 10:57:53 pm]
SDL2 Fit image rotation b...
by
bobihot
[December 13, 2024, 10:31:27 pm]
[Solved] Crosshair error ...
by
Marq01
[December 13, 2024, 09:55:14 pm]
What is the history of di...
by
mika
[December 13, 2024, 09:49:59 pm]
Unwanted additional line ...
by
Ten_Mile_Hike
[December 13, 2024, 09:34:47 pm]
fpweb documentation do no...
by
Sniper
[December 13, 2024, 09:02:16 pm]
Managed pointers
by
jksmithiii
[December 13, 2024, 08:42:29 pm]
[Solved] Debug a plugin D...
by
d7_2_laz
[December 13, 2024, 05:27:48 pm]
SAVE StringGrid to PDF
by
seghele0
[December 13, 2024, 05:19:19 pm]
Who catches the Linux sig...
by
MarkMLl
[December 13, 2024, 04:43:45 pm]
TvsComPort on MacOS Sierr...
by
Dzandaa
[December 13, 2024, 04:23:21 pm]
Adding interfaces to any ...
by
Warfley
[December 13, 2024, 03:48:44 pm]
[SOLVED] TRichMemo and te...
by
MarkMLl
[December 13, 2024, 01:56:57 pm]
« previous
next »
Print
Pages: [
1
]
Author
Topic: How to invoke an arbitrary method using RTTI? (Read 274 times)
cpicanco
Hero Member
Posts: 655
Behavioral Scientist and Programmer
How to invoke an arbitrary method using RTTI?
«
on:
September 01, 2024, 04:53:19 pm »
Does Free Pascal ({$mode objfpc}) supports invoking arbitrary methods with RTTI?
Did Michael wrote a continuation of this documentation:
https://www.freepascal.org/~michael/articles/rtti1/rtti1.pdf?
He mentioned that invoking arbritrary methods would be explored in next chapters.
This Chat GPT answer did not worked:
Code: Pascal
[Select]
[+]
[-]
uses
sysutils
,
rtti
;
type
TMyClass
=
class
procedure
MyMethod
;
end
;
procedure
TMyClass
.
MyMethod
;
begin
writeln
(
'MyMethod has been called'
)
;
end
;
var
ctx
:
TRttiContext
;
typ
:
TRttiType
;
method
:
TRttiMethod
;
instance
:
TObject
;
begin
instance
:
=
TMyClass
.
Create
;
try
ctx
:
=
TRttiContext
.
Create
;
try
typ
:
=
ctx
.
GetType
(
TMyClass
)
;
method
:
=
typ
.
GetMethod
(
'MyMethod'
)
;
if
Assigned
(
method
)
then
method
.
Invoke
(
instance
,
[
]
)
;
finally
ctx
.
Free
;
end
;
finally
instance
.
Free
;
end
;
end
.
PS.: There is a recent question in StackOverflow on how to use the invoke method:
https://stackoverflow.com/questions/78922855/in-lazarus-fpc-how-do-i-get-a-pointer-to-a-class-or-record-method/78927526?noredirect=1#comment139161075_78927526
)
Logged
Be mindful and excellent with each other.
https://github.com/cpicanco/
Print
Pages: [
1
]
« previous
next »
Lazarus
»
Forum
»
Using the Lazarus IDE
»
General
»
How to invoke an arbitrary method using RTTI?
TinyPortal
© 2005-2018