少用Delphi的编译优化(6.0/7.0)

ThenLong 2003-11-11 12:12:27
我刚遇到的问题是在编译器优化打开情况下
循环调用一个用到很多局部变量的过程
结果发现了一个问题(Bug)

循环只做一次,循环变量就被溢出了
我没有跟踪汇编,只是跟踪了N次代码
发现局部变量都有被篡改的情况出现
于是突然之间想到优化开关的问题,关掉优化
一切正常,我的程序流程没有错误,
说明编译器确实有不完善之处(Bug)
所以以后我都不敢开优化开关了,免得出错还找不到原因

也许高手也遇到过,对此不屑一顾呢
希望对大家(初学者和中级水平的)有所帮助。

CodeExample


var jj:integer; //特地改为jj以免和其他地方的局部变量j重复:)
begin
for jj:=1 to N do
begin
TaskID:=t.Strings[jj-1]; //从列表获得ID
DoMatch(TaskID); //d调用下面的过程进行匹配
end;
end;

procedure T****.DoMatch(var TaskID:string);
var
i,j,k:Integer;//循环变量
r,g,b:Char; //灰度
bmp:tbitmap;//位图
ms:TMemoryStream;//内存流
pMs:PChar;//指针
a:array[1..88]of array[1..88] of Integer;
average_y:Longint;//平均灰度
fix_y:Integer;//灰度修正值
x:PRecoIdInfo;//匹配结果结构指针
fd:array[1..7744]of Double;
dsTaskList,dsTaskInfo,dsResultData:TADODataSet;//连接
RecordNum:Integer;
begin
...
...
...

end;
...全文
132 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ThenLong 2003-11-12
  • 打赏
  • 举报
回复
up
47522341 2003-11-11
  • 打赏
  • 举报
回复
up
ThenLong 2003-11-11
  • 打赏
  • 举报
回复
优化而且还少量的增加了编译器负担,小幅度增加了时间:)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧