Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Delphi中使用Pos()查找换行符_String_Delphi_Line Breaks - Fatal编程技术网

String 在Delphi中使用Pos()查找换行符

String 在Delphi中使用Pos()查找换行符,string,delphi,line-breaks,String,Delphi,Line Breaks,我通常使用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')

我通常使用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中一直使用的方法,从来没有遇到过问题。

如果您以错误的顺序传递函数的参数,首先必须传递要搜索的子字符串,然后传递缓冲区字符串

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


哦,老兄。。。非常感谢你。我只是觉得自己很愚蠢。在C++Builder中,Pos()函数是字符串的一种方法,我总是对独立函数感到困惑。@jmiller:在XE5中,您现在可以对基本数据类型调用方法,包括字符串(通过
SysUtils.TStringHelper
类),例如:
使用SysUtils;如果sl.Text.IndexOf(#13#10)>-1,则…
。请注意,这样的代码是基于0的,而不是基于1的。即使您确实以正确的顺序传递了Pos的参数,这也是一个特殊的示例,因为
sl.Text
将从字符串的内部数组生成结果字符串,使用固定的EOL定界符。在<>代码> POS < /Co>字符串方法中,这样的错误在 PoS< /Cuff>函数(对字符串进行处理)中是完全可以理解的,考虑到在C++中代码>这个是堆栈上的隐形隐式“第一”参数。另一方面,遵循文档而不是直觉更安全。
if Pos(sLineBreak, sl.Text) > 0 then