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

4D Discussion :

[4D 2004.5/MacOSX.4] Variable système indéfinie ?


Sujet :

4D

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut [4D 2004.5/MacOSX.4] Variable système indéfinie ?
    J'ai une question à poser sur ce forum.
    Elle ne concerne pas le développement sur Mac OSX, mais celui avec 4D 2004.
    Comme l'emploi de ce forum m'est très difficile à comprendre, je poste cette demande sans doute à l'endroit inadéquat, en espérant que quelqu'un pourra me guider.
    Le problème est (4D 2004.5,MacOSX.4)
    la variable OK est une variable système, donc par définition toujours définie.Dans un bouton défini sans action, comportant une méthode objet pour enrgitrer des donnée du formulaire sur lequel il est, l'execution de la méthode est bloquée lors du test de la variable OK (test: si(OK=1). Le déboqueur indique que les opérateurs ne sont pas compatibles car la variable OK est inféfinie.
    Ce probléme s'était produit avec 4D 2003, avait disparu un temps sous 4D 2004, puis est réapparu.
    S'agit-il d'un bug de 4D?

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Par défaut
    Bonjour,

    Les variables "système" de 4D (OK, Error, etc.) ne sont définies avec certitude qu'en mode compilé. En interprété, tant qu'une action quelconque n'a pas défini et initialisé OK (par exemple : CHRCHER, TRIER, DIALOGUE, Ouvrir document, etc... bref, n'importe quelle commande qui modifie OK. Avec 4D 2003, on avait une liste de ces commandes, on ne l'a plus avec 4D 2004), cette variable peut rester indéfinie pour le process (puisqu'OK est une variable process, elle doit être déclarée pour chaque process qui l'utilise).

    Mais c'est vrai qu'on aimerait bien que 4D le fasse pour nous au lancement de chaque process.

    Thibaud

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut
    Merci de votre réponse.
    Le test de la variable OK suit un STOCKER ENREGISTREMENT placé dans un bouton (sans action) de format.
    Il n'est effectivement pas spécifié dans la documentation que la variable OK est mise à 1 après cette commande.
    C'est par contre spécifié pour la commande VALIDER qui a le même effet dans un bouton de format de formulaire de saisie (définie par FORMULAIRE ENTREE)
    J'ai donc remplacé STOCKER ENREGISTREMENT par VALIDER, mais la variable OK reste indéfinie.
    Cette anomalie avait disparu lorsque j'ai migré de 2004.1 en 2004.5, puis elle a réaaparu.
    La compilation ne détecte aucune anomalie ni aucun warning.

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Par défaut
    Citation Envoyé par Jean-Marc JULES
    Merci de votre réponse.
    Le test de la variable OK suit un STOCKER ENREGISTREMENT placé dans un bouton (sans action) de format.
    Il n'est effectivement pas spécifié dans la documentation que la variable OK est mise à 1 après cette commande.
    C'est par contre spécifié pour la commande VALIDER qui a le même effet dans un bouton de format de formulaire de saisie (définie par FORMULAIRE ENTREE)
    J'ai donc remplacé STOCKER ENREGISTREMENT par VALIDER, mais la variable OK reste indéfinie.
    Cette anomalie avait disparu lorsque j'ai migré de 2004.1 en 2004.5, puis elle a réaaparu.
    La compilation ne détecte aucune anomalie ni aucun warning.
    C'est normal que la compilation ne détecte pas d'anomalie et n'affiche pas de warnings, le compilateur connait les variables système de 4D. Tu me diras que 4D aussi , mais il y a une différence (dans 4D) entre connaitre le type d'une variable et son existence réelle, en mémoire. Avec 4D, une variable peut être à la fois typée et indéfinie (en compilé, seuls les tableaux sont concernés).

    Quand à VALIDER (ou NE PAS VALIDER), t'as pas de bol ;-), 4D met OK à 1 uniquement à la "sortie" du formulaire, pas immédiatement lors de l'appel à l'une de ces commandes :

    ` ici, OK indéfinie en interprété si jamais
    ` utilisée dans le process
    AJOUTER ENREGISTREMENT(...)
    ` => bouton ou code qui fait VALIDER
    ` => tant que le formulaire n'est pas fermé, OK reste indéfinie
    Si(OK=1) ` appel valide, 4D a mis OK à jour

    Ce que tu peux faire, c'est explicitement déclarer OK au début de ton process, ou dans "Sur chargement" du formulaire :
    Au cas ou
    Evenement formulaire = sur chargement)
    C_ENTIER LONG(OK)

    FIn de cas

    A+

    Thibaud

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut
    Merci à Thibaud pour ces explications.
    Toutefois, je n'ai pas précisé que mon application comporte plusieurs tables, avec chacune son formulaire de saisie.
    Le bouton de validation comporte les mêmes métodes génériques, frâce à des pointeurs, quelque soit la table et le formulaire.
    La variable OK est définie (et affectée de 1) dans tous les cas sauf dans 1 formulaire, toujours le même...
    La logique des faits n'est donc pas totalement claire.
    JMJ

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Par défaut
    Une explication possible, c'est que le formulaire pour lequel ça arrive est exécuté dans un nouveau process, qui n'a jamais connu OK. Est-ce le cas ?

    (et on est en interprété : si tu compiles, je penses que - sur ce plan là - ça marchera)

    Thibaud

Discussions similaires

  1. variables système, username
    Par sr_rs dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/07/2006, 18h48
  2. [Système] Recupération de variable système
    Par dj-julio dans le forum Langage
    Réponses: 2
    Dernier message: 03/01/2006, 15h45
  3. Réponses: 9
    Dernier message: 03/10/2005, 14h28
  4. [FLASH MX 2004][XML]portée de variable
    Par marco_ dans le forum Flash
    Réponses: 8
    Dernier message: 29/04/2004, 15h47
  5. Debutant recherche utilisation variable système
    Par agent-zaizai dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/05/2003, 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