case 比對問題 |
尚未結案
|
larrytyan
一般會員 發表:51 回覆:38 積分:17 註冊:2004-08-11 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
larrytyan
一般會員 發表:51 回覆:38 積分:17 註冊:2004-08-11 發送簡訊給我 |
Dear Sir.
我覺得字串也很重要不是嗎??
如果不能比對字串那不就只好用 IF 一個一個往下比了...
為什麼 borland 不能改善一下呢??
TKS.
引言: 您好﹗ 在Delphi中Case的語法﹐只适用于以下四種形態的資料﹕ Integer整數資料形態, Char字元資料形態, Enumerated列舉資料形態, SubRange範圍資料形態 ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================ |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 請問 case 真的不能做字串比對嗎??? 有什麼變通的方法嗎?larrytyan 你好 第一個變通方法,利用TStrings的IndexOf Method Var Sl : TStrings; s : String; begin sl := TStringList.Create; Sl.Commatext := '1,2,a1,a2,aa'; S := 'A1'; Case Sl.IndexOf(s) of -1:ShowMessage('無符合資料 '); 0:ShowMessage('你選到的是 1'); 1:ShowMessage('你選到的是 2'); 2:ShowMessage('你選到的是 a1'); 3:ShowMessage('你選到的是 a2'); 4:ShowMessage('你選到的是 aa'); end; sl.free; end; 第二個 也是與上個方法相同關念,只是沒有使用 TStrings,但要自已寫個Function,自行解析字串,找出你選的是第幾個子字串 Function IndexOfStrs(Const cList,value:String):Integer; Var L1, L2, i, j, p :Integer ; Begin Result := -1 ; L1:= Length(cList); L2:= Length(value); If (L1 =0) or (L2=0) Then Exit; p := 0 ; i := 1 ; Repeat // 檢查是否符合 For j:= 1 To L2 Do Begin If ((i j-1)>L1) Or (UpCase(cList[i j-1]) <> UpCase(value[j])) Then Break ; End; If (j > L2) And ((cList[i j-1]=',') or ((i L2)>L1)) Then Begin Result := p ; Break; End; Inc(i); For j := i To L1 Do Begin If cList[j]=',' Then Begin i:=j 1; Inc(p); Break; End; End; Until i > L1 ; End; 使用時如下方式呼叫 cItems := '1,2,a1,a2,aa'; Case IndexOfStrs(cItems ,'a2') of -1:ShowMessage('無符合資料 '); 0:ShowMessage('你選到的是 1'); 1:ShowMessage('你選到的是 2'); 2:ShowMessage('你選到的是 a1'); 3:ShowMessage('你選到的是 a2'); 4:ShowMessage('你選到的是 aa'); end;_______________________________________ 深藍的魚,祝您好運..........連連 發表人 - chance36 於 2005/03/18 20:17:59 |
miteamb
一般會員 發表:0 回覆:2 積分:0 註冊:2002-10-29 發送簡訊給我 |
以下寫法,可參考
function StringIndex ( const SearchString: string;StrList: array of string): Integer;
var zi:Integer;
begin
for zi:=0 to High(StrList) do
if CompareText(SearchString,StrList[zi])=0 then
begin
Result:=zi;
Break;
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
case StringIndex ( edit1.text,['Label1','Label2']) of
0: edit1.text:='TT1';
1: edit1.text:='TT2';
else
edit1.text:='FF';
end;
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |