Help Me!调用Com组件时丢失调用函数的局部变量(100分)

  • 主题发起人 主题发起人 朝天阙
  • 开始时间 开始时间

朝天阙

Unregistered / Unconfirmed
GUEST, unregistred user!
例如 下面一段代码
for vari:=0 to 10 do
begin
if vari=5 then
s:=adsug.CallLogoUser('WinNT://','Dev04','Administrator','admin');//调用Com

if s then
showmessage(inttostr(i));//i变成了一个非常大的数字
end;
这是怎么回事啊
 
晕,你的i在哪定义的?你的循环变量是vari,不是i,i有没有初始化?没有初始化的局部变量的值是未知的
 
for vari:=0 to 10 do
begin
if vari=5 then
s:=adsug.CallLogoUser('WinNT://','Dev04','Administrator','admin');//调用Com

if s then
showmessage(inttostr(vari));//i变成了一个非常大的数字
end;
 
编成vari也是一样的阿。
而且如果vari是局部变量,调用以后会变得很大。循环还会继续。[:(]
如果是全局的,调用以后vari就一直不会变了,又是死循环[:(]
 
不赋初值给它当然大了,你至少要I:=0;然后再操作吧??
 
for vari:=0 to 10 do
begin
if vari=5 then
s:=adsug.CallLogoUser('WinNT://','Dev04','Administrator','admin');//调用Com

if s then
showmessage(inttostr(vari));//vari变成了一个非常大的数字
end;
 
你的vari在哪里定义的,我还是看不出你的vari和你调用COM有什么关系??
 
我也不知道有什么关系。但是调用com以后他的值就变了。我怀疑是调用函数的设备场景信息没有保存
 
if vari=5 then
s:=true; //去掉com调用有问题吗?
 
晕阿,去掉当然没问题了
 
>>s:=adsug.CallLogoUser('WinNT://','Dev04','Administrator','admin');//调用Com
将这句换为调用其他Com试试看
 

Similar threads

后退
顶部