2013-02-08 29 views
6

Bu hatayı almaya devam ediyorum. FGetZoneData ben vardır: TFdB üzerineBu yöntem çağrısı yalnızca sınıf yöntemleri hatası için izin verilen

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; 

ve ben bir işlev kamuda ilan ettiler:

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

herhangi bir fikir neden bu işe yaramaz?

+4

"adept: = fdb.GetDeptDBName()" işlevini çağırır. TfDB.GetDeptDBName() 'deyimi, bir sınıf yöntemi varsayar. –

+0

Teşekkürler cevap yapmak ve kabul edebilirim ... bunu nasıl özledim emin değilim ... ama sanırım –

+0

ain zaten doğru cevap verdi. Cevabını çoğaltmaya gerek yok. –

cevap

12

Bir örnekte bir sınıfta yöntemi (TfDB bir sınıf adı olduğunu varsayalım) çağırıyorsunuz. Sadece class methods bu şekilde çağrılabilir. Ne yapmak zorunda üzerine yöntemini sonra, bir örneğini oluşturmak çağırmaktır;

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

docwiki içinde E2076 This form of method call only allowed for class methods konusuna bakın.

İlgili konular