2013-02-08 9 views
6

Ciągle otrzymuję ten błąd. Na FGetZoneData mam:Ta forma wywołania metody jest dozwolona tylko w przypadku metod klasowych błąd

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; 

i TFdB Mam funkcji oświadczył publicznie:

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

Każdy pomysł, dlaczego to nie działa?

+4

zamiast tego wywołaj 'adept: = fdb.GetDeptDBName()'. Wywołanie 'TfDB.GetDeptDBName()' zakłada metodę klasy. –

+0

dziękuję utwórz odpowiedź i mogę zaakceptować ... nie jestem pewny, jak to przegapiłem .. ale myślę, że to się zdarza –

+0

ain odpowiedział poprawnie już. Nie trzeba powielać jego odpowiedzi. –

Odpowiedz

12

Wywołujesz metodę na klasie (zakładam, że TfDB to nazwa klasy) nie dotyczy instancji. W ten sposób można wywołać tylko class methods. Co trzeba zrobić, to utworzyć instancję, a następnie wywołać metodę na nim:

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

Zobacz wątek w docwiki E2076 This form of method call only allowed for class methods.

Powiązane problemy