从指针复制数据?

XBa*_*000 3 delphi pointers copy record

...
  PAnalyzeInfo = ^TAnalyzeInfo;
  TAnalyzeInfo = record
    pPitch: array of Single;
    pEnergy: array of Single;
    pPitchAccent: array of Single;
    pEnergyAccent: array of Single;
    pDicAccent: array of Single;
    pScore: array of Single;
    pBoundary: Integer;
    szRecWord: array of array of AnsiChar;
    nRecWordNum: Integer;
    nFrameNum: Integer;
  end;
...
Run Code Online (Sandbox Code Playgroud)

我有pDataSource: PAnalyzeInfo包含数据,我想将其复制到一个新的自变量.MyData : TAnalyzeInfo.

是否可以复制整个结构或逐个添加?

Dan*_*ski 5

在Delphi中,您可以通过分配它来复制记录,这要归功于编译器的魔力.

MyData := DataSource^;
Run Code Online (Sandbox Code Playgroud)

动态数组是引用计数的,因此只要您不需要真正的深层副本,分配也会处理动态数组.通过简单的赋值,它们只共享相同的内存.

如果您不想要,可以单独复制它们:

MyData.pPitch = Copy(pDataSource^.pPitch, Low(pDataSource^.pPitch), 
                                          High(pDataSource^.pPitch);
Run Code Online (Sandbox Code Playgroud)