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 :

Equivalent du mot réservé TypeOf de VB


Sujet :

Langage Delphi

  1. #1
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut Equivalent du mot réservé TypeOf de VB
    En VB le mot réservé TypeOf est utilisé pour tester "la nature" d'un objet (type, genre de control, etc) selon la syntaxe suivante :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
     If TypeOf MonObjet Is MonTypeOuMonControle Then
    Y a-t-il un équivalent en Delphi ?
    Merci
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Pour les objets, tu as l'opérateur is qui teste si la classe de l'objet est ou dérive d'une classe donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if MonObjet is TMaClasse then
    Pour les autres types, ben comme ils sont déclarés et immuables, ça n'a pas de sens

    Si tu travailles avec des Variant tu as VType.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    OK Merci. Je teste avant de mettre en résolu.
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  4. #4
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    J'ai essayé de faire une petite manip :
    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm2.Button1Click(Sender: TObject);
    var
      b : TDatabase;
    begin
    if b is TDatabase then
      showmessage('oukich');
    end;
    J'ai bien le message quand je clique sur le bouton, cependant si je remplace TDatabase dans le test du if par un autre type :
    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    if b is TUneAutreClasse then
    j'ai une erreur de compilation. Dans mon code je serai amené à parcourir les contrôles de ma form et à tester leurs types un a un. Est-ce que l'opérateur is marchera pour effectuer une telle opération ? Merci
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  5. #5
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    L'opérateur is peut être appliqué lorsque le type déclaré de la variable et la classe inscrite à droite sont directement parentes. À savoir que l'un soit descendant de l'autre

    Donc si ta variable est de type TObject, l'opérateur is fonctionne toujours, car toutes les classes dérivent de TObject. Mais ici ta variable est de type TDatabase, donc seules les classes dont dérive TDatabase ou qui dérivent de TDatabase peuvent être employées avec is.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if b.classname='TDatabase' then ...

  7. #7
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Non ! Surtout pas ! Ca c'est vraiment hyper moche et dangereux comme programmation !
    C'est l'opérateur is qu'il faut utiliser, pas autre chose.

    Dans certains cas très spécifiques, une comparaison de ClassType peut être envisagée, mais en aucun cas de ClassName.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  8. #8
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par sjrd
    L'opérateur is peut être appliqué lorsque le type déclaré de la variable et la classe inscrite à droite sont directement parentes. À savoir que l'un soit descendant de l'autre
    Compris
    Citation Envoyé par domlagagne
    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if b.classname='TDatabase' then ...
    Ca ne semble pas marcher, et quand je fais un
    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
     showmessage(b.classname)
    j'obtiens TButton ????
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

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

Discussions similaires

  1. [Débutant] Equivalent du mot-clé dynamic (C#) en Visual Basic
    Par Invité dans le forum VB.NET
    Réponses: 3
    Dernier message: 19/07/2014, 22h17
  2. L'equivalent de "show columns"(MYSQL) en SQL Serve
    Par robluce dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/10/2004, 09h36
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  4. changer mot de pass administrateur windows serv 2003
    Par abder dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 09/06/2003, 17h55

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