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

Widestring 搜索字串

尚未結案
TATSU
版主


發表:50
回覆:135
積分:62
註冊:2003-01-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-23 22:01:11 IP:203.218.xxx.xxx 未訂閱
請問各位知不知有那些元件可以做到 Widestring 的字串搜索? 像 Delphi 內那個 function Pos 一樣..... 我不想中間做轉換(widestring -> string -> widestring)再做搜索,我想直接找出 widestring 內的一些 widechar 或 widestring 字串。 發表人 - tatsu 於 2004/03/23 22:31:26
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-24 00:02:54 IP:61.62.xxx.xxx 未訂閱
Hi, 請參考這篇: http://fundementals.sourceforge.net/cUnicode.html    引入兩個 function 即可使用:
function WidePMatch(const M: WideString; const P: PWideChar): Boolean;
var I, L : Integer;
    Q, R : PWideChar;
begin
  L := Length(M);
  if L = 0 then
    begin
      Result := False;
      exit;
    end;
  R := Pointer(M);
  Q := P;
  For I := 1 to L do
    if R^ <> Q^ then
      begin
        Result := False;
        exit;
      end else
      begin
        Inc(R);
        Inc(Q);
      end;
  Result := True;
end;    function WidePos(const F: WideString; const S: WideString; const StartIndex: Integer=1): Integer;
var P : PWideChar;
    I, L : Integer;
begin
  L := Length(S);
  if (StartIndex > L) or (StartIndex < 1) then
    begin
      Result := 0;
      exit;
    end;
  P := Pointer(S);
  Inc(P, StartIndex - 1);
  For I := StartIndex to L do
    if WidePMatch(F, P) then
      begin
        Result := I;
        exit;
      end
    else
      Inc(P);
  Result := 0;
end;
TATSU
版主


發表:50
回覆:135
積分:62
註冊:2003-01-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-24 01:45:47 IP:203.218.xxx.xxx 未訂閱
謝謝你的回覆,這個正正是我想要的,以往做這些字串的尋找及轉換, 我都會做兩個 PChar ,然後分段一次次 move 到新的 PChar 去, 到這個 widestring 時,我真的又要想過法子。
系統時間:2024-07-06 1:34:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!