4

我通常使用 C++Builder 并刚刚开始在 Delphi 中进行测试。我找不到 Delphi (XE5)Pos()函数的换行符,它的语法很奇怪。我错了什么?使用其他类似的功能StringReplace()可以正常工作。这是一个示例代码:

sl := TStringList.Create;
sl.Add('Hello');
sl.Add('world');
sl.Add('!');

if (Pos(sl.Text, #13#10) > 0) then
    ShowMessage('1')
else if (Pos(sl.Text, #13) > 0) then
    ShowMessage('2')
else if (Pos(sl.Text, #10) > 0) then
    ShowMessage('3')
else
    ShowMessage('4');  // Comes always here...

这就是我在 C++Builder 中一直这样做的方式,并且从来没有遇到过问题。

4

1 回答 1

8

Pos以错误的顺序传递函数的参数,首先必须将子字符串传递给搜索,然后传递缓冲区字符串。

function Pos(const SubStr, Str: _ShortStr; Offset: Integer): Integer;
function Pos(const SubStr, Str: UnicodeString; Offset: Integer): Integer; overload;
function Pos(const SubStr, Str: _WideStr; Offset: Integer): Integer; overload;
function Pos(const SubStr, Str: _RawByteStr; Offset: Integer): Integer;

尝试这个

if  Pos(#13#10, sl.Text) > 0 then

或者

if Pos(sLineBreak, sl.Text) > 0 then
于 2013-11-11T01:38:19.797 回答