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
Problems with Gitlab
by
MarkMLl
[
Today
at 09:39:12 am]
Browser User Agent & Frie...
by
Marc
[
Today
at 09:21:01 am]
Searching for a safe alte...
by
fournoas
[
Today
at 07:46:51 am]
order of evaluation of ov...
by
Khrys
[
Today
at 07:36:01 am]
Broken Icon Display on ma...
by
paweld
[
Today
at 06:48:05 am]
GMP: multiple precision a...
by
Aqdam1978@yahoo.com
[
Today
at 04:20:33 am]
Child board for reporting...
by
Joanna
[
Today
at 04:02:52 am]
Local Vars often inspect ...
by
SandyG
[
Today
at 01:50:50 am]
Any support for Perpendic...
by
SandyG
[
Today
at 01:30:36 am]
TDBDateEdit component def...
by
wp
[
Today
at 12:04:56 am]
Are there some components...
by
vfclists
[September 10, 2024, 11:45:12 pm]
Key Word vs Key Char
by
Bart
[September 10, 2024, 11:21:51 pm]
Font draw in customdraw i...
by
jamie
[September 10, 2024, 11:00:54 pm]
Was:Forum Upgrade? by @Re...
by
Martin_fr
[September 10, 2024, 08:38:05 pm]
CPU & Memory Profiler
by
440bx
[September 10, 2024, 06:55:37 pm]
Problem with pasting text...
by
LV
[September 10, 2024, 05:43:15 pm]
How to disable the compat...
by
salvadordf
[September 10, 2024, 04:16:38 pm]
LazCAD – First Release!
by
maurog
[September 10, 2024, 02:41:37 pm]
TStateMachine
by
matthius
[September 10, 2024, 02:20:26 pm]
DBlookupcombobox question
by
Petrus Vorster
[September 10, 2024, 01:43:36 pm]
[Solved] Unable install l...
by
dsiders
[September 10, 2024, 10:27:32 am]
[Solved] PATCH method in ...
by
JohnnieK
[September 10, 2024, 09:13:00 am]
Forum is so SLOOOW... Aga...
by
Gustavo 'Gus' Carreno
[September 10, 2024, 08:15:51 am]
Is there a "canonical" Gi...
by
dsiders
[September 10, 2024, 08:04:09 am]
IDE odd behaviour
by
alpine
[September 10, 2024, 07:38:13 am]
« previous
next »
Print
Pages: [
1
]
Author
Topic: How to invoke an arbitrary method using RTTI? (Read 121 times)
cpicanco
Hero Member
Posts: 633
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