动态数组和variant的转换(关于dynarraytovariant和dynarrayfromvariant) ( 积分: 299 )

  • 主题发起人 主题发起人 7030
  • 开始时间 开始时间
7

7030

Unregistered / Unconfirmed
GUEST, unregistred user!
type Tmyrecord=record
name:string;
id:array of string;
end;
var myr:array of Tmyrecord
现在问题是如何把myr转为olevariant?再把olevariant转为array of tmyrecord?
谁能举例说明dynarraytovariant和dynarrayfromvariant的用法?
 
type Tmyrecord=record
name:string;
id:array of string;
end;
var myr:array of Tmyrecord
现在问题是如何把myr转为olevariant?再把olevariant转为array of tmyrecord?
谁能举例说明dynarraytovariant和dynarrayfromvariant的用法?
 
查帮助
DynArrayToVariant
DynArrayFromVariant
 
可以把id动态数组,改成用,分割
A := VarArrayCreate([0, 2*high(myr)+2], varVariant
);
for i:=0 to high(myr) do
begin
a[i*2]:=myr.name
a[i*2+1]:=myr.id
end;
 
http://www.richsearch.com/search/displ.aspx?lid=2541888&show=all&S1=DynArrayToVariant
 
谁能举列讲讲DynArrayToVariant和DynArrayFromVariant的用法,delphi的帮助也看了,就是这个typeinfo:pointer的参数琢磨不透
 
资料查了半天才得知dynarraytovariant不支持记录类型的数组,真是晕
现在还有其它方法把一个记录类型的动态数组转为variant吗?
 
自己搞清楚怎么用了,发分吧,贴出我写的一个例子
type
tmystr=array of array of string;//一定要动态数组,经过测试array of array[0..3]of string这样定义不行

procedure TForm1.Button1Click(Sender: TObject);
var t,tt:tmystr;
i,j:integer;
v:variant;
s:string;
p1,p2:pointer;
begin
setlength(t,30);
for i:=0 to high(t) do
setlength(t,10);
for i:=0 to high(t) do
for j:=0 to high(t) do
t[i,j]:=inttostr(i)+inttostr(j);
memo1.lines.clear;
for i:=0 to high(t) do
begin
s:='';
for j:=0 to high(t) do
s:=s+t[i,j]+' ';
memo1.Lines.add(s);
end;

p1:=typeinfo(tmystr);
dynarraytovariant(v,t,p1);
p1:=typeinfo(tmystr);
dynarrayfromvariant(p2,v,p1);
tt:=tmystr(p2);
memo2.lines.clear;
for i:=0 to high(tt) do
begin
s:='';
for j:=0 to high(tt) do
s:=s+tt[i,j]+' ';
memo2.Lines.add(s);
end;
end;
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部