2012-04-24 33 views
1

我有這個函數的聲明和實現如何在Delphi上正確定義函數?

public 
function AddWordReference(wordId,translateId:Longint):Longint; 
{***} 
function AddWordReference(wordId,translateId:Longint):Longint; 
begin 
try 
if((wordId <> -1) OR (translateId <> -1)) Then 
begin 
DataModule1.TranslateDictionary.AppendRecord([nil,wordId,translateId]); 
DataModule1.TranslateDictionary.Last; 
AddWordReference := DataModule1.TranslateDictionary.FieldByName('Id').AsInteger; 
end; 
Except 
ShowMessage('Error wirh adding reference'); 
AddWordReference := -1; 
end; 
AddWordReference := -1; 
end; 

我有這樣的錯誤:

[Error] AddFormUnit.pas(34): Unsatisfied forward or external declaration: 'TForm2.AddWordReference' 

如何解決這個問題?

+0

爲了讓您的工作更輕鬆,在界面部分中定義函數之後,請按下Ctrl-Shift-C在實現部分中正確自動定義函數。 – Justmade 2012-04-25 02:55:09

+0

@Justmade,感謝您的快捷:) – Shirish11 2012-04-25 05:05:07

+0

@Justmade,如果你不使用Delphi XE2 :( – Branko 2012-04-25 09:59:15

回答

12

它是您的TForm2類的成員,因此在實現部分中,您必須聲明它爲TForm2.AddWordReference而不是AddWordReference。然後,方法本身裏面,你應該是你的返回值分配到編譯器的Result變量而不是AddWordReference方法名稱:

public 
    function AddWordReference(wordId, translateId: Longint): Longint; 

function TForm2.AddWordReference(wordId, translateId: Longint): Longint; 
begin 
    Result := -1; 
    try 
    if (wordId <> -1) OR (translateId <> -1) then 
    begin 
     DataModule1.TranslateDictionary.AppendRecord([nil, wordId, translateId]); 
     DataModule1.TranslateDictionary.Last; 
     Result := DataModule1.TranslateDictionary.FieldByName('Id').AsInteger; 
    end; 
    except 
    ShowMessage('Error wirh adding reference'); 
    end; 
end; 
相關問題