使用splitEx时出现错误返回值,请指教. |
尚未結案
|
eoisoft
一般會員 發表:20 回覆:12 積分:6 註冊:2004-11-24 發送簡訊給我 |
SPLITEX代码:
[CODE]
function SplitEx(const Str, Delimiters: string): TStringList;
var ss: WideString;
i, St: integer;
function IsDelimiter(const Delimiters, c: string): Boolean;
begin //判断是否为拆分关键字
result := StrScan(PChar(Delimiters), c[1]) <> nil;
end;
begin
Result := TStringList.Create;
with Result do
begin
Clear;
Sorted := True;
Duplicates := dupIgnore;
end;
if Length(Str) < 1 then exit;
ss := Str; //双字符支持,纯英文可以去掉
St := -1;
for i := 1 to Length(ss) do
if IsDelimiter(Delimiters, ss[i]) then
if St <> -1 then
begin
if not(Trim(Copy(ss, St 1, i - St-1))='') then
begin
Result.Add(Trim(Copy(ss, St 1, i-St-1)));
end;
St := -1;
end
else
if St = -1 then St := i;
if St <> -1 then Result.Add(Copy(ss, St 1, Length(Str)-1));
end;
[CODE]
要取的字符为:
|||a|||b|||c|||d|||e
我的用法如下:
ListBox3.Items:=SplitEx(ADOQuery1.fieldbyname('t15').AsString, '|||');
其返回值为:
a
c
e
这是为什么?
正确的返回值应是:
a
b
c
d
e
|
chris_shieh
高階會員 發表:46 回覆:308 積分:240 註冊:2004-04-26 發送簡訊給我 |
請參考 拙作 "多字元的字串分割函式MultiSpilt"
http://delphi.ktop.com.tw/forum.asp?FORUM_ID=79 發表人 - chris_shieh 於 2005/01/31 12:30:41
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |