操作系统: winxp
    编程工具: vb,delphi 
    问题: 我将一个用VB编写的Active Dll导入到Delphi后
    因为Delphi 
    没有for each ... in ...,所以只能用: 
    for i:=0 to somethings.count -1 
    可是当使用somethings.item(i+1)时,因为在VB中somethings.item的参数是Variant类型,导入到delphi后为OleVariant类型,而for i:=0..语句中i必须是顺序数,delphi提示实参和形参类型必须一致,所以出现错误。如何解决? 回答:     试试: 
    var V: OleVariant; 
     i: Integer; 
    begin 
     for i := 0 to someting.Count - 1 do 
     begin 
     v := i; 
     ............. 
 (我用过someting.item[pOleVariant];不行,提示数据类型不正确,var pOleVariant:OleVariant,
   请问应该怎么用,谢谢)     end; 
    end; 

解决方案 »

  1.   

    var t: Variant;
        V: OleVariant;
    begin
       ...
       t := v;
       ...
    end;
      

  2.   

    楼上帮忙看看,我的问题出在那里:我用了Scripting_TLB类中的一个接口iFileCollection,这是一个文件集合,我想得到具体的一个文件ifile;我定义了了pfile:ifile ;我这样用它始终提示“参数不正确”;
      var 
         pFileCollection:iFileCollection;
         pOleVariant:OleVariant;
         ……
         pOleVariant=pFileCollection.count-1
         //pFileCollection已经有值,且iFileCollection.count:=9 我测试过了
        pfile:=pFileCollection.item[pOleVariant]; //问题就出在这一行,请问应该真么用。
     
      

  3.   

    pfile := pFileCollection.item[pOleVariant] as ifile;
      

  4.   

    关注一下 不过OLEVARIANT都是一样的东西吧?
      

  5.   

    首先谢谢楼上的朋友热情的帮忙,但问题还是没有解决;我的函数是这样写的,请帮帮忙看看,我是初学者,谢谢:
    procedure AddAllIcoInFile(pFilePath:string;img1:timagelist);
        var
        i:integer;j:integer;
        pOleVariant:OleVariant;
        pFolderCount:integer;pFileCount:integer;
        pFileSystemObject:tFileSystemObject; pDrive:idrive;
        pFolder:iFolder;  pFoldercollection:iFoldercollection;pLoopFolder:iFolder ;
        pFile:iFile ;    pFileCollection:iFileCollection;
        begin
            pFileSystemObject:=tFileSystemObject.Create(nil)  ;
            pFolder:=pFileSystemObject.DefaultInterface.GetFolder(pFilePath) ;
            pFoldercollection:=pFolder.SubFolders ;
            pFileCollection:=pFolder.Files ;
            pFolderCount:= pFoldercollection.Count;
            pFileCount:=pFolder.Files.Count ;
            i:=1;
            pOleVariant:= pFileCollection.Count-1 ;
            pFile :=pFileCollection.Item[pOleVariant] as ifile;
            showmessage(pfile.Name ) ;
    //        exit;
            msgstring:='';
            while i<pFolderCount do
                  begin
                     if i=0 then  msgstring:=( '文件夹共有:'+ inttostr(pFolderCount)+'个' );
                     if msgstring='' then msgString:='           '+pFoldercollection.Item[i].Name
                     else msgstring:=msgstring+#13+ '          '+pFoldercollection.Item[i].Name;                 i:=i+1;
                  end;        showmessage(msgstring);
        end;
      

  6.   

    上面程序运行到 pFile :=pFileCollection.Item[pOleVariant] as ifile; 就报错:参数不正确!