gpt4 book ai didi

android - 我如何让我的代码正确地使用零基础?

转载 作者:搜寻专家 更新时间:2023-11-01 08:40:08 26 4
gpt4 key购买 nike

我正在尝试将我的代码迁移到 android 上,所以我在这里阅读 http://docwiki.embarcadero.com/RADStudio/XE8/en/Migrating_Delphi_Code_to_Mobile_from_Desktop

而且我知道我没有使用 posdelete 并打开 zerobald 或者我必须关闭 zerobased ,我对关闭 零基础

感觉不太好

所以我解决了我的代码,我将 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 返回一个新字符串,而不是修改其参数。
  • 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;

你的代码有点乱,所以上面可能有一些错误。我试图从注释掉的代码中破译 Intent 。但是,上面的代码演示了您应该采用的样式。

关于android - 我如何让我的代码正确地使用零基础?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33549649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com