今天见鬼了,这个为什么一定要这行程序呢?(100分)

  • 主题发起人 主题发起人 liuind
  • 开始时间 开始时间
L

liuind

Unregistered / Unconfirmed
GUEST, unregistred user!
今天见鬼了,这个为什么一定要这行程序呢?
var
li:integer;

if (g/k=round(g/k)) and (g<>0) then li:=li+1; //
listbox1.Items.Add(inttostr(li));  //一定要有这行,li的值才会变化,表现为jpeg才能读到变化的文件名。删除这行后,jpeg读到的图片不会变。
JPeg.LoadFromFile(li);
 
有点逻辑问题,仔细想想 ,代码虽少,但就难在逻辑上,早日成功~
 
你跟踪一下代码,肯定和那句没关系,之所以li没变肯定是你的if语句不满足,所以这句li:=li+1;没有执行
 
不知道你的程序是么样通过编译的,LoadFromFile的参数应该是string类型吧
 
我跟踪过了,问题是:
1、去掉那行就jpeg读不到新的文件名,加上就可以了,
2、加上去以后,在listbox1里可以看到数据的确按要求是变化了。
 
这种鸟问题哥们一般是重启下机器,再打开编译器,重新编译一下,呵呵 。。。
 
To :芙蓉弟弟:您觉得有什么样的逻辑问题呢?
To:szhcracker:我百思不得其解,我也是偶然发现的,因为调试时数据没有变化,我就用listbox1查看一下,谁知正常了。去掉后又不正常了。
To:yblee:不知您的意思,有问题吗,LoadFromFile的参数本来就是string类型,哦,是我复制上去没改过来,在程序中是string的,不好意思,这个不是关健问题。
 
是啊,你的li是个integer类型的,怎么可能直接变成string类型的放到loadfromfile的参数里?
 
见笑了,
实际上,我这个li是读一个Tstringlist的index的,所以要变化一下,按顺序读取的,
var
li:integer;
filename:string;
if (g/k=round(g/k)) and (g<>0) then li:=li+1; //
listbox1.Items.Add(inttostr(li));  //一定要有这行,li的值才会变化,表现为jpeg才能读到变化的文件名。删除这行后,jpeg读到的图片不会变。
filename:=myfilelist.Strings[li];
JPeg.LoadFromFile(filename);
 
哈哈
新手大多不理解类似这样奇怪的问题
你把delphi的编译选项中的优化选项关掉再试试看?
 
To:不能没有你,关掉哪几项?我刚试过,没有变化。
 
我一般碰到这样的问题,
首先 rebuild 一下;
然后,检查有没有打开同名的单元,有的话关闭不必要的那个;
三,重启Delphi

另外,楼主的li应该初始化的吧?

不能没有你 所说的关闭优化选项,说的应该是去掉optimize的勾吧,不过我想应该没有用,因为楼主的li参数还是有实际作用的。
 
是关掉优化选项。
li是有用,但是优化器可能做了很恶心的优化,
出现了不同步。
 
if (g/k=round(g/k)) and (g<>0) then li:=li+1; 改成
if (g/k=round(g/k)) and (g<>0) then Inc(li); 试试,还有最好用
li := 0;对 li 做一下初始化。
 
To:szhcracker,
改成inc后,没有变化。
li:=0 在最前面有做初始化。
百思不得其解?
 
如果Delphi没有问题,一定是代码的问题,检查所有相关的变量名、定义、方法等
 
不如把所有代码都贴出来看看。
 
哈哈,找到 一个变通的办法,反正要用进度条的,把进度条加上,用li做百分比后,取消 listbox1,这样速度快了不少,解决了,只是为什么就不知道了。
发分吧
 
li:=0 在最前面有做初始化
这个是必要的,否则delphi应该会提示li可能没有被初始化。
没有初始化变量可能会导致不可预料的结果。
因为过程变量是在栈上开辟或者变量少,那么是用的寄存器。
如果不在开头给变量赋值为0,那么这个li的初始值是随机的。

所以,这句li:= 0不是可有可无,而是必须的。
 
治标不治本。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部