StrPCopy已弃用.有什么选择?

Nic*_*ges 1 delphi string

这是我的问题:如何摆脱此代码提供的关于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)

Dav*_*nan 5

文档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装置.我没有看到任何明显的理由避免它.