procedure TForm1.BitBtn1Click(Sender: TObject);
var
   List: Variant;
   I: Integer;
   Client:TClientDataSet;
   str:string;
begin
VarClear(List);
List:=DCOMConnection1.GetServer.AS_GetProviderNames;
if VarIsArray(List) and (VarArrayDimCount(List) = 1) then
    for I := VarArrayLowBound(List, 1) to VarArrayHighBound(List,1) do
str:=trim(List[i]);
client:=TClientDataSet.Create(self);
client.Name:=str+'s';
client.RemoteServer:=DCOMConnection1;
client.ProviderName:=str;
client.Active:=true;
end;
// 我是想根据中间层的DataSetProvider<末知有多少DataSetProvider>在客户端创建ClientDataSet,这些ClientDataSet是和中间层的DataSetProvider一一相对
请帮忙修改,谢谢

解决方案 »

  1.   

    List:=DCOMConnection1.AppServer.AS_GetProviderNames;改了成这个就只能拿到最后一条记录
    我是想拿全部,可能是 for 那里不能这样写,请老大帮帮忙啊
      

  2.   

    if VarIsArray(List) then
    begin
        for I := VarArrayLowBound(List, 1) to VarArrayHighBound(List,1) do
       begin
         str:=trim(List[i]);
        client:=TClientDataSet.Create(self);
        client.Name:=str+'s';
        client.RemoteServer:=DCOMConnection1;
        client.ProviderName:=str; 
        client.Active:=true;
       end;
    end;你的代碼有不少矛盾之處
      

  3.   

    for I := VarArrayLowBound(List, 1) to VarArrayHighBound(List,1) do
       begin
    //........... 少加了这个
       end;