难题:关于格式化字符串并加以判断问题~~(50分)

  • 主题发起人 随风飘零叶
  • 开始时间

随风飘零叶

Unregistered / Unconfirmed
GUEST, unregistred user!
我的代码中需要进行约束判断。
比如对某个EDIT输入框中输入的字符长度进行限制。
而我的限制代码是保留在数据库中的,读出来是字符串格式。
例:限制字符长度大于等于10小于20的代码字符串是value1>=10 and value1<20
这个字符串怎么能够对EDIT1.TEXT输入的长度进行检查呢?
var
Lengthstring:string;
begin

Lengthstring:=...[值为value1>=10 and value1<20]
怎么格式化value1为length(edit1.text)
从而来判断EDIT1输入的字符长度是不是满足Lengthstring规定的长度呢?
 
将value1>=10 and value1<20中的value1改为%s或者将value1>=10 and value1<20中
的value1临时替换为%s后使用然后:
Lengthstring:=format('%s>=10 and %s<20',['length(edit1.text)','length(edit1.text)' ]);
 
如果只是上下限比较,数据库里存储1解析出0/20就简单可行,
如果是复杂的表达式就需要进行逆波兰表达式解析
 
winbell兄的办法是最好的设想,但是最终LENGTHSTRING只是字符串
怎么进行布尔判断呢
Lengthstring:=format('%s>=10 and %s<20',['length(edit1.text)','length(edit1.text)' ]);
实际中怎么判断格式化完毕的LENGTHSTRING字符串值为真为假呢?
 
我觉得如果你所要求的条件就像你题目中所说
的那么简单,只是要一个上下限的话。可以这
样试试:
1、把你的条件限制在库中存为一个最大值一
个最小值。
2、在程序中动态读出最大值和最小值,把最
大值赋给Edit的MaxLength。
3、然后判断Length(Edit.text)是不是小于
最小值应该就可以了吗。
 
问题是我的条件不仅仅是最大值最小值
如果是身份证号的时候限制就是value1=15 or value1=18
如果有别的其他需要的话,可能条件变成了value1=5 or value1=10 or value1>20 or ...
这样的话,固定是没有办法办到的~!
这是一个难题吧!
 
Lengthstring中表达式确定之后,就想办法求值就可以了。可以到网上寻找一些表达式求值
的控件,自己有时间也可以编写一个求值函数以后就一劳永逸了
 
还有谁有高明的办法吗?
 
你可以做一个标志字段吗,比如让用户选择是输入
15位的身份证号还是18位的,或是其它的,然后根
据选择来锁定输入,不就行了。不用考虑的那么复杂!
 

Similar threads

回复
0
查看
919
不得闲
S
回复
0
查看
986
SUNSTONE的Delphi笔记
S
S
回复
0
查看
804
SUNSTONE的Delphi笔记
S
D
回复
0
查看
854
DelphiTeacher的专栏
D
顶部