gpt4 book ai didi

string - StrPCopy 已弃用。有什么选择?

转载 作者:行者123 更新时间:2023-12-03 19:07:26 27 4
gpt4 key购买 nike

这是我的问题:您如何摆脱这段代码给出的关于 StrPCopy 被弃用的警告?或者换句话说——我如何摆脱我认为最终会消失的 StrPCopy?我根本不想使用 AnsiString 单元。

program Project2;

{$APPTYPE CONSOLE}

{$R *.res}

uses
System.SysUtils;

var
aAmount: array[0..12] of AnsiChar;
TempStr: string;
begin
TempStr := '123456789012';
StrPCopy(aAmount, TempStr);
WriteLn(aAmount);
ReadLn;
end.

最佳答案

documentation对于 System.SysUtils.StrPCopy说:

Warning: The ANSI version of StrPCopy is deprecated. Please use the AnsiStrings unit.

所以解决方案是调用System.AnsiStrings.StrPCopy相反。

顺便说一句,问题中的代码有缓冲区溢出。您的数组中有一个元素的长度太短。


好的,现在你已经改变了问题。您想在不使用 System.AnsiStrings 的情况下实现 StrPCopy。那会是这样的:

function StrPCopy(Dest: PAnsiChar; const Source: AnsiString): PAnsiChar;
begin
Result := Dest;
Move(PAnsiChar(Source)^, Pointer(Dest)^, Length(Source)+1);
end;

我不太确定您为什么不想使用 System.AnsiStrings 单元。我看不出有任何明显的理由要避开它。

关于string - StrPCopy 已弃用。有什么选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31076244/

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