StrToInt,StrToFloat: 容易的我都不好意思问了。(20分)

  • 主题发起人 主题发起人 歪就歪
  • 开始时间 开始时间

歪就歪

Unregistered / Unconfirmed
GUEST, unregistred user!
有什么好办法在StrToInt和StrToFloat前进行检查、确认这
STRING能换成数字?
肯定人人遇到这情况,也肯定不同的人有不同的解决办法。
 
try
strtoint(...)
except
showmessage('不能转换');
end;

 
w k!
y9y: 赚了那么多钱,也不多出点,就这么点....
 
val()
财主多是守财奴, 此话果然不假
 
为何不用
function StrToIntDef(const S: string;
Default: Integer): Integer;
 
Y9Y:
给你回信迟了,还请见谅.请查看你的信箱tianhai@hotmail.com.
 
本人方法很笨,莫见笑;
转换前逐个字符进行ASCII码值比较...
还是LISTEN为妙:-)
 
撰寫一個函數.
function CheckChangeToInt(s: string):boolean;
var
i: integer;
begin
result := false;
try
i := strtoint(s)﹔
result := true;
except
Abort;//使用沉默的异常
end;
// try
end;
// func
不知此回答妳是否滿意﹖
 
try
ANum:=StrToInt(AString)
except
ANum:=DefaultNum //你老兄的默认值
end
 
用不用啊……自己写个函数?
直接用字幕告诉用户不要乱填就是罗!
不过用个TRY还是很好的办法……
 
TO ACKK:
呸,也亏你排了那么头三名了,竟说出这种话来。从来都应该
是根据问题的难度定分,哪儿有根据提问人的财产定分的道理?
TO 张国龙先生:
val()
财主多是守财奴, 此话果然不假
new()
高手竟是一酸丁,还是刚初始化的。
冲你俩在这儿胡说八道,我把这问题留两天再关!啊哈哈哈……
 
function StrToDouble(str: string):do
uble;
var
i:do
uble;
code: integer;
begin
val(str, i, code);
if code<>0 then
begin
Application.MessageBox('固定字段,不能删除!', '提示', MB_ICONEXCLAMATION + MB_OK);
result:=0;
end
else
result := i;
end;
试试可以吗?
 
一个小问题也大有学问!
 
StrToInt可以用
function StrToIntDef(const S: string;
Default: Integer): Integer;
但Strtofloat只能用try
 
StrToIntDef真是很方便。指定了就不能转换也可返回一个常数。
不过如果要判断的话,我觉得可以这样,取长度作一个循环一个一个测试,
如果每个字符都是在['0'..'9']之间则一定可以转换。
如果是实数则改成['0'..'9','.']以保证小数点。
 
多人接受答案了。
 
后退
顶部