gpt4 book ai didi

string - 在Delphi中组合字符串和字符

转载 作者:行者123 更新时间:2023-12-03 18:21:34 26 4
gpt4 key购买 nike

function leftstr(s:string; n:Integer):string;
var
i:integer;
t:string;
begin
//init var t
t := '';
for i := 0 to n do
begin
//main loop
t := t + s[i];
end;
//return results
Result:=t;
end;

因此,当我运行此函数并使用 ShowMessage 获取 i 的每个增量中 t 的值时,t 始终为空。有人能告诉我问题所在吗?这是使用Delphi XE6编译的

最佳答案

问题是字符串使用从 1 开始的索引,并且您正在访问越界。你的循环应该是:

for i := 1 to n do

可能发生的情况是 s[0] 引用了字符串元数据的某些部分(长度或引用计数,我不记得是哪一个),而该部分恰好包含零字节。当字符串传递给 ShowMessage 时,这会被解释为空终止符。

如果您在编译器选项中启用了范围检查功能,编译器将插入可以为您发现错误的代码。这个范围检查功能是一个令人惊讶的被忽视和忽视的功能。


当然,这个功能有点毫无意义,而且效率相当低。您可以使用LeftStr来自 StrUtils 单元。或者普通的旧Copy来自系统单元。

关于string - 在Delphi中组合字符串和字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24486640/

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