这里有一些代码将TClientDataSet.Data转换为字符串,并执行一个测试例程。
function VariantToString(V : OleVariant) : String;
procedure VariantToStringInner(V : OleVariant; var AString : String);
var
IsArray : Boolean;
DimCount : Integer;
i : Integer;
begin
IsArray := VarIsArray(V);
if not IsArray then begin
// Handle the case where V is not an array
if (VarIsEmpty(V) or VarIsNull(V)) then begin
AString := AString + ' ';
exit;
end
else
AString := AString + VarToStr(V);
end
else begin
// V is an array,so first we need to know how many dimensions it has
DimCount := VarArrayDimCount(V);
// For TClientDataSet.Data the answer AFAIK should be 1
// so we'll process only dimension 1
Assert(DimCount = 1);
// Recurse into this proc so that we handle the cases where V[i] is an array
// and where it isn't
for i := VarArrayLowBound(V,1) to VarArrayHighBound(V,1) do begin
VariantToStringInner(V[i],AString);
end;
end;
end;
begin
Result := '';
VariantToStringInner(V,Result);
end;
procedure TForm1.TestVarToStr;
var
V : OleVariant;
S : String;
begin
V := 'hello world';
S := VariantToString(V) + #13#10;
V := CDS1.Data;
S := S + VariantToString(V);
Memo1.Lines.Text := S;
end;
很显然,如果要将结果保存到文件中,只需调用Memo1.Lines.SaveToFile()
我得到的结果是
你好世界
15025224189100024000502000300020202736840100010783856684898069207308065117116111105110990468971161014060000067811710998101114401000004789710910110730001058773688472202020058697108117101107300010587736884722020200201067726578716995767971401300600010000000400020000000400020600400058512697389720600100011091000450
保存为XML的相同CDS数据如下:
<?xml version="1.0" standalone="yes"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="ID" fieldtype="i4" SUBTYPE="Autoinc"/><FIELD attrname="Date" fieldtype="date"/>
<FIELD attrname="Number" fieldtype="i4"/><FIELD attrname="Name" fieldtype="string" WIDTH="20"/><FIELD attrname="Value" fieldtype="string" WIDTH="20"/>
</FIELDS>
<PARAMS CHANGE_LOG="1 0 4 2 0 4" AUTOINCVALUE="3"/>
</METADATA>
<ROWDATA>
<ROW RowState="4" ID="1" Name="Name1"/><ROW RowState="4" ID="2" Name="Name2" Value="AC"/>
</ROWDATA>
</DATAPACKET>
本文链接:https://www.f2er.com/3137696.html