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

Ada Discussion :

Fonction qui retourne un record


Sujet :

Ada

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 31
    Points
    31
    Par défaut Fonction qui retourne un record
    salut je suis nouveau sur le forum


    j'ai entrain de faire une function qui return un record , le record est declare au debut de 3 champs different champ1 : natural , champ2:natural . champ3: boolean .

    et quand je commence la function

    function parentesi ( x : string ) return nomdurecord ;

    mais ca marche pas la function l 'erreur c'est
    "invalid prefix in selected component "nomdurecord" meme si il est declare au debut du programme ; ????

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Fournis le code si tu veux une réponse,
    ca sera mieux.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 31
    Points
    31
    Par défaut code
    voila le code :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    ------------
     
    with text_Io;
    use text_io;
     
     
    procedure parentesi is 
     
     
     
    type campi is record
    parentesi_aperte:natural;
    parentesi_chuise:natural;
    bilanciamento :boolean;
    end record ;
     
    text: string(1..30) ;
    last :integer;
    -------------------------------------------------------------------------------------
    function par (x: string;l:integer) return campi is
     
    char : character ;
    cont:natural:=0;
    cont2:natural:=0;
    ok: boolean;
     
     
    begin 
    for i in x'range loop 
    char:=x(i);
    case char is
    when '(' => loop 
    cont :=cont + 1 ;
    end loop ;
    campi.parentesi_chuise:=cont;
    when ')' =>
    loop 
    cont2 :=cont2 + 1 ;
    end loop ;
    campi.parentesi_aperte:=cont2;
    when others => null;
    end case;
    end loop;
    if campi.parentesi_chuise=campi.parentesi_aperte then 
    ok:=true ;
    campi.bilanciamento:=ok;
    end if ;
    return campi;
    end par;
    -------------------------------------------------------------------------------------
    begin 
    put_line(" inserire il texto := ");
    get_line(text,last);
    par(text,last);
    end parentesi ;

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Deux erreurs:
    1 - Tu essaies d'ecrire dans un type (campi), heu ca ne marche pas comme cela.
    Tu dois declarer une variable locale a la fonction par de type campi et ecrire dedans.

    2 - Tu fais appel a par dans ton main comme s'il s'agissait d'une procedure, or il s'agit d'une fonction. Ca n'est pas possible non plus.

    Je te conseille de jeter un oeil aux docs presentes sur ce site pour mieux te familiariser avec le language, ce devrait t'aider.

    EDIT* Pense a utiliser les balises , ca facilite la lecture.

    A+

    Juan

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 31
    Points
    31
    Par défaut code
    oui je sais deja la 2 eme erreur , tu ma pas compri je pense , moi je veux faire return record qui donne 3 choses differrent , ou moi j pas bien compri



    il faut declare un variable local ds la function typo campi ?
    vraiment j ai pas compris , moi la funtion il faut qu il done un record ??

  6. #6
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Fais attention à ton écriture, ça déchire les yeux là.

    Reprenons.
    Tu déclares un type record qui s'appelle Campi.
    Tu déclares une fonction Par qui doit retourner un record de type Campi.

    Donc, dans la partie déclarative de ta fonction (entre le "is" et le "begin"), tu déclares une variable locale (My_Campi par exemple), et c'est cette variable que tu renseignes et retourne. Tu ne peux pas affecter des données directement dans un type record, ça ne marche pas comme cela.
    Un type n'est pas une variable, donc tu ne peux pas faire Campi.blabla := ...;
    Cela n'a pas de sens.

    Le plus sérieusement du monde, lis les docs, ça t'aidera.

    A+

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 31
    Points
    31
    Par défaut code
    vraiment tu m'a embete avec les doc enfin j ai reussi av l'aide d'un ami , et merci qd meme


    et voila le code le 1 code test
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    with text_Io;
    use text_io;
     
     
    procedure parentesi is 
     
     
     
    type campi is record
    parentesi_aperte:natural;
    parentesi_chuise:natural;
    bilanciamento :boolean;
    end record ;
     
    L:campi;
    text: string(1..30) ;
    last :integer;
    -------------------------------------------------------------------------------------
    function par (x: string) return campi is
     
    var : campi ;
    char : character ;
    cont:natural:=0;
    cont2:natural:=0;
    ok: boolean;
     
     
    begin 
    for i in x'range loop 
    char:=x(i);
    case char is
    when '(' => loop 
    cont :=cont + 1 ;
    end loop ;
    var.parentesi_chuise:=cont;
    when ')' =>
    loop 
    cont2 :=cont2 + 1 ;
    end loop ;
    var.parentesi_aperte:=cont2;
    when others => null;
    end case;
    end loop;
    if var.parentesi_chuise=var.parentesi_aperte then 
    ok:=true ;
    var.bilanciamento:=ok;
    end if ;
    return var;
    end par;

  8. #8
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par miomikio
    vraiment tu m'a embete avec les doc enfin j ai reussi av l'aide d'un ami , et merci qd meme
    c'est exactement ce que je t'expliquai ... ta variable var est une variable du type record Campi locale à ta fonction ....

    No more comment.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  2. fonction qui retourne des records
    Par r83 dans le forum PL/SQL
    Réponses: 4
    Dernier message: 17/04/2009, 23h35
  3. Réponses: 7
    Dernier message: 03/12/2004, 12h40
  4. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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