菜鸟问题----OleVariant类型的使用

hhjfy 2002-12-03 04:58:43

大家好,请问如何使用OleVariant类型?

比如,一个函数的参数是OleVariant类型,此参数的具体内容是一系列产品编号.

请问,如何来使用这些产品编号呢?也就是说,如何把OleVariant类型的一系列编号,
分为单个产品编号来使用??
...全文
1047 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoming0909 2010-06-09
  • 打赏
  • 举报
回复
理解的不是很清楚
xiaoyan21 2002-12-11
  • 打赏
  • 举报
回复
function Tform1.VariantToList(VarOle:OleVariant):TStringList;
//先把olevariant转换成为TStringList类型
var
List:TStringList;
StrRecord:OleVariant;
i:integer;
High:integer;
Low:integer;
begin
if not VarIsArray(VarOle) then
Exit;
List:=TstringList.Create;
High:=VarArrayHighBound(VarOle,1);
Low:=varArrayLowBound(VarOle,1);
for i:=Low to High do
List.Add(VarOle[i]);
Result:=List;
end;

function Tform1.SearchBill(BillNumber:OleVariant):OleVariant;
var
Query : TQuery;
StrRecord:OleVariant; //存入查寻所得结果
BillList:TStringList; //存放单据号列表
strBillNo:String; //存放单据号
strBillPerfix:String; //存放单存类型
StrBillName:string; //单据名称
StrBillMName:string; //表名
i,index:integer;
begin
BillList:=TstringList.Create;
BillList:=VariantToList(BillNumber);//调用上面定义的函数
Query := TQuery.Create(nil);
Query.DatabaseName:='materiel_mgr';
i:=BillList.Count;
StrRecord:=VarArrayCreate([1,'i',1,6],OleVariant);
for i:=0 to BillList.Count-1 do
begin
strBillNo:=BillList.Strings[i];
index:=pos('-',strBillNo);
strBillPerfix:=copy(strBillNo,1,index-1);
try
Query.SQL.Clear;
Query.SQL.Add('select BillName,BillMName from TableType_Tab where BillPerfix='#39+strBillPerfix+#39);
Query.Open;
StrBillMName:=Query.FieldValues['BillMName'];
StrBillName:=Query.FieldValues['BillName'];
Query.SQL.Clear;
Query.SQL.Add('select makeDate,FDate,OutMan,State,LogInsertDate from '+StrBillMName+' where BillNo='+#39+strBillPerfix+#39);
Query.Open;
StrRecord[i][1]:=StrBillName;
StrRecord[i][2]:=Query.FieldValues['makeDate'];
StrRecord[i][3]:=Query.FieldValues['FDate'];
StrRecord[i][4]:=Query.FieldValues['OutMan'];
StrRecord[i][5]:=Query.FieldValues['State'];
StrRecord[i][6]:=Query.FieldValues['LogInsertDate'];
except
Result:=-1;
end;
end;
Result:=StrRecord;
end;
hhjfy 2002-12-03
  • 打赏
  • 举报
回复
还是不太明白,有简单一些的方法吗?
SilveryFox 2002-12-03
  • 打赏
  • 举报
回复
use comobj;
.............................................
var varole:olevariant;
vararray:array of .......
begin
varole:=createoleobjete( );
vararray:=varole;


-================

Olevariant的高级用法是构造可变数组;调用vararraycreate()
function vararraycreate(const bounds:array of integer;vartype:integer):variant;

var a,b:olevariant;
i:integer;
begin
a:=vararraycreate(0,9],varinteger);
for i:=0 to 9 do a[i]:=i+1;
b:=vararraycreate([1,4,0,9],varvariant);
............
可变数组的基类型不能是varstring,要创建一个字符串类型的可变数组,应当用varolestr来代替varstring;

vararraayiof()
vararraydimcount)|()
vararraylowbound()
vararraylock()
vararrayunlock()
aquadp 2002-12-03
  • 打赏
  • 举报
回复
以流操作的形式来使用;如果你知道了那个为OlEVARIANT类型的结构,然后将用流读出的数据付给那个变量就可以了吧:)试试

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧