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 :

Création et test de variables


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Developpeur
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut Création et test de variables
    Bonjour

    Etant débutant en delphi, J'aimerais savoir s'il est possible de créer une variable depuis une procedure (en cliquant sur un bouton par exemple), comment tester si elle existe et comment la détruire.

    Merci

    Pat-lion

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    une variable existe après sa déclaration (var machin: DeTypeTruc et pour sa portée et sa visibilité : globale au programme, à une unité, une procédure... selon l'endroit où elle est déclarée.

    elle peut ne pas être initialisée : variable pointant sur un objet : tant qu'il n'est pas créé, elle ne pointe sur "rien" (nil, car delphi initialise d'office la plupart des variables!)

    après libération de l'objet, la variable pointe toujours sur cet objet, qui n'existe plus... => assigner nil à la variable
    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
     
    procedure TForm1.Button1Click;
    var
      test; TObject;
    begin
      if test=nil then ShowMessage('nil') else ShowMessage('impossible');
      test:=TObject.Create;
      ShowMessage(BoolToStr(Assigned(test)));
      test.Free;
      ShowMessage(BoolToStr(Assigned(test)));
      test:=nil;
      ShowMessage(BoolToStr(Assigned(test)));
      test:=TObject.Create;
      FreeAndNil(test); // mieux !!!
      ShowMessage(BoolToStr(Assigned(test)));
     
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Créer !
    Disons que
    tu peux créer un objet même visuel et l'ajouter à ta fiche.
    Tu peux agrandir un tableau de variable et donc en "créer" une.
    Tu peux instancier une variable via un créateur d'objet
    Tu peux faire appel à une fonction, procédure ou méthode dans laquelle une ou des variables seront déclarées et les utiliser dans cette même méthode.

    Prenons un cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TForm1.Butonclick(sender : tobject)
    begin
      insertcontrol(TButton.create(self)); // ajout d'un bouton on ne sait 
                                                  //pas où sur la fiche probablement en 0 0
     
    end;

    Précise ta question et l'utilité de ta crétion de variable

  4. #4
    Membre averti
    Homme Profil pro
    Developpeur
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    en fait, j'aimerais quelque-chose du genre :


    procedure buttonclick:
    begin

    creervariable(nom:string,valeur:string);

    end;

    puis quelque chose du genre

    if variableexists(nom:string) then ...

    et

    detruirevariable(nom:string);

    pour que la variable soit disponible pour toutes les procedures de la form

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    pas vraiment prévu ! et pas simple...

    regarde les array of variant ?

    sinon, un TList avec des noms et valeurs associées

    [EDIT] mais pour être global, il faut déclarer le tableau ou la liste dans la section var de l'unité
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  6. #6
    Membre éclairé Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Par défaut
    salut pat-lion

    intéressant ton problème... si tu trouves une solution je suis preneur...

    Ceci dit je suis un peut perplexe car je ne voit pas comment tu peux creer une variable dans une fonction ou procédure (donc locale a cette variable ou procédure) et "jouer" avec cette meme variable dans une autre fonction ou procedure (il y a un probleme de visibilité qui se pose la)

    Enfin je vais suivre car si y a une solution, je répéte, je suis preneur .


  7. #7
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Utilise un TList et un record
    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
     
    Type
      My_Variable = record
         Nom : string;
         Valeur : String;
      end;
      PMy_Variable  = ^My_Variable;
    TForm1 = class(TForm)
    private
      ListV : TStringList;
      procedure creervariable(nom:string,valeur:string);
     end
     
     procedure tform1.creervariable(nom:string,valeur:string);
    Var
       idx : integer;
       V   : PMy_Variable ;
    begin
      if Not Assigned(ListV) then begin
        ListV := TStringList.create;
        ListV.Sorted := true;
      end;
      idx :=  ListV.IndexOf(nom);
      if idx=-1 then
      begin
         New(V);
         V.Nom := nom;
         V.Valeur := valeur;
          ListV.AddOject(nom,V); 
      end
      else
      begin
        PMy_Variable(ListV.Ojects[idx])^.Valeur := valeur;
       end;
    end;
    si l'idée te séduit je te laisse le soin de tester et de terminer le code
    a+

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

Discussions similaires

  1. test sur variable
    Par vince2005 dans le forum Langage
    Réponses: 5
    Dernier message: 18/07/2006, 13h19
  2. Création d'un nommbre variable d'objets?
    Par nikotin dans le forum C++
    Réponses: 4
    Dernier message: 30/06/2006, 16h42
  3. Se faire une page de teste de variable
    Par DaD92 dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2006, 18h17
  4. [PHP-JS] Test des variables (PHP ou JavaScript) ??
    Par King_T dans le forum Langage
    Réponses: 5
    Dernier message: 23/05/2006, 12h19
  5. Création et utilisation de variables
    Par Furius dans le forum VBScript
    Réponses: 6
    Dernier message: 11/12/2005, 21h48

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