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

XE2 WideString 使用Pos函數問題

缺席
g9221712
高階會員


發表:144
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-07-29 06:51:15 IP:59.126.xxx.xxx 訂閱
請教各位前輩:
原新在Delphi7運作的很好的DBGRID Tiltle Click Sort 最近用Delphi XE2嘗試要要改寫看看
發現在這一行:
[code delphi]
if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort) = 0)
[/code]

會有如下訊息錯誤:
[DCC Error] Unit1.pas(85): E2251 Ambiguous overloaded call to 'Pos'
System.pas(25050): Related method: function Pos(const string; const string): Integer;
System.pas(25154): Related method: function Pos(const WideString; const WideString): Integer;
不知道要怎麼改寫,知道是XE2改成WideString的緣故,但要怎麼下手呢?懇請前輩指引一下方向,謝謝!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
g9221712
高階會員


發表:144
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-07-29 06:54:24 IP:59.126.xxx.xxx 訂閱
自己試出答案了
[code delphi]
if (Pos(WideString(Column.Field.FieldName), Sort) = 1) and (Pos(WideString(' DESC'), Sort) = 0)
[/code]


------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
GrandRURU
站務副站長


發表:235
回覆:1655
積分:1753
註冊:2005-06-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-07-29 14:50:04 IP:182.235.xxx.xxx 未訂閱

[code delphi]
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;
[/code]





===================引 用 g9221712 文 章===================
自己試出答案了
[code delphi]
if (Pos(WideString(Column.Field.FieldName), Sort) = 1) and (Pos(WideString(' DESC'), Sort) = 0)
[/code]


編輯記錄
GrandRURU 重新編輯於 2012-07-29 00:52:27, 註解 無‧
GrandRURU 重新編輯於 2012-07-29 01:08:26, 註解 轉貼來源:http://blog.csdn.net/happycyp/article/details/3368314‧
hotswin
中階會員


發表:72
回覆:92
積分:52
註冊:2003-11-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-09-22 21:18:57 IP:122.117.xxx.xxx 訂閱
WidePMatch 這是那個函式呢??

===================引 用 GrandRURU 文 章===================

[code delphi]
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;
[/code]





===================引 用 g9221712 文 章===================
自己試出答案了
[code delphi]
if (Pos(WideString(Column.Field.FieldName), Sort) = 1) and (Pos(WideString(' DESC'), Sort) = 0)
[/code]

------
http://xinjier.0424617287.com/gift/
禮贈品
系統時間:2017-12-13 7:21:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!