这是我的问题:如何摆脱此代码提供的关于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.
Run Code Online (Sandbox Code Playgroud)
该文档的System.SysUtils.StrPCopy说:
警告:不推荐使用ANSI版本的StrPCopy.请使用AnsiStrings单元.
所以解决方案就是打电话System.AnsiStrings.StrPCopy.
顺便说一下,问题中的代码有一个缓冲区溢出.你的数组是一个太短的元素.
好的,现在你已经改变了问题.你想在StrPCopy不使用的情况下实现System.AnsiStrings.这将是这样的:
function StrPCopy(Dest: PAnsiChar; const Source: AnsiString): PAnsiChar;
begin
Result := Dest;
Move(PAnsiChar(Source)^, Pointer(Dest)^, Length(Source)+1);
end;
Run Code Online (Sandbox Code Playgroud)
我不太清楚为什么你不想使用这个System.AnsiStrings装置.我没有看到任何明显的理由避免它.