0

Delphi 2009 の TFields の実装にバグが見つかり、簡単なパッチを書きました。DB.pas をプロジェクト フォルダにコピーし、プロジェクトのファイル リストに追加しましたが、コンパイルできません。最初の 2 つのエラー メッセージは、コード内の指定された場所に移動しても意味がありません。

確かに、適切にコンパイルできるものがあるとすれば、それは CodeGear のコードです。彼らはすでにそれをコンパイルして、VCL コンポーネントを作成しています。それで、私は何が欠けていますか?コンパイラの出力は次のとおりです。

[DCC Error] DB.pas(2536): E2134 Type 'Pointer' has no type info
[DCC Error] DB.pas(10799): E2066 Missing operator or semicolon
[DCC Error] DB.pas(12933): E2217 Published field 'FCursor' not a class or interface type
[DCC Error] DB.pas(12934): E2217 Published field 'FTitle' not a class or interface type
[DCC Fatal Error] testing.dpr(23): F2063 Could not compile used unit '..\..\..\vclpatch\DB.pas'
4

2 に答える 2

6

DB.pas ユニットの先頭に次の行を追加すると役に立ちますか。

{$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N-,O+,P+,Q-,R-,S-, T-,U-,V+,W-,X+,Y+,Z1}

この行を使用した後に機能する場合、プロジェクト オプションは、CodeGear が RTL/VCL をコンパイルするために使用した設定と互換性がありません。

ところで: 行 2536 は、テキスト "type" のみを含む行です。ファイルを変更しましたか?それとも、アップデート 1 がありませんか?

于 2008-12-07T22:50:51.810 に答える
1

DB.pas で同じ問題に遭遇しましたが、VCL ユニットをまったく変更しませんでした。したがって、原因は明らかに私のプロジェクトにあるはずでした。Emit runtime type informationfalseに切り替えると、うまくいき、問題が解決しました。

(プロジェクト オプション: Delphi コンパイラ -> コンパイル -> コード生成 -> ランタイム タイプ情報の出力)

于 2009-01-28T12:45:51.977 に答える