2013-02-08 16 views
6

Continuo a ricevere questo errore. Su FGetZoneData ho:Questo metodo di chiamata di metodo è consentito solo per i metodi di classe errore

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; 

e TFdB Ho una funzione dichiarata in pubblico:

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

Qualsiasi idea del perché questo non avrebbe funzionato?

+4

chiamare 'adept: = fdb.GetDeptDBName()'. Chiamare 'TfDB.GetDeptDBName()' assume un metodo di classe. –

+0

grazie rendono la risposta e posso accettare ... non sono sicuro di quanto mi sia mancato ... ma credo che succeda –

+0

ain abbia già risposto correttamente. Non c'è bisogno di duplicare la sua risposta. –

risposta

12

Si sta chiamando il metodo su una classe (presumo TfDB è un nome di classe) non su un'istanza. Solo class methods può essere chiamato in questo modo. Quello che devi fare è di creare un'istanza, quindi chiamare il metodo su di esso:

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

vedere l'argomento E2076 This form of method call only allowed for class methods in docwiki.

Problemi correlati