Déclaration d'une fonction

cs_vib Messages postés 30 Date d'inscription jeudi 15 novembre 2001 Statut Membre Dernière intervention 23 février 2002 - 23 janv. 2002 à 20:48
cs_Teardrop Messages postés 16 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 5 février 2002 - 26 janv. 2002 à 14:34
Je désire déclarer la fonction:
function trouver_composant(t:string):Tcompo
pour quelle soit visible dans les autres unités.
Je la déclare donc dans la partie Interface.

Le compilateur me renvoit:
[Erreur] Unit2.pas(64): Déclaration forward ou external non satisfaite: 'TForm2.trouver_composant'

Je suis un peu perdu à ce niveau là si quelqu'un peut me filer un coup de main
Merci !

7 réponses

DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
23 janv. 2002 à 21:48
Si ton unité qui contient la fontion sappelle Ufonction.pas

tu met dans ton projet et sous implementation :

uses Ufonction;

Mais apparement cé un probleme autre que tu as

si la fonction qui est dans ton unité fait reference à un Objet de ton projet

alors faut que tu fasse la meme chose dans ton Ufonction et sous implementation, Mais tu y met le nom dde l'unitée qui est concernée
0
cs_Jos Messages postés 128 Date d'inscription mardi 26 juin 2001 Statut Membre Dernière intervention 8 février 2005
23 janv. 2002 à 22:19
Dans ta form contenant ta fonction, tu dois la déclarer normallement, comme toute autre fonction.

Et, comme Delphicool te le disait, pour l'utiliser dans une autre form, sous implementation, tu mets
uses ta_form_contenant_la_fonction;
0
cs_vib Messages postés 30 Date d'inscription jeudi 15 novembre 2001 Statut Membre Dernière intervention 23 février 2002
23 janv. 2002 à 22:58
Bon a priori ca marche.
En faite, j'avais déclaré la fonction au niveau type d' interface pensant qu'il fallait déclaré
là pour qu'elle soit visible pour les autres forms. Mais il fallait la déclaré juste avant 'implementation.
C'est un peu obscure ds ma tete, mais ca va venir.
Merci encore
0
cs_vib Messages postés 30 Date d'inscription jeudi 15 novembre 2001 Statut Membre Dernière intervention 23 février 2002
23 janv. 2002 à 22:59
Bon a priori ca marche.
En faite, j'avais déclaré la fonction au niveau type d' interface pensant qu'il fallait déclaré
là pour qu'elle soit visible pour les autres forms. Mais il fallait la déclaré juste avant 'implementation.
C'est un peu obscure ds ma tete, mais ca va venir.
Merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Teardrop Messages postés 16 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 5 février 2002
26 janv. 2002 à 14:24
Pour les déclarations de fonctions/procedures, y a plusieures possibilités:

si la fonction/procedure est déclarée dans public ou private, il faut précéder le nom de la fonction par le nom de la form
ex:
public
function TForm1.MaFonction(arguments): retour;


déclarer la fonction/procedure avant implementation et là TForm1 est facultatif

En clair si tu declare ta fonction dans type et que t'as le message 'Déclaration forward ou external non satisfaite' soit t'as mal orthographié la fonction dans implementation soit t'as pas mis le TForm1 devant le nom de la fonction.
0
cs_Teardrop Messages postés 16 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 5 février 2002
26 janv. 2002 à 14:26
J'oubliais:
pour y acceder depuis une autre unité, déclarer l'unité qui contient la fonction dans les uses.
0
cs_Teardrop Messages postés 16 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 5 février 2002
26 janv. 2002 à 14:34
Désolé, je me suis embrouillé tout seul :)
je te mets un exemple:
si tu écris ca
public
{ Public declarations }
procedure RegStr(Sender: TCheckBox; root: HKEY; key: String; val: String);

dans implementation il faut mettre
implementation

{$R *.dfm}

procedure TfrmMain.RegStr(Sender: TCheckBox; root: HKEY; key: String; val: String);
var reg: TRegistry;
begin
{ code }
end;

Désolé si c'est confus.
0
Rejoignez-nous