2016-11-22 10 views
-2

次のコードはDelphi 5を使用してコンパイルして動作しますが、Delphi 10.1 Berlinを使用していません。Delphi 10.1 BerlinでBDE API(BdiCopyTable)を使用

function CopyTable(const tSource: TwwTable; const Destination: string): DBIResult; 
var 
    pSourceTableName, pDestination: array[0..DBIMAXTBLNAMELEN] of char; 
begin 
    tSource.Open; 
    StrPCopy(pSourceTableName, tSource.TableName); 
    StrPCopy(pDestination, Destination); 
    Result := DbiCopyTable(tSource.DBHandle, False, pSourceTableName, nil, pDestination); 
    tSource.Close; 
end; 

コンパイラレポート[DCC32エラー] SUPPORT1.PAS(3655):E2010互換性のないタイプ: 'PAnsiChar' と '配列[0..260]シャアの' 二回。

クリーンでコンパイルされ、意図したとおりに動作するように変更するにはどうすればよいですか? NB。私は大規模な移行のこの段階でBDEを廃止することはできません。

+1

あなたはStrPCopy - http://docwiki.embarcadero.com/Libraries/Seattle/en/System.SysUtils.StrPCopyの宣言を見ましたか? – RBA

+1

コンパイラ/例外エラーメッセージを常にインクルードします。 –

+0

私は、BDEがこのような現代版のDelphiで全く動作しないことにかなり驚いています。私は彼らが多くのバージョンを前に完全に削除したと思った。手動でインストールしましたか? –

答えて

3

DbiCopyTableは、AnsiCharを想定しています。したがって、両方のchar配列を宣言する必要があります。

+0

「chars」を「ansichar」に変更すると、このトリックが完了したようです!8 ^) –

+0

@SLBentallスタックオーバーフローについてはこちら。あなたの感謝の気持ちを示すためには、回答を「受け入れられる」と真剣に考えなければなりません。これは、回答した人に報酬を与え、信頼を与えるのに役立ちます。ここの人々は、それを受け入れていないという歴史を持つ誰かの質問に答えることを感謝しがちです。 –

+0

Jerry Dodge - あなたの犯行を引き起こした場合は、ごめんなさい。私はこの施設を使うのが初めてです。もし何かができなかったら、説明してください。上記の私のコメントは、私が与えられたアドバイスに感謝していること、それ以外に何をすべきか、ということを完全に明確にしました。 –

関連する問題