2013-02-08 14 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 विषय।