作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用最新更新的 Delphi 10.2
我有一个程序(实际代码):
PyObject = packed record ... end;
PPyObject = ^PyObject
PPyObjectArray = array of PPyObject;
procedure invokeMethod (methodName : string; args : PPyObjectArray);
var ctx: TRttiContext;
rt : TRttiType;
mt : TRttiMethod;
py : TPyArithmetic;
tv : array of TValue;
begin
py := TPyArithmetic.Create;
ctx := TRttiContext.Create;
try
rt := ctx.GetType(TPyArithmetic);
mt := rt.GetMethod (methodName);
setlength (tv, 1);
tv[0].From(args);
mt.Invoke(py, tv);
finally
ctx.Free;
end;
end;
class function TPyArithmetic.add (args : PPyObjectArray) : double;
begin
result := TArithmetic.add (GetPythonEngine.PyFloat_AsDouble (args[0]), GetPythonEngine.PyFloat_AsDouble (args[1]));
end;
最佳答案
TValue.From
是一个返回新值的函数。 A 这段代码是错误的:
tv[0].From(args);
tv[0]
.你需要这样做:
tv[0] := TValue.From(args);
mt.Invoke(py, [TValue.From(args)]);
procedure invokeMethod(methodName: string; args: PPyObjectArray);
var
ctx: TRttiContext;
rt: TRttiType;
mt: TRttiMethod;
py: TPyArithmetic;
begin
py := TPyArithmetic.Create;
rt := ctx.GetType(TPyArithmetic);
mt := rt.GetMethod (methodName);
mt.Invoke(py, [TValue.From(args)]);
end;
py
.
关于delphi - 如何在 Delphi 中将指针类型数组传递给 RttiMethods.Invoke,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48334544/
我是一名优秀的程序员,十分优秀!