为什么strtoint不起作用了,请各位帮帮我(在线),几天了,这个论坛现在就这么冷轻吗!!!!! (100分)

  • 主题发起人 主题发起人 Najasna
  • 开始时间 开始时间
N

Najasna

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(!]我有一问题如下:
编了一段程序,为了在打印前,在一定的范围内,调整打印的位置,用了一maskedit控件输入要移动的距离,用+号表示向右面移动,用-表示向左面移动,
现在程序段如下:
var
L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12:integer;
T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12:integer;
begin
L1:=QRp_1.QRDBText1.Left;
L2:=QRp_1.QRDBText2.Left;
L3:=QRp_1.QRDBText3.Left;
L4:=QRp_1.QRDBText4.Left;
L5:=QRp_1.QRDBText5.Left;
L6:=QRp_1.QRDBText6.Left;
L7:=QRp_1.QRDBText7.Left;
L8:=QRp_1.QRDBText8.Left;
L9:=QRp_1.QRDBText9.Left;
L10:=QRp_1.QRDBText10.Left;
L11:=QRp_1.QRDBText11.Left;
L12:=QRp_1.QRDBText12.Left;
T1:=QRp_1.QRDBText1.Top;
T2:=QRp_1.QRDBText2.Top;
T3:=QRp_1.QRDBText3.Top;
T4:=QRp_1.QRDBText4.Top;
T5:=QRp_1.QRDBText5.Top;
T6:=QRp_1.QRDBText6.Top;
T7:=QRp_1.QRDBText7.Top;
T8:=QRp_1.QRDBText8.Top;
T9:=QRp_1.QRDBText9.Top;
T10:=QRp_1.QRDBText10.Top;
T11:=QRp_1.QRDBText11.Top;
T12:=QRp_1.QRDBText12.Top;
QRP_1.table1.Active:=false;
QRp_1.Table1.Filter:='Wsxkz_BH'+'='+DBLookupComboBox1.text;
QRp_1.Table1.Filtered:=True;
QRp_1.QRDBText1.Left:=L1+strtoint(Maskedit1.EditText);
QRp_1.QRDBText1.Top:=T1+strtoint(Maskedit6.EditText);
QRp_1.QRDBText2.Left:=L2+strtoint(Maskedit1.EditText);
QRp_1.QRDBText2.Top:=T2+strtoint(Maskedit6.EditText);
QRp_1.QRDBText3.Left:=L3+strtoint(Maskedit1.EditText);
QRp_1.QRDBText3.Top:=T3+strtoint(Maskedit6.EditText);
QRp_1.QRDBText4.Left:=L4+strtoint(Maskedit1.EditText);
QRp_1.QRDBText4.Top:=T4+strtoint(Maskedit6.EditText);
QRp_1.QRDBText5.Left:=L5+strtoint(Maskedit2.EditText);
QRp_1.QRDBText5.Top:=T5+strtoint(Maskedit7.EditText);
QRp_1.QRDBText6.Left:=L6+strtoint(Maskedit2.EditText);
QRp_1.QRDBText6.Top:=T6+strtoint(Maskedit7.EditText);
QRp_1.QRDBText7.Left:=L7+strtoint(Maskedit2.EditText);
QRp_1.QRDBText7.Top:=T7+strtoint(Maskedit7.EditText);
QRp_1.QRDBText8.Left:=L8+strtoint(Maskedit2.EditText);
QRp_1.QRDBText8.Top:=T8+strtoint(Maskedit7.EditText);
QRp_1.QRDBText9.Left:=L9+strtoint(Maskedit3.EditText);
QRp_1.QRDBText9.Top:=T9+strtoint(Maskedit8.EditText);
QRp_1.QRDBText10.Left:=L10+strtoint(Maskedit4.EditText);
QRp_1.QRDBText10.Top:=T10+strtoint(Maskedit9.EditText);
QRp_1.QRDBText11.Left:=L11+strtoint(Maskedit4.EditText);
QRp_1.QRDBText11.Top:=T11+strtoint(Maskedit9.EditText);
QRp_1.QRDBText12.Left:=L12+strtoint(Maskedit5.EditText);
QRp_1.QRDBText12.Top:=T12+strtoint(Maskedit10.EditText);
QRP_1.table1.Active:=true;
QRp_1.preview;
end
请各位帮帮忙了,谢谢各位了
 
把掩码编辑组件换掉。
 
我用Edit控件也一样,提示inaccessible value.
 
我在WIN98及win2000下以及Delphi6和7下均试过,都出现同样错误,但用Envaluate计算
却是正确的,在程序中那怕是用strtoInt('-10')这样的形式出现都报同样的错误,这让我百思不得其解。
 
是strtoint函数,用inttostr函数,我试了也不行,不知何故,难道就没人知道了吗?
 
加个trim试试看:
strtoint(trim(Maskedit1.EditText))
 
它还是提示是inaccessible value,即不可存取的值。
 
应该是参数不是串型造成的。你好好检查。
 
我遇到过
用其他控件,有的空间有value属性的,也是string型
 
这是DELPHI的BUG,把编辑框中的值赋给相应变量,问题就解决了!
 
Delphi可能有成千上万的bug但就是不可能有这么低级的bug。还是自己找原因吧!
最简单的办法:鼠标放在StrToInt上按住Shift,点击鼠标,看看是不是跑到SysUtils单元
去了,如果不是,说明你的单元引用顺序有误。
许多人有个毛病,一出问题就怨Delphi的bug。“先想想是不是自己的问题”应该养成习惯。
 
应该使用
QRp_1.QRDBText4.Size.Top

QRp_1.QRDBText4.Size.Left
(注意size)
单位缺省是毫米
改变单位请通过report.Units
 
>>在程序中那怕是用strtoInt('-10')这样的形式出现都报同样的错误
单步跟踪一下到底错在哪里?
 
经我再次检测,是在跟踪时出现以上提示,而正常运行时没有问题,但是我发现没有效果,改为任何数字都不没效果,还是原来的样子,好象strintdef('',0)转任何数字都转为默认的0了。还有就是不知,QUICKREPORT中的距离是用什么方式计算的,我设置的是MM,可是实际运行中,比如:要调整20MM,可是我直接在原来的left或Top数字上再加上20,它却不是要想移动的20MM,这是为什么?
我有好几天,机器死了,才上来,不好意思,大家帮帮忙。
 
应该使用
QRp_1.QRDBText4.Size.Top (注意是 x.size.top 而不是 x.top )

QRp_1.QRDBText4.Size.Left
单位缺省是毫米
改变单位请通过report.Units
 
后退
顶部