delphi中如何判别输入的是否为时间类型(200分)

  • 主题发起人 主题发起人 gming
  • 开始时间 开始时间
var DatetimeVar:TDatetime;


try
DatetimeVar:=strtodatetime(edit1.text);
except
showmessage(edit1.text+' is not a valid datetime string');
edit1.setfocus;
exit;
end;
 
Function IsDateTime(const AString:String):boolean;
begin
try
StringToDateTime(AString);
Result:=true;
except
Result:=false;
end;
end;
 
可以在输入的时候,加以限制,试试TMaskEdit来限制输入;
 
如果是FIELD,则在FIELD的ONGETTEXT事件中检查:

try
StrToDateTime(trim(InPutString))
except
ShowMessage('','',)
end;
 
看看 unit SysUtils 的 ScanDate 和 ScanTime 的实现,其实很清楚的。
StrToDateTime 主要就是调用这两个函数。

From: BaKuBaKu
 
iknow的方法就是简单。
 
我觉得如果单从时间输入上说用MastEdit比较好,
如果这个问题复杂化,比如说输入的是MONEY(比如要¥9999.99)
或者是其他有限制条件的,那我觉得用try...except不错。

但是,try..except是要到离开输入框才检查,也可以在EDIT的OnPress事件中
写这样的代码:
if not (key in ['0'..'9',#13,#8,'.']) then
key := #0;

限制输入的字符。

 
接受答案了.
 
后退
顶部