2010-12-10 5 views
1

J'ai créé une nouvelle unité parce qu'il y a des fonctions que j'ai besoin d'appeler à partir de tous les formulaires et j'ai placé le nom de l'unité dans la liste utilise.Comment appeler une fonction stockée dans une unité?

Je ne reçois aucune erreur au moment de la conception, mais lorsque je tente de démarrer l'application que je reçois [Erreur DCC] UnitForm1.pas (64): E2003 identificateur undeclared: « TaskBarHeight »

S'il vous plaît aider. Merci.

+0

Je pense que cela a quelque chose à voir avec la liaison, sinon l'erreur se produirait déjà pendant la compilation. Nous aurions besoin de voir plus de code (comment l'identificateur est déclaré etc.) – travelboy

+1

@travelboy: emurad parle probablement d'une erreur de compilation, et non d'une erreur d'exécution. (Design-Time est quelque chose d'autre.) –

+0

@Andreas: si oui, j'ai mal compris cela. Mais alors il devrait être facile de réparer. – travelboy

Répondre

4

Est-ce que TaskBarHeight est déclaré dans la section interface de l'unité?

unit Unit4; 

interface 

uses Windows; 

procedure HighBeep; 

function Sum(const A, B: integer): integer; 

const 
    alpha = 10; 

implementation 

const 
    beta = 20; 

procedure HighBeep; 
begin 
    Beep(800, 500); 
end; 

procedure LowBeep; 
begin 
    Beep(400, 500); 
end; 

function Sum(const A, B: integer): integer; 
begin 
    result := A + B; 
end; 

end. 

Dans l'exemple ci-dessus, seule la fonction HighBeep est visible dans les autres unités. En outre, seule la constante alpha est. La fonction sum est également visible.

+0

C'est une fonction, pas une procédure. Il renvoie la valeur. Quelle est la syntaxe? – emurad

+2

cela n'a pas d'importance s'il s'agit d'une procédure ou d'une fonction, cela dépend de l'endroit où il est défini. Si elle est définie dans la section interface, elle sera visible par les autres unités, sinon elle n'est visible que pour cette unité. – Logman

Questions connexes