相关疑难解决方法(0)

RTTI动态阵列TValue Delphi 2010

我有个问题.我是Delphi 2010中运行时类型信息的新手.我需要将长度设置为动态数组到TValue中.你可以看到代码.

Type TMyArray = array of integer;
TMyClass = class
publihed
function Do:TMyArray;
end;

function TMyClass.Do:TMyArray;
begin
SetLength(Result,5);
for i:=0 to 4 Result[i]=3;
end;
.......
.......
......
y:TValue;
Param:array of TValue;
.........
y=Methods[i].Invoke(Obj,Param);//delphi give me a DynArray type kind, is working, Param works to any functions.

if Method[i].ReturnType.TypeKind = tkDynArray then//is working...
begin
    I want to set length for y to 10000//i don't know how to write.
end;
Run Code Online (Sandbox Code Playgroud)

我不喜欢Generics Collections.

arrays delphi set rtti

4
推荐指数
1
解决办法
3019
查看次数

Delphi:如何使用DynArraySetLength设置RTTI访问的动态数组的长度?

我想设置动态数组的长度,如本文所述.我有两个类TMyClass和相关的TChildClass定义为

TChildClass = class
private
  FField1:  string;
  FField2:  string;
end;

TMyClass = class
private
  FField1:  TChildClass;
  FField2:  Array of TChildClass;
end;
Run Code Online (Sandbox Code Playgroud)

数组扩充实现为

var
  RContext:     TRttiContext;
  RType:        TRttiType;
  Val:          TValue;      // Contains the TMyClass instance
  RField:       TRttiField;  // A field in the TMyClass instance
  RElementType: TRttiType;   // The kind of elements in the dyn array
  DynArr:       TRttiDynamicArrayType;
  Value:        TValue;  // Holding an instance as referenced by an array element
  ArrPointer:   Pointer;
  ArrValue:     TValue;
  ArrLength:    LongInt;
  i:            integer;
begin
  RContext …
Run Code Online (Sandbox Code Playgroud)

arrays delphi dynamic rtti

3
推荐指数
1
解决办法
2890
查看次数

标签 统计

arrays ×2

delphi ×2

rtti ×2

dynamic ×1

set ×1