簡體   English   中英

delphi E2003未聲明標識符'self'

[英]delphi E2003 undeclared identifier 'self'

我需要一些幫助; 我正在幫助朋友移植幾年前建立在新版本Windows上的Delphi應用程序,因為它目前只在Windows 95上運行。

該代碼使用Woll2Woll的第三方庫進行數據庫操作。

其中一個庫生成錯誤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行是最后一行,就在最后一行;

wwSaveAnswerTable函數如下所示:

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

我必須將Self參數更改為什么才能停止編譯錯誤?

謝謝你的籌碼。

問題與編譯器定義wwDelphi3Up或代碼中的任何相關內容有關。

正如您看到的下一條錯誤消息:[DCC Error] wwQuery.pas(244):E2029'。' 預期,但';' 發現

編譯器期望程序結束,並且行wwSaveAnswerTable(self,Handle,'FAnswerTable'); 不在OpenCursor方法中編譯。 這就是Self沒有被定義的原因。

您無需更改參數,因為肯定會影響功能。

如果您不使用古老版本的Delphi,請嘗試編譯它而不使用定義:

procedure TwwQuery.OpenCursor(InfoQuery: Boolean);
begin
   inherited OpenCursor(InfoQuery);
   wwSaveAnswerTable(self, Handle, 'FAnswerTable'); // Here prob FAnswerTable without quotes
end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM