我通常使用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中做到这一点并且从来没有遇到任何问题。
答案 0 :(得分:5)
您正在以错误的顺序传递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