类型不匹配的问题(50分)

  • 主题发起人 主题发起人 whisht0111
  • 开始时间 开始时间
W

whisht0111

Unregistered / Unconfirmed
GUEST, unregistred user!
m:=(strtoint(copy(s2,13,3)))-(strtoint(copy(query1.Fields[0].asstring,13,3)));
if m>0 then
begin
....
end;
s2是个字符串,数据库中的字段是character型的
m是integer型的变量,当程序运行到if m>0时报告类型不匹配,一直没有解决
希望各位看一下,告诉我是怎么回事
先谢了,刚来没什么积分,只能先奉上50分^_^
 
s2和query1.Fields[0].的值都是由数字组成的字符么?
 
用COPY取出来的是一个三位的数字
 
用 EConvertError exception.看看,是否在转换的时候错了?
 
奇怪~~想想 :〉
 
procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2 : string;
m : integer;
begin
s2 := '0238457236479561345';
s1 := '0712389457893476523789569';
m:=(strtoint(copy(s2,13,3)))-(strtoint(Copy(s1,13,3)));
if m>0 then
begin
ShowMessage(IntToStr(m));
end;
end;
 
query1.Fields[0].asstring可能有空值
 
上面这个我看了一下,通过了!那么问题只可能出在query取出来的数据了!你看看
你的数据库里面的信息把!着重分析query这块!
 
这样的情况应该是S2和query1.Fields[0]的类型有问题,仔细查查!
 
s2:='010.019.163.011'
query中的数据是 010.091.160.000
就是这样
希望能够有帮助
 
关键问题是query1.Fields[0].asstring返回的是不是010.091.160.000

你用showmessage 看看!
 
我看过了,返回值没错
 
procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2 : string;
m : integer;
begin
s2 := '010.019.163.011';
s1 := '010.091.160.000';
m:=(strtoint(copy(s2,13,3)))-(strtoint(Copy(s1,13,3)));
if m>0 then
begin
ShowMessage(IntToStr(m));
end;
end;
 
返回m为11

问题在于query!不用说了!这种测试你自己都可以做
 
我知道
我用SHOWMESSAGE看过运算后M的值
返回值也是正确的
但在与0的比较中就出现了类型不匹配的情况
所以一直不理解
 
那么,你去掉if这个,直接运行下面的!如果成功,那么就不是query的问题
 
我也试过,不好意思,我提问时没有说全
我去掉下面的比较语句后
程序可以编译
 
从昨天到现在,我一直没有解决
希望你能帮助
不管是否解决
都先谢谢你的回答
 
呵呵问题的关键在于query[''],返回的是一个variant的变量,俄认为这属于delphi的一个bug,
如果你换成asinteger或asstring,强制转换后,再进行编译就不会出现这个问题了.
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部