操作系统: 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;
编程工具: 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;
V: OleVariant;
begin
...
t := v;
...
end;
var
pFileCollection:iFileCollection;
pOleVariant:OleVariant;
……
pOleVariant=pFileCollection.count-1
//pFileCollection已经有值,且iFileCollection.count:=9 我测试过了
pfile:=pFileCollection.item[pOleVariant]; //问题就出在这一行,请问应该真么用。
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;