0

少し助けが必要です。友人が何年も前に構築したDelphiアプリを新しいバージョンのWindowsに移植するのを手伝っています。これは、現在Windows95でのみ実行されているためです。

このコードは、DB操作にWoll2Wollのサードパーティライブラリを利用しています。

これらのライブラリの1つは、エラーE2003 Undeclared識別子:'self'を生成します。

私はGoogle経由で多くのサイトを訪れましたが、Delphiに関する知識が限られていました(約12年前のPascalトレーニングから得て、少し錆びたPHP、BASH、ColdFusion、ASPのコーディングスキルを推定しました)。レンガの壁-私は時間に縛られており、ウェブ上で出くわしている情報を理解できません。

問題のあるコードセグメントはwwwQuery.pasファイルからのものであり、次のようになります。

   {$ifdef wwDelphi3Up}
    procedure TwwQuery.OpenCursor(InfoQuery: Boolean);
   {$else}
   procedure TwwQuery.OpenCursor;
   {$endif}
    begin
       {$ifdef wwDelphi3Up}
       inherited OpenCursor(InfoQuery);
       {$else}
       inherited OpenCursor;
       {$endif}
       //Modded by Arie
       //wwSaveAnswerTable(self, Handle, FAnswerTable);
       wwSaveAnswerTable(self, Handle, 'FAnswerTable');
    end;

正確なエラーメッセージは次のとおりです。

[DCC Error] wwQuery.pas(243): E2003 Undeclared identifier: 'self'
[DCC Error] wwQuery.pas(244): E2029 '.' expected but ';' found
[DCC Fatal Error] wwcommon.pas(285): F2063 Could not compile used unit 'wwQuery.pas'

行243は、最後から2番目の行で、終わりのすぐ上です。

wwSaveAnswerTable関数は次のようになります。

Function wwSaveAnswerTable(ADataSet: TDBDataSet; AHandle: HDbiCur; tableName: string): boolean;

コンパイルエラーを停止するには、Selfパラメータを何に変更する必要がありますか?

スタックに感謝します。

4

1 に答える 1

2

この問題は、コンパイラ定義wwDelphi3Upまたは関連するコードに関連しています。

次のエラーメッセージが表示されます:[DCCエラー] wwQuery.pas(244):E2029'。' 期待されますが';' 見つかった

コンパイラはプログラムの終了を予期し、行wwSaveAnswerTable(self、Handle、'FAnswerTable'); OpenCursorメソッド内でコンパイルされません。そのため、自己は定義されていません。

確かに機能に影響するため、パラメータを変更する必要はありません。

Delphiの古いバージョンを使用していない場合は、定義なしでコンパイルしてみてください。

procedure TwwQuery.OpenCursor(InfoQuery: Boolean);
begin
   inherited OpenCursor(InfoQuery);
   wwSaveAnswerTable(self, Handle, 'FAnswerTable'); // Here prob FAnswerTable without quotes
end;
于 2012-06-26T13:18:36.713 に答える