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

 Delphi Discussion :

Comment utiliser une variable Publique/Externe


Sujet :

Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Musicien
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Musicien
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Comment utiliser une variable Publique/Externe
    Je suis débutant et j’aurais aimé utiliser une variable déclarée publique dans Form1 "FICHIER_1.PAS" depuis "FICHIER_2.PAS" extérieur.
    (DELPHI 10.1 Berlin)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    unit FICHIER_1;
    . . .
    interface
    type
      TForm1 = class(TForm)
        . . .
      Private
        { Déclarations privées }
        private_integer : integer;
      public
        { Déclarations publiques }
        global_integer: integer;
      end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    unit FICHIER_2;
     
    Form1.global_integer := 255;     // E2003 : Identificateur non déclaré : ‘Form1’
    Comment déclarer 'global_integer' en tant que entier externe dans "FICHIER_2.PAS" ?

    Merci par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 087
    Points : 15 506
    Points
    15 506
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Peut-être ajouter uses FICHIER_1; dans FICHIER_2.pas (si ce n'est déjà fait) ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Je ne comprend pas ce que tu veux.

    Si c'est pour partager le contenu d'une variable (adresse mémoire) par deux applications distinctes, je ne suis pas ton homme...

    Si s'est pour sérialiser ton application, soit repartir ton application dans le même état que celui où elle s'est fermée:

    tu peux par exemple utiliser tstringlist
    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
    ...
    var
        global_integer:integer;
    procedure TForm1.FormCreate(Sender: TObject);
    var 
        ContenueVariable:tstringlist;
        e:integer;
    begin
        global_integer:=0;
        if fileexists('c:\global_integer.txt') then begin
            ContenueVariable:=tstringlist.create;
            ContenueVariable.LoadFromFile('c:\global_integer.txt');
            if ContenueVariable.count>0 then begin
                val(ContenueVariable[0],global_integer,e);
                if e>0 then Global_integer:=0;
            end;
            ContenueVariable.free;
        end;
    end;
    tu peux ensuite ajouter toutes les subtilités et finesses pour améliorer le tout.

  4. #4
    Candidat au Club
    Homme Profil pro
    Musicien
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Musicien
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Bonjour !

    Peut-être ajouter uses FICHIER_1; dans FICHIER_2.pas (si ce n'est déjà fait) ?
    Merci, c'est résolu.

    J'ai rajouté 'FICHIER_1.pas' dans le mauvais 'uses' juste après 'interface'.
    Ceci entraîne l'erreur :
    "[dcc32 Erreur fatale]: FICHIER_1.pas: F2046 Mémoire insuffisante"

    Il suffit de le mettre au bon endroit, dans 'uses' après 'implementation'.
    Tout fonctionne à merveille.

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 502
    Points : 3 133
    Points
    3 133
    Par défaut
    La discussion est résolue, ok !

    Mais je ne peux m'empêcher de conseiller de mettre les variables, constantes, fonctions, etc. qui sont partagées dans une unité distinctes.
    ça évitera les à terme les références circulaires

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/08/2007, 10h49
  2. Réponses: 2
    Dernier message: 22/08/2006, 12h28
  3. [WebForms]Comment utiliser une variable de session depuis JavaScript ?
    Par ThunderBib dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 05/05/2006, 15h01
  4. Réponses: 5
    Dernier message: 04/05/2006, 22h02
  5. [sql] comment utiliser une variable global
    Par imedg dans le forum Oracle
    Réponses: 21
    Dernier message: 02/05/2006, 16h21

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