我试图迁移我的代码以便在android上工作所以我在这里阅读http://docwiki.embarcadero.com/RADStudio/XE8/en/Migrating_Delphi_Code_to_Mobile_from_Desktop
我知道我没有使用pos
或delete
和zerobased
,或者我必须转zero based off
,我不会感觉很好zero based off
所以我处理我的代码我将p := Pos(Sep, S);
更改为p := S.IndexOf(Sep, 0,0);
,但我无法使用删除TStringHelper.Remove
功能而不是删除
while (S <> '') and (ParamsCount < 10) do
begin
Inc(ParamsCount);
p := S.IndexOf(Sep, 0,0);
//p := Pos(Sep, S);
if p = 0 then
Params[ParamsCount] := S
else
begin
Params[ParamsCount] := Copy(S, 1, P - 1);
TStringHelper.Remove(S, 1, P + 4); // here how do i use remove its only have integer parameter how to use Remove instead of Delete
//Delete(S, 1, P + 4);
end;
end;
end;
答案 0 :(得分:3)
这里有一些问题。首先,ZEROBASEDSTRINGS
指令不影响任何此代码,因为您不使用[]
运算符。不过,我建议您将ZEROBASEDSTRINGS
保留为ON
并采用新的方法。
字符串帮助程序专门使用基于零的索引,如果您在代码中效仿,它将减少混淆。
至于细节:
Remove
返回一个新字符串,而不是修改其参数。IndexOf
返回-1
表示未找到匹配项。Substring
而不是Copy
。后者使用基于旧学校的索引。您应该避开所有旧SysUtils
函数并专门使用帮助程序。 我会写这样的代码:
p := S.IndexOf(Sep);
if p = -1 then
Params[ParamsCount] := S
else
begin
Params[ParamsCount] := S.Substring(0, P);
S := S.Remove(0, P + 3);
end;
您的代码有点乱,因此上面可能会有一些错误。我试图从注释掉的代码中解读意图。但是,上面的代码演示了您应该采用的样式。