2013-02-08 28 views
6

我不断收到此错误。在FGetZoneData我:这种形式的方法调用只允许类方法错误

var 
    SelectedDept: String; 

implementation 

procedure TFGetZoneDept.GetClick1(Sender: TObject); 
var 
    azone: string; 
    adept: string; 
    bstats, 
    bname, 
    btop, 
    bleft, 
    bnumber, 
    basset: string; 
    machine : TMachine; 
begin 
    fdb.count := 0; //keeps track of number of machines in zone 
    azone := Combobox1.Text; //gets name of zone 
    adept := TfDB.GetDeptDBName(SelectedDept); //gets name of dept from a function 
    fdeptlayout.ListBox1.Clear; 
end; 

TFdB我已经公开宣称的功能:

public 
    Function GetDeptDBName(name :string):String; 
end; 

知道为什么这是行不通的?

+4

改为调用'adept:= fdb.GetDeptDBName()'。调用'TfDB.GetDeptDBName()'假定一个类方法。 –

+0

谢谢作出回答,我可以接受...不知道我是如何错过了..但我想它发生 –

+0

艾因已经正确回答。没有必要重复他的答案。 –

回答

12

您正在调用类上的方法(我假设TfDB是类名),而不是实例上的方法。只有class methods可以这样调用。你所要做的就是在其上创建一个实例,然后调用方法:

var DB: TfDB; 
begin 
    DB := TfDB.Create(); // create an instance 
    adept := DB.GetDeptDBName(SelectedDept); // call the method 

见docwiki的E2076 This form of method call only allowed for class methods话题。

相关问题