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 :

Conversion en boolean ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut Conversion en boolean ?
    Bonjour !
    Je débute en Delphi à l'aide de Borland Delphi 2005.

    Je veux commencer par quelque chose qui me servira plus tard, qui est de capter une préssion d'une touche clavier (ici avec getasynckeystate) et simplement d'afficher une Msgbox.

    Mon souci c'est que les érreurs suivantes apparaissent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [Erreur] Unit1.pas(30): E2010 Types incompatibles : 'Boolean' et 'string'
    [Erreur] Unit1.pas(34): E2012 Le type de l'expression doit être BOOLEAN
    [Erreur fatale] Project1.dpr(5): F2063 Impossible de compiler l'unité utilisée 'Unit1.pas'
    [Pascal Erreur] Unit1.pas(1): Impossible d'invoquer l'achèvement de code, du fait d'erreurs dans le code source
    et voici mon code

    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
    36
    37
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
     
    type
      TForm1 = class(TForm)
         Timer1: TTimer;
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Déclarations privées }
     
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    timer1.Enabled := 'true'
    end;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
         If (GetAsyncKeyState(VK_RMENU))
    -> ligne 34 Then showmessage ('yo')
    end;
    end.
    Je comprends donc pas du tout mes érreurs, que je n'avais jamais rencontrées en Vb .

    Merci à ceux qui arriveront à corriger mes érreurs ...
    A bientôt !

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Lai,

    En Delphi, et en Pascal d'une manière générale, les apostrophes limitent un caractère ou une chaîne de caractères.

    Donc, quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timer1.Enabled := 'true'
    par conséquent, 'true' encadré par des apostrophes, est une chaîne de caractères, et tu veux l'affecter à une variable de type boolean.

    Le message d'erreur du compilateur t'a dit ce qu'il en était, et tu aurais dû vérifier ton code et les types utilisés dans la ligne en question.
    En faisant cela, tu aurais résolu ton problème bien plus vite qu'en attendant une réponse sur un forum, et tu aurais appris quelque chose.

  3. #3
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut


    remplace juste cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timer1.Enabled := 'true'
    par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timer1.Enabled := true;


    oh là, devancé par droggo !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Ohla oui, sur ce coup j'ai vraiment été stupide, j'ai beau eu chercher comment fonctionnaient les notations, je n'avait pas vu sa !!

    Merci !!

    Et quand à l'érreur ligne 34 ??

    car la par contre, ce n'est pas un paramètre mais bien uen chaine de caracteres que je veux mettre.
    Donc la je suis un peu perdu =) !

    rassurez vous le "-> ligne 34" ne fait pas parti du code, s'était pour vous éviter de chercher ^^


    j'ai fait l'érreur de m'etre certainement trop habitué au .NET.....

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Quel est le message d'erreur renvoyé concernant la ligne 34 ?

    @+ Claudius

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Citation Envoyé par Cl@udius
    Salut

    Quel est le message d'erreur renvoyé concernant la ligne 34 ?

    @+ Claudius

    Comme écrit dans le premier post, il m'est indiqué l'érreur suivante :

    "[Erreur] Powertaps.pas(34): E2012 Le type de l'expression doit être BOOLEAN"

    Si je ne m'abuse, cela voudrai dire que je doit mettre

    Then ShowMessage (yo);

    Et il faudrai que je déclare ce qui est entre parentheses ?

  7. #7
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Exact j'avais mal lu.

    La réponse est que GetAsyncKeyState renvoie une valeur numérique et non booléenne.

    GetAsyncKeyState renvoie une valeur différente de 0 si la touche est enfoncée.
    Donc ta condition doit se présenter comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      If (GetAsyncKeyState(VK_RMENU) <> 0) then ...

    @+

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

Discussions similaires

  1. conversion d'un BDnull en boolean
    Par cyriane dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/06/2012, 11h14
  2. Réponses: 17
    Dernier message: 11/04/2011, 08h55
  3. Réponses: 13
    Dernier message: 02/11/2010, 16h03
  4. Conversion d'un string vers un boolean
    Par projetM dans le forum Développement de jobs
    Réponses: 10
    Dernier message: 26/11/2008, 15h30
  5. [conversion][boolean]
    Par nenoeil dans le forum Langage
    Réponses: 10
    Dernier message: 12/05/2004, 11h19

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