...
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;
...
我有pDataSource: PAnalyzeInfo
包含数据,我想将其复制到一个新的自变量。 MyData : TAnalyzeInfo
。
是否可以复制整个结构或逐个添加?
答案 0 :(得分:5)
在Delphi中,您可以通过分配来复制记录,这要归功于编译器的魔力。
MyData := DataSource^;
动态数组是引用计数的,因此只要您不需要真正的深层副本,分配也会处理动态数组。通过简单的分配,他们只需共享相同的内存。
如果您不想要,可以单独复制它们:
MyData.pPitch = Copy(pDataSource^.pPitch, Low(pDataSource^.pPitch),
High(pDataSource^.pPitch);
答案 1 :(得分:4)
不能使用单个复制命令复制动态数组。你必须:
如果阵列是静态的,那将会容易得多。在这种情况下,复制整个内存块是可能的。
答案 2 :(得分:1)
您可以使用系统单元中声明的move过程: system.move(pDataSource ^,MyData,sizeof(TAnalyzeInfo));