大家好,请问如何使用OleVariant类型?比如,一个函数的参数是OleVariant类型,此参数的具体内容是一系列产品编号.请问,如何来使用这些产品编号呢?也就是说,如何把OleVariant类型的一系列编号,
分为单个产品编号来使用??
解决方案 »
- delphi 通过CM_Request_Device_Eject删除可移动设备
- idtcpserver如何主动向idtcpclient发送一条数据
- Mac 地址获取
- 高低排列?
- 今天找到份工作 散分 还有些问题请教大家
- 关于listbox的一个操作,谢谢帮忙,在线等
- 为什么网页无法调用我做的ocx控件里的函数呢?急啊?help Me!
- 今天第一次听说用intraweb开发b/s系统,不知如何使用,我装了delphi不知为何没有intraweb
- 急,如何判断操作系统类型,在线等待,马上给分。
- dbgrideh 那位高手会用,怎样在其中添加 合计
- delphi 的窗體透明..
- keyup,keypress,keydown事件有什么不同?
.............................................
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()
//先把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;