我如何让我的代码正确地使用零基础?
how do i get my code worked with zerobased correctley?
我正在尝试迁移我的代码以供 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;
这里有一些问题。首先,ZEROBASEDSTRINGS
指令不会影响这段代码,因为您没有使用 []
运算符。但是,我建议您将 ZEROBASEDSTRINGS
保留为 ON
并接受新方法。
字符串助手仅使用基于零的索引,如果您在代码中遵循这一点,它将减少混淆。
详情:
Remove
returns 一个新的字符串,而不是修改它的参数。
IndexOf
returns -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;
你的代码有点乱,上面可能有一些错误。我试图从注释掉的代码中破译意图。但是,上面的代码演示了您应该采用的样式。
我正在尝试迁移我的代码以供 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;
这里有一些问题。首先,ZEROBASEDSTRINGS
指令不会影响这段代码,因为您没有使用 []
运算符。但是,我建议您将 ZEROBASEDSTRINGS
保留为 ON
并接受新方法。
字符串助手仅使用基于零的索引,如果您在代码中遵循这一点,它将减少混淆。
详情:
Remove
returns 一个新的字符串,而不是修改它的参数。IndexOf
returns-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;
你的代码有点乱,上面可能有一些错误。我试图从注释掉的代码中破译意图。但是,上面的代码演示了您应该采用的样式。