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

Cpcdos Discussion :

Problème Fonction / Argument


Sujet :

Cpcdos

  1. #1
    Membre à l'essai
    Problème Fonction / Argument
    Coucou, c'est encore moi (oui, je suis très actif). Je code une fonction simple avec 2 arguments.

    Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DECLARER/ EXEMPLE() : NIVEAU(4)
    
    FONCTION/ EXEMPLE(STR1, STR2)
      TXT/ %STR1%
      TXT/ %STR2%
    FIN/ FONCTION
    Dans cet exemple un message d'erreur me dira que STR2 ne sera pas déclarer

    Si j'inverse les variables comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DECLARER/ EXEMPLE() : NIVEAU(4)
    
    FONCTION/ EXEMPLE(STR1, STR2)
      TXT/ %STR2%
      TXT/ %STR1%
    FIN/ FONCTION
    Cette fois-ci STR1 ne sera pas déclarer.

    Mais si je fais cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARER/ EXEMPLE() : NIVEAU(4)
    
    FONCTION/ EXEMPLE(STR1, STR2)
      TXT/ %STR1% %STR2%
    FIN/ FONCTION
    Il y a aucun problème

    Une idée ?

    Merci d'avance pour vos réponse

  2. #2
    Membre expérimenté
    Salut !
    Par ce que les variables %str1% et %str2% sont de niveau 1 (Fonction) et la première ligne exécutée de la fonction est de niveau 1 à partir de la 2eme ligne, elle switch au niveau 2 (Process). Ceci était pour des précédents tests que finalement j'y ai laissé.

    Mais garde à l'esprit que le code exécutée dans une fonction CpcdosC+ est par défaut de niveau 1

    essaie ça :
    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
    Declarer/ EXEMPLE(s1, s2) : Niveau(4)
    
    Fonction/ EXEMPLE(STR1, STR2)
      ccp/ /fix.niveau = 1
      TXT/ %STR1%
      TXT/ %STR2%
    Fin/ Fonction
    
    // - - - - - - - - - - - - -
    // Équivalent en anglais
    Declare/ EXEMPLE(s1, s2) : Level(4)
    
    Function/ EXEMPLE(STR1, STR2)
      ccp/ /set.level = 1
      TXT/ %STR1%
      TXT/ %STR2%
    End/ Function
    Et si tu reviens au niveau 2, tes variables de niveau 1 ne seront plus visibles.
    J'ai apporté une petite correction quand tu déclares une fonction, si tu veux faire des fonctions overrided, il faut garder ce réflexe : que tu déclares également les arguments. Tu peux mettre n’importe quoi, c'est le nombre d'arguments qui compte!

    Tiens-moi au jus !

    Bien à toi!

    PS:
    Si tu veux transférer les variables niveau1 --> niveau 2, il faut créer des variables vides au niveau 2, puis revenir au niveau 1 et copier le contenu des variables dans les nouvelles variables, puis re-switcher au niveau 2 (Si t'as pas trop bien compris tu peux recréer un nouveau sujet si quelqu'un rencontre ce soucis ^^)
    Sébastien FAVIER
    co-kernel Cpcdos OSx un noyau 32bits simplifié et complet.. ou presque - Le fofo officiel c'est par ici.
    Les cours sur les systèmes c'est par là

  3. #3
    Membre à l'essai
    Parfait ! Sa fonctionne

    Un tous grand merci