全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3589
推到 Plurk!
推到 Facebook!

如何比對字串?

答題得分者是:japhen
sosolo
一般會員


發表:1
回覆:2
積分:0
註冊:2007-01-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-17 19:29:49 IP:61.64.xxx.xxx 訂閱
各位先進:
table 其中一欄位字串為 'AB%$$CD$' (%: 表示字母 A~Z 或數字 0~9,$: 表示數子字 0~9)
在介面上設計 edit 讓人輸入字串和此 table 比對是否相符
若輸入的為 'ABA67CD9' 或 'AB967CD9' 皆為符合
若輸入的為 'AB967CDE' 則不符合,因為 $ 只能對應到數字
請問是不是要寫迴圈來做判斷?
有沒有比較好的方式呢?
謝謝幫忙討論 ^__^
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-17 20:35:42 IP:211.22.xxx.xxx 未訂閱
Additional頁面中的MaskEdit可以解決你的問題!去查查看它怎麼用~
sosolo
一般會員


發表:1
回覆:2
積分:0
註冊:2007-01-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-18 19:35:42 IP:61.64.xxx.xxx 訂閱
你好,不過這個元件好像是用在固定格式上,但 table 中的資料是不同的,'AB$CD%'、'E$$F%$D%'....字長不等,比對方式為字母需相等,但遇到 $ 及 % 時會自行判斷是否符合需求,若符合表示此字串比對成功,不知是否要寫很多層迴圈之類的,可以幫忙嗎?

Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-18 19:42:07 IP:211.22.xxx.xxx 未訂閱
MaskEdit屬性中的EditMask是可以設定的,要配合你Table中的資料寫點程式在RUN TIME中隨時變動。
japhen
中階會員


發表:2
回覆:57
積分:71
註冊:2006-08-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-01-18 23:06:45 IP:211.74.xxx.xxx 訂閱
用這個函數去比對你要的字串吧,參數1是使用者輸入的字串,參數2是你要的對照模版字串,分大小寫

function comparestr(instr,samplestr : string):boolean;
var i : integer;
begin
result:=(length(instr)=length(samplestr)); // 先比二字串長度,不同就不用比下去了,直接返回FALSE
if result then // 如果字串等長才繼續下去
for i := 1 to length(instr) do begin
case samplestr[i] of // 一個個取samplestr的每一個char ...
'A'..'Z','a'..'z','0'..'9' : RESULT:=instr[i]=samplestr[i]; // 如果samplestr取出的字元是 A到Z、a到z、0到9,就直接相比
'$' : result:= instr[i] in ['0'..'9']; // 如果samplestr取出的字元是$,則把instr取出的字元看看是不是0到9
'%' : result:= instr[i] in ['A'..'Z','a'..'z']; //同理,如果是%,則直接檢查是不是英文字元
end;
if not result then break; // 如果這次檢查是錯誤的(not result就是false) 那就直接跳出結束for
end;
end;
------
歡迎在大陸的台商加入我們的行列
台商小棧 www.twgocn.com
sosolo
一般會員


發表:1
回覆:2
積分:0
註冊:2007-01-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-01-19 20:23:07 IP:61.64.xxx.xxx 訂閱
感謝各位先進的幫忙指點 ^__^
japhen 先進的 function 正好符合我的需求
感謝你抽空解答~~~
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-01-26 10:45:00 IP:211.78.xxx.xxx 訂閱
像你這種比較的情形,我建議你使用正規表達式的方法,下載 RegularExpressions 的相關元件好好研究
系統時間:2024-04-27 8:57:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!