各位老大,小弟有个问题,是关于画刷的,救急呀,在线等候(50分)

  • 主题发起人 苟延残喘
  • 开始时间

苟延残喘

Unregistered / Unconfirmed
GUEST, unregistred user!
各位老大,小弟还想在问一个问题:menmo.lines是一个字符串类型,我想把他变为一个
integer类型,然后用image.canvas.lineto(x,strtoint(memo.lines))画出来,但在执行
的时候,系统告诉我说:无效的integer类型;,请教,
 
在使用前应当先检查
strtoint(memo.lines
类型转换对不对.
var j:integer;
try
j:=strtoint(memo.lines;
except
shommessage('输入数值不对');
其它处理;
exit;
end;
image.canvas.lineto(x,j);
 
我试过了,肯定对,数据是对的,没问题,全是数字
 
你按上面的修改一下然后跟踪查看x和j的数值,看对不对
 
跟踪了,是对的,
我做的是一个通过串口传过来的全是数字的数据,我分割到了一个memo里,然后把memo的行数
做为x,把每行的数据做为y,
老大,帮帮我吧,分不过可以家
 
你用跟踪得到的数值直接画线看怎么样
如: image.canvas.lineto(897,123)
 
我测试了,动态加,静态加都是对的,如果你说,都能转化成整数值,但还出这种错
我觉得矛盾呀,都转化成整型值 ,还报什么错

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
Memo1.Clear;
for i:=0 to 9 do
memo1.Lines.Add(IntToStr(10*(i+1)));
canvas.Pen.Color:=clred;
canvas.pen.Width:=3;
canvas.MoveTo(0,0);
canvas.LineTo(10,StrToInt(memo1.Lines[4]));
end;
 
可能是数据范围的问题.在delphi中整数有好几种.你动态和静态加的可能都是在-65535~+65536
之间吧?
 
你的问题可能出在x或i上,很可能是i出现类型错误,
建议你把全部源码发过来,以便分析!
 
memo.lines是一整行,包含了#13#10符,用于转换当然会错,这样就行了:
image.canvas.lineto(x,strtoint(trim(memo.lines)))
 
有无非法字符?空格?
 
问题出在memo.lines上,其中很可能有非法字符如空行,空格,字母等。
建议你在设计阶段将lines清空,然后响应memo的onenter事件,在其中添加:memo.clear;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
956
SUNSTONE的Delphi笔记
S
S
回复
0
查看
779
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
919
DelphiTeacher的专栏
D
顶部