我无法找出发生这种情况的原因。在Windows上我有一个txt文件,我从第一行读取文本'[směr:A->B]'
。
我的调试器代码。我使用断点,所以我看到AnsiPos(line, '[sm')
的结果为0.为什么?我想得到1.但是我试图搜索AnsiPos(line, 'sm')
或AnsiPos(line, 'm')
但仍未找到正面结果。为什么?我也试过了Pos()
。我应该使用不同的功能吗?我错过了什么?
readln(f,line);
if line[1]='[' then
begin;
if line[2]='s' then
if AnsiPos(line, '[sm') > 0 then
begin
if AnsiPos(line, 'B->A') > 0 then
smerTestu := 'B'
else
smerTestu := 'A';
end;
end;
答案 0 :(得分:1)
来自System.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;
定义为:
找到给定字符串中的子字符串。
Pos方法返回Str的第一个出现的索引,开始在偏移处搜索。
如果未找到Substr或Offset无效,则此方法返回零(例如,如果Offset超过String长度或小于1)。
Offset参数是可选的。默认情况下,偏移设置为1,如果未指定偏移值,则从默认值开始搜索。
在您的代码中,您混淆了参数Str
和SubStr
的顺序。
AnsiPos()
函数的工作方式相同。