我通常使用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中一直这样做,并从未遇到过问题的方法。
sl.Text
将从内部字符串数组构建生成字符串,使用固定的 EOL 分隔符。 - Stijn SandersPos
转换为处理字符串的函数Pos
时出现错误是可以理解的,因为在C++中,this
是栈上不可见的隐式“第一个”参数。另一方面,遵循文档而不是直觉更加安全。 - Wolf