procedure TForm1.Button1Click(Sender: TObject);
var
strColor: string;
i, R, G, B, p: integer;
strlist: TStringList;
begin
strColor := medt.Text + '-';
strlist := TStringList.Create;
try
for R := 0 to 2 do //把变量R改为i正常
begin
//showmessage(inttostr(r)); 加上这句就正常了
p := pos('-', strColor);
strlist.Add(copy(strColor, 0, p-1));
delete(strColor, 1, p);
end; R := strToint(strlist[0]);
G := strToint(strlist[1]);
B := strToint(strlist[2]);
finally
strlist.Free;
end; Self.Color := TColor (RGB (R, G, B)); edtColor.Text := '$' + IntToHex (TColor (RGB (R, G, B)), 8); edtColor.SetFocus;
end;跟踪调试时, R的值在循环头为4, 到循环体内变为3了。 成了一个死循环。 用i做循环变量则正常。 用G时情况一样。 是delphi在那个位置用R,G做了全局变量? 那也有作用域限定阿
var
strColor: string;
i, R, G, B, p: integer;
strlist: TStringList;
begin
strColor := medt.Text + '-';
strlist := TStringList.Create;
try
for R := 0 to 2 do //把变量R改为i正常
begin
//showmessage(inttostr(r)); 加上这句就正常了
p := pos('-', strColor);
strlist.Add(copy(strColor, 0, p-1));
delete(strColor, 1, p);
end; R := strToint(strlist[0]);
G := strToint(strlist[1]);
B := strToint(strlist[2]);
finally
strlist.Free;
end; Self.Color := TColor (RGB (R, G, B)); edtColor.Text := '$' + IntToHex (TColor (RGB (R, G, B)), 8); edtColor.SetFocus;
end;跟踪调试时, R的值在循环头为4, 到循环体内变为3了。 成了一个死循环。 用i做循环变量则正常。 用G时情况一样。 是delphi在那个位置用R,G做了全局变量? 那也有作用域限定阿
解决方案 »
- 一个窗体继承的问题!
- delphi7中,按住ctrl用鼠标左键点击函数,怎么不跳转到函数申明或者实现的地方去呀?
- 大家帮帮忙。控件!控件!
- 如果在 win98,win2000,winxp 用代码设置 默认打印机 ?????????????
- 请教各位,如何制作一个多页面的浏览器?
- 如何设置Delphi中永久列对象的列标题字体大小及对齐方式
- 有没有函数可以判断一个点是否在一个Rect中?
- 怎样打开钱箱,我在pb用PrintSend(JOBS,"~h1B~h70~255~h15~h20",255),到我在d6,就不知道用什么函数替代?格式怎样?我刚学d6,谢谢!
- 如何控制已编译好的程序
- DBGRILD问题
- 如何将word,pdf,Excel等文档转化成bmp图片
- 又有问题了,Hex到汉字和英文同时输出!(中国人帮忙顶了)
不明白,我用R也是正常的。你的代码,不会死循环的呀。
好象在循环体中,如果不使用R变量,那么R的值不定,循环是靠寄存器完成的,和R无关。
Self.Color := TColor (RGB (R, G, B));
edtColor.Text := '$' + IntToHex (TColor (RGB (R, G, B)), 8);
edtColor.SetFocus;新建一个工程贴上去也是死循环
procedure TForm1.Button1Click(Sender: TObject);
var
strColor: string;
i, R, G, B, p: integer;
strlist: TStringList;
begin
//strColor := medt.Text + '-';
strColor := '340-250-210-';
strlist := TStringList.Create;
// R := 999;
try
for R := 0 to 2 do
begin
p := pos('-', strColor);
strlist.Add(copy(strColor, 0, p-1));
delete(strColor, 1, p);
end;
showmessage('ok');
R := strToint(strlist[0]);
G := strToint(strlist[1]);
B := strToint(strlist[2]);
finally
strlist.Free;
end; Self.Color := TColor (RGB (R, G, B)); Edit1.Text := '$' + IntToHex (TColor (RGB (R, G, B)), 8);
end;真搞不懂
是优化的结果,因为后面对R进行了赋值,循环内部没有使用该变量。
但是,不应该对循环造成死循环。不知道是什么问题。