IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

fonction() Label non trouvé


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut fonction() Label non trouvé
    re-hello,

    un petit doute me hante..

    quand je veux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function LoadPlayer1(id,artiste,titre,annee: String) : string;
    begin
      Label21.Caption:= id;  // ID
      Label1.Caption:= artiste; // ARTISTE
      Label2.Caption:= titre;  // TITRE
      Label9.Caption:= annee;  // Année
    end;
    [Erreur] Unit1.pas(265): Identificateur non déclaré : 'Label21'
    etc..

    Pourtant Label21 existe bien!!!
    J'ai essayé en plaçant la déclaration dans le public, neni, ca marche pas.

    Ou est-ce que je trompe?

    Merci

  2. #2
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut Re: fonction() Label non trouvé
    Citation Envoyé par mickaelmediaprod
    re-hello,

    un petit doute me hante..

    quand je veux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function LoadPlayer1(id,artiste,titre,annee: String) : string;
    begin
      Label21.Caption:= id;  // ID
      Label1.Caption:= artiste; // ARTISTE
      Label2.Caption:= titre;  // TITRE
      Label9.Caption:= annee;  // Année
    end;
    [Erreur] Unit1.pas(265): Identificateur non déclaré : 'Label21'
    etc..

    Pourtant Label21 existe bien!!!
    J'ai essayé en plaçant la déclaration dans le public, neni, ca marche pas.

    Ou est-ce que je trompe?

    Merci
    Salut!

    Label21 appartient probablement à la fiche sur laquelle tu travailles. Essaye Form1.Label21 pour voir

    Bon Dev !

    - Slimjoe
    -Slimjoe

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Merci,
    Ah ben ouais ca fonctionne :-)
    Pourquoi on est obligés, c'est débile non?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Autre question, je veux lancer cette function dans une autre Form.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Form1.LoadPlayer1();
      ModalResult := mrOk;
    Il me répond:

    [Erreur] U_Bibliotheque.pas(138): Identificateur non déclaré : 'LoadPlayer1'

    Ah bon?!? que me veux tu IDE ? :-)

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    N'aurais tu pas déclaré la fonction LoadPlayer dans la partie "Private" et non "Public" de la form ?
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    je l'ai pas déclaré du tout.. faut déclarer une fonction?
    comment?

  7. #7
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    bien sur qu'il faut déclarer les fonction sauf dans le cas ou celle-ci appartient déja a une unité prédefini de delphi.
    la fonction
    loadplayer devotre création ou pas

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    quelqu'un pourrais me donner un exemple pour de déclaration de fonction? A vrai dire google ne m'aide pas trop à ce sujet

  9. #9
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    je ne pense pas que pour cela il faille aller jusqu'à google, tu trouveras tout ce qu'il te faut dans l'aide de delphi

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Une déclaration de fonction est similaire à la déclaration d'une procédure mais elle spécifie le type de la valeur renvoyé. Une déclaration de fonction a la forme suivante :

    function nomFonction(listeParamètres): typeRenvoyé; directives;
    déclarationsLocales;
    begin
    instructions
    end;

    où nomFonction est un identificateur valide, typeRenvoyé est un nom de type, instructions la série des instructions exécutées quand la fonction est appelée. Les éléments (listeParamètres), directives; et déclarationsLocales; sont facultatifs.

    Pour davantage d'informations sur listeParamètres, voir Paramètres.
    Pour plus d'informations sur directives, voir Conventions d'appel, Déclaration forward et interface, Déclarations externes, Redéfinition de procédures et de fonctions et Ecriture de bibliothèques à chargement dynamique. Si vous spécifiez plusieurs directives, séparez-les par des points-virgules.
    Pour plus d'informations sur les déclarationsLocales, qui déclarent des identificateurs locaux, voir Déclarations locales.

    Le bloc instruction d'une fonction respecte les mêmes règles que celles qui s'appliquent aux procédures. A l'intérieur du bloc instruction, vous pouvez utiliser les variables et les autres identificateurs déclarés dans la partie déclarationsLocales de la fonction, les noms de paramètre de la liste de paramètres et les identificateurs dont la portée est dans la déclaration de la fonction. De plus, le nom de la fonction se comporte comme une variable spéciale contenant la valeur renvoyée par la fonction, de même que la variable prédéfinie Result.

    Si la syntaxe étendue est activée ({$X+}), Result est déclarée implicitement dans chaque fonction. Vous ne devez donc pas la redéclarer.

    Par exemple :

    function WF: Integer;
    begin
    WF := 17;
    end;

    définit une fonction constante appelée WF qui n'attend pas de paramètre et renvoie toujours la valeur entière 17. Cette déclaration est équivalent à :

    function WF: Integer;
    begin
    Result := 17;
    end;

    Voici un exemple de déclaration de fonction plus compliquée :

    function Max(A: array of Real; N: Integer): Real;
    var
    X: Real;
    I: Integer;
    begin
    X := A[0];
    for I := 1 to N - 1 do
    if X < A[I] then X := A[I];
    Max := X;
    end;

    Dans le bloc instruction, vous pouvez affecter plusieurs fois une valeur à Result ou au nom de la fonction ; il faut simplement que le type de la valeur affectée corresponde au type renvoyé déclaré. Quand l'exécution de la fonction s'achève, la dernière valeur affectée à Result ou au nom de la fonction définit la valeur renvoyée par la fonction. Par exemple :

    function Power(X: Real; Y: Integer): Real;
    var
    I: Integer;
    begin
    Result := 1.0;
    I := Y;
    while I > 0 do
    begin
    if Odd(I) then Result := Result * X;
    I := I div 2;
    X := Sqr(X);
    end;
    end;

    Result et le nom de la fonction représentent toujours la même valeur. Ainsi, la fonction :

    function MaFonction: Integer;
    begin
    MaFonction := 5;
    Result := Result * 2;
    MaFonction := Result + 1;
    end;

    renvoie la valeur 11. Cependant Result n'est pas complètement interchangeable avec le nom de la fonction. Quand le nom de la fonction apparaît à gauche d'une instruction d'affectation, le compilateur suppose qu'il est utilisé (comme Result) pour indiquer la valeur renvoyée. Par contre, quand le nom de la fonction apparaît n'importe où ailleurs dans le bloc instruction, le compilateur l'interprète comme un appel récursif de la fonction. Par contre, Result s'utilise comme une variable dans les opérations, les transtypages, les constructeurs d'ensemble, les indices et les appels à d'autres procédures.

    Si la fonction s'achève sans qu'une valeur soit affectée à Result ou au nom de la fonction, la valeur renvoyée par la fonction est indéfinie.

    Redéfinition de procédures et de fonctions

    euh..... ? je vois rien..

  11. #11
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par mickaelmediaprod
    Une déclaration de fonction est similaire à la déclaration d'une procédure mais elle spécifie le type de la valeur renvoyé. Une déclaration de fonction a la forme suivante :

    function nomFonction(listeParamètres): typeRenvoyé; directives;
    c'est pas assez clair ?
    par exemple pour ta fonction LoadPlayer tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ShellApi, StdCtrls, ComCtrls, Outlook2000, OleServer;
     
    type
      TForm1 = class(TForm)
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    function LoadPlayer1(id,artiste,titre,annee: String) : string;
     
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    function LoadPlayer1(id,artiste,titre,annee: String) : string;
    begin
      Label21.Caption:= id;  // ID
      Label1.Caption:= artiste; // ARTISTE
      Label2.Caption:= titre;  // TITRE
      Label9.Caption:= annee;  // Année
    end;
     
    end.
    sauf que pour que ton code marche, il faut préfixer tes LabelXX par le nom de la form, vu que ta fonction n'est pas membre de ta form, un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function LoadPlayer1(id,artiste,titre,annee: String) : string;
    begin
      Form1.Label21.Caption:= id;  // ID
      Form1.Label1.Caption:= artiste; // ARTISTE
      Form1.Label2.Caption:= titre;  // TITRE
      Form1.Label9.Caption:= annee;  // Année
    end;
    ca a été déjà dit plus haut je crois.

    j'allais oublier, ta fonction retourne un valeur de type string mais je ne vois le code implémentant cette fonctionnalité nulle part
    pense donc à faire une fonction du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function LoadPlayer1(id,artiste,titre,annee: String) : string;
    begin
      Form1.Label21.Caption:= id;  // ID
      Form1.Label1.Caption:= artiste; // ARTISTE
      Form1.Label2.Caption:= titre;  // TITRE
      Form1.Label9.Caption:= annee;  // Année
      result := 'valeur de retour de la fonction';
    end;

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    J'veux bien, mais même si toi (expert) tu y arrive pas.. moi comment veux tu?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    procedure Error(msg: string);
      public
        player1: array [1..11] of String;
        player2: array [1..11] of String;
        function LoadPlayer1(id,artiste,titre,annee: String) : string;
        { Déclarations publiques }
      end;
    [Erreur] Unit1.pas(224): Déclaration forward ou external non satisfaite : 'TForm1.LoadPlayer1'

  13. #13
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    J'veux bien, mais même si toi (expert)
    cela reste à démontrer
    tu y arrive pas.. moi comment veux tu?
    cela reste aussi à démontrer
    d'apres l'extrait de code que tu as posté, ta fonction LoadPLayer1 fait partie de ta form, ce qui veut dire que pour son implémentation tu dois l'écrire comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function TForm1.LoadPlayer1(id,artiste,titre,annee: String) : string;
    begin
      Label21.Caption:= id;  // ID
      Label1.Caption:= artiste; // ARTISTE
      Label2.Caption:= titre;  // TITRE
      Label9.Caption:= annee;  // Année
    end;
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function LoadPlayer1(id,artiste,titre,annee: String) : string;
    begin
      Label21.Caption:= id;  // ID
      Label1.Caption:= artiste; // ARTISTE
      Label2.Caption:= titre;  // TITRE
      Label9.Caption:= annee;  // Année
    end;
    chez moi, lorsque j'écris déjà la déclaration d'une procédure ou d'une fonction dans la partie interface, j'utilise le raccourcis clavier Shift+Ctrl+C et l'IDE me crée le squelette d'implémentation de la procédure ou de la fonction dans la partie implémentation et je n'ai plus qu'a coder

  14. #14
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Citation Envoyé par evarisnea
    chez moi, lorsque j'écris déjà la déclaration d'une procédure ou d'une fonction dans la partie interface, j'utilise le raccourcis clavier Shift+Ctrl+C et l'IDE me crée le squelette d'implémentation de la procédure ou de la fonction dans la partie implémentation
    Woah!
    C'est génial ça!!
    -Slimjoe

Discussions similaires

  1. problème de fonction non trouvées
    Par youp_db dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/09/2006, 15h01
  2. Fonction ShellExecute non trouvée
    Par Silverstone dans le forum Windows
    Réponses: 3
    Dernier message: 08/09/2006, 22h44
  3. Fonction ShellExecute non trouvée
    Par Silverstone dans le forum C++
    Réponses: 2
    Dernier message: 08/09/2006, 18h44
  4. Variable générale non trouvée dans une fonction
    Par mickael.be dans le forum Langage
    Réponses: 10
    Dernier message: 21/02/2006, 19h18
  5. [PHP-JS] Formulaire non trouvé dans une fonction
    Par philippe30 dans le forum Langage
    Réponses: 4
    Dernier message: 11/12/2005, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo