说到调程序虽然你是金融行业的但你根本不会
我调程序出会么错从来不会怪DELPHI(以前用其它烂工具怪过)
DELPHI这么好的工具如果有人怪他的调不出错来了只能说这个人智商不够
给你看看我是怎么遇到问题调试的:
procedure CreateNumber;
var
Times, I, H, V, Num: Integer;
begin
I := 0;
Times := 0;
repeat
Inc(Times);
Randomize;
H := Random(9);
V := Random(9);
//ShowMessage(IntToStr(H));
//ShowMessage(IntToStr(V));
Num := 1 + Random(9);
if NumArray[H, V] <> 0 then Continue;
NumArray[H, V] := Num;
DrawNumber(H, V);
Inc(I);
until (I = 3) or (Times > 1000);
end;
这个过程的功能是在二维矩阵上随机填三个数字
可是结果却是只填一个数字。
但是我加上上面SHOWMESSAGE后,就会正确的随机填三个随机数字
注释掉SHOWMESSAGE又只显一个数了。
我疑或了几分钟就找到原因了。
我调程序其它的不会,只会用SHOWMESSGE,但是我确找到了原因:
原来是Randomize的原因。因为这函数是从系统时间里生成随机初始值的
没有SHOWMSG时,两个循环的时差很小,随机初始值结果一样。所以
RANDOM的反回值始终一样,所以始终就只能生成一个数了。
当加上SHOWMSG后,时间差大了,随机初始值不同。RANDOM的反回值也不同
就会得到三个数字了。最后我把Randomize放到循环外就一切OK了。
类似的调试技术我总结了很多。这个仅举一例。