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

Langage Delphi Discussion :

Detypage d'une variable


Sujet :

Langage Delphi

  1. #1
    Inactif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 182
    Points : 212
    Points
    212
    Par défaut Detypage d'une variable
    Voila dans une procédure j'utilise une variable qui se trouve dans une table, elle même dans un record..
    A l'issue la variable a un nom de 50 caractères
    Je voudrais juste localement l"appelé A ce qui est plus facile
    Je précise que je ne modifie pas le contenu et que les with ne correspondent pas à mon besoin.

    Boris
    Papy

    Nul ne pourra jamais vous empêchez d'être libre.

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Il suffit de faire ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A := MaVariableQuiEstBeaucoupTropLongue;

  3. #3
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    D'accord avec Popo, en fait y'a aucune difficulté réelle dans ta problématique, par contre je vois pas du tout le rapport avec le terme "detypage"...

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 182
    Points : 212
    Points
    212
    Par défaut Detypage
    C'est étrange j'ai repondu a Popo mais je ne trouve pas le message

    En realite ta solution RECOPIE la variable danns un autre emplacement memoire avec le nouveau nom

    Mon problème est de donner un autre nom a la memoire utilisée par ma variable et en fait ensute de changer son type comme dans un record case..
    Mais deja le premier point m'aiderait.
    Boris
    Papy

    Nul ne pourra jamais vous empêchez d'être libre.

  5. #5
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par FullSpeed Voir le message
    C'est étrange j'ai repondu a Popo mais je ne trouve pas le message

    En realite ta solution RECOPIE la variable danns un autre emplacement memoire avec le nouveau nom

    Mon problème est de donner un autre nom a la memoire utilisée par ma variable et en fait ensute de changer son type comme dans un record case..
    Mais deja le premier point m'aiderait.
    Boris
    Ok, mais tu veux aller de quel type vers quel autre type alors ?

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Avec absolute (Si la déclaration est statique bien sûr):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.FormCreate(Sender: TObject);
    var
      s1 :string;
      s2 :string absolute s1;
    begin
      s1 := 'Hello';
      ShowMessage(s2);
     
      s2 := 'Dave';
      ShowMessage(s1);
    end;

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par FullSpeed Voir le message
    C'est étrange j'ai repondu a Popo mais je ne trouve pas le message

    En realite ta solution RECOPIE la variable danns un autre emplacement memoire avec le nouveau nom

    Mon problème est de donner un autre nom a la memoire utilisée par ma variable et en fait ensute de changer son type comme dans un record case..
    Mais deja le premier point m'aiderait.
    Boris
    au lieu de déclarer une variable de ce type, il suffit de déclarer un pointer vers ce type, qui pointera sur ta variable.

    si cela s'applique à ton problème tu peux aussi "détyper" ta variable en la passant à une procédure qui déclare un paramètre sans type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure traitement(const Data); // ou (var Data);
    var
      value: MonType absolute Data; // retypage
    begin
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Avec absolute (Si la déclaration est statique bien sûr):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.FormCreate(Sender: TObject);
    var
      s1 :string;
      s2 :string absolute s1;
    begin
      s1 := 'Hello';
      ShowMessage(s2);
     
      s2 := 'Dave';
      ShowMessage(s1);
    end;
    Je ne connaissais pas du tout ce "absolute"...

    Du coup je me demandais, comment Delphi gère t'il ça ?

    Mon petit cerveau a déduit qu'il devait créer implicitement une variable s3, et faire pointer s1 et s2 sur s3, et que chaque affectation à s1 ou à s2 était convertie en une affectation à s3... ai je vu juste ?

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Il n'y a pas de S3 . S1 et S2 ne sont effectivement que des pointures sur une adresse mémoire contenant les données de la chaîne. Regarde l'aide sur les chaînes, c'est assez bien expliqué.

    Dans notre cas, par analogie, absolute serait @s2 := @s1. Les deux adresses des pointeurs se chevauchent.

  10. #10
    Inactif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 182
    Points : 212
    Points
    212
    Par défaut Absolute
    Je decouvre aussi. Cela m'a l'air de correspondre a mes besoins


    L'idée est d'accéder a une table de byrte 4 par quatre pour les recopier comme un copyStr mais par 32 bits

    Merci
    Boris
    Papy

    Nul ne pourra jamais vous empêchez d'être libre.

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  3. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25
  4. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

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