我是想把指定的字段中的数据保存到数组中,然后将这些数据写入到TstringList中,现在遇到了变体类型的数组不知道如何读出来,以下是部分代码,望各位能帮帮我。或者是直接通过什么其他方式写入到TstringList,那就更好了。procedure Tsvr_sp_jh.N6Click(Sender: TObject);
var a,b,data:Variant;
begin
CopyTstringList.Clear;
A:= VarArrayCreate([0,1],varolestr);
B:= VarArrayCreate([0,1],varolestr);
a[0]:='diaoru_bh';
a[1]:='diaoru_zsl';
data:=jhQuery.Recordset.GetRows(jhQuery.RecordCount,1,A[1]);
就这里data不知道如何读了
end;
var a,b,data:Variant;
begin
CopyTstringList.Clear;
A:= VarArrayCreate([0,1],varolestr);
B:= VarArrayCreate([0,1],varolestr);
a[0]:='diaoru_bh';
a[1]:='diaoru_zsl';
data:=jhQuery.Recordset.GetRows(jhQuery.RecordCount,1,A[1]);
就这里data不知道如何读了
end;
解决方案 »
- ADO为什么要这么变态?还是我太菜?求教
- 急急急!公司做产品开发,想让试用版的试用期限(自安装之日算起)为两个月,之后产品不再可以使用,请问如何控制这个期限呢?
- Indy 9.0.14中IdFTP组件的Bug????????????
- 请问:怎样用adoquery写入access或sql2000中整型或实型数据?
- 不知了,不懂了,不晓了。望帅哥指教
- 如何判断程序只有一个ADOConnection连接(用MSSQl200)?
- 请问在那能下载到关于视频点播系统方面的资料
- 怎么知道当前网络中的所有SQL SERVER服务器?
- 再请教各位:能否实现excel中的数据只能用程序写入,不能手动修改呢?
- Tpopupmenu为每个菜单项加上图标,鼠标移上时有蓝色焦点条,如果让蓝色条不在图标区显示?
- SMARTCARD 熟悉的HELP
- 数据源连接错误DBEdit:field not found,求助
望再次帮助,感谢。感谢~~~
varDate, varBoolean, varByte];
type
PIntArray = ^TIntArray;
TIntArray = array[0..0] of Integer; PVariantArray = ^TVariantArray;
TVariantArray = array[0..0] of OleVariant; TVarFlag = (vfByRef, vfVariant);
TVarFlags = set of TVarFlag;uses
ActiveX,ComObj;procedure VarArrayToStringList(const Value: OleVariant;
const Data: TStringList);
var
VType, VSize, i, DimCount, ElemSize: Integer;
LSafeArray: PSafeArray;
LoDim, HiDim, Indices: PIntArray;
V: OleVariant;
P: Pointer;
begin
VType := VarType(Value);
LSafeArray := PSafeArray(TVarData(Value).VPointer);
DimCount := VarArrayDimCount(Value);
VSize := SizeOf(Integer) * DimCount;
GetMem(LoDim, VSize);
try
GetMem(HiDim, VSize);
try
for i := 1 to DimCount do
begin
LoDim[i - 1] := VarArrayLowBound(Value, i);
HiDim[i - 1] := VarArrayHighBound(Value, i);
end;
begin
GetMem(Indices, VSize);
try
for I := 0 to DimCount - 1 do
Indices[I] := LoDim[I];
while True do
begin
if VType and varTypeMask <> varVariant then
begin
OleCheck(SafeArrayGetElement(LSafeArray, Indices^, TVarData(V).VPointer));
TVarData(V).VType := VType and varTypeMask;
end else
OleCheck(SafeArrayGetElement(LSafeArray, Indices^, V));
//WriteVariant(V, Data);
Data.Add(VarToStr(V));
Inc(Indices[DimCount - 1]);
if Indices[DimCount - 1] > HiDim[DimCount - 1] then
for i := DimCount - 1 downto 0 do
if Indices[i] > HiDim[i] then
begin
if i = 0 then Exit;
Inc(Indices[i - 1]);
Indices[i] := LoDim[i];
end;
end;
finally
FreeMem(Indices);
end;
end;
finally
FreeMem(HiDim);
end;
finally
FreeMem(LoDim);
end;
end;