0

プロジェクトを Delphi 7 から新しい Delphi XE4 に移植しようとしていますが、移動機能の問題に直面しています。

{Create a temp record buffer}
HoldRec := AllocMem(RecordSize);
{Fill the temp record buffer with the current record}
move(ActiveBuffer^, HoldRec^, RecordSize); //Here the E2017 Error

moveステートメントに到達すると、コンパイラは : [dcc32 Error] E2017 Pointer type required, エラーをスローします ...

なんで ?Delphi 7 では問題なくコンパイルできますが、Delphi XE4 ではコンパイルできないのはなぜですか?

宣言セクションは次のとおりです。

FBuffers: TBufList;
HoldRec : PChar;
FActiveRecord :integer;


function TDataSet.ActiveBuffer: TRecBuf;
begin
  Result := FBuffers[FActiveRecord];
end;
4

1 に答える 1

3

Delphi 7 では、TRecBuf は何らかの型のポインタでした。正確にはわかりません。XE4 では、NativeInt として宣言されています。コードをコンパイルするには、ポインターにキャストする必要があります。

move(Pointer(ActiveBuffer)^, HoldRec^, RecordSize); 

また、HoldRec は Unicode XE4 では PWideChar になりましたが、Delphi 7 では PAnsiChar であったことも指摘しておきます。何らかの方法で対処する必要があると思います。おそらく、宣言を PAnsiChar に変更する必要がありますが、ここからは確かなことは言えません。

于 2013-07-21T09:52:14.220 に答える