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 :

Le commencement (If)


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Points : 53
    Points
    53
    Par défaut Le commencement (If)
    Bonjour a tous voila je commence sur Delphi depuis ce matin et j'ai une erreur dans mon programme.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if Form1.E_NOM.Text:='' and Form1.E_TEL.Text:='' and Form1.Onglet.Text:='' then
            begin
                    Application.MessageBox('Remplissez NOM + ONGLET ou TEL avant modification','Attention',MB_ICONEXCLAMATION + MB_OK);
            end
    Voila l'erreur :
    [Erreur] Unit1.pas(89): Types incompatibles : 'String' et 'procedure, untyped pointer or untyped parameter'

    J'ai un peu de mal a comprendre...

  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 152
    Points
    10 152
    Par défaut
    Utilise = au lieu de := dans tes comparaisons := c'est une affectation.
    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 du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Merci pour ta réponse mais il me met une autre erreur.....
    j'ai l'impression que tous ce qu'il y a aprés le "and" il ne l'accepte pas!!!
    Car quand je les enlève sa se passe normalement.....

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut
    Essaies :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (Form1.E_NOM.Text='') and (Form1.E_TEL.Text='') and (Form1.Onglet.Text='') then
    Tu peux le faire, tu veux le faire tu vas le faire Bref, soyons positif

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    lol merci !!! en faite j'ai trouver juste avant que tu me rep .
    Et tu as raison c'est bien cela.
    Mais j'ai un autre soucis! est ce que on a le droit de faire ceci ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Memo1.Lines.Add(Query1.FieldByName('NOM').AsString);
                    Memo1.SelectAll();
                    Memo1.CopyToClipboard();
                    Edit1.PasteFromClipboard();
                    AnsiString NOM := Edit1.Text;
                    AnsiString NOM2 := E_NOM.Text;
                    AnsiString TEL := E_TEL.Text;
                    AnsiString ONGLET := Onglet.Text;
    Sa me donne l'erreur:
    [Erreur] Unit1.pas(107): '(' attendu(e) mais identificateur 'NOM' trouvé(e)
    [Erreur] Unit1.pas(107): '(' attendu(e) mais identificateur 'NOM2' trouvé(e)
    etc...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut
    Peut-être comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AnsiString (NOM) := Edit1.Text;
    Tu peux le faire, tu veux le faire tu vas le faire Bref, soyons positif

  7. #7
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par flo291288 Voir le message
    lol merci !!! en faite j'ai trouver juste avant que tu me rep .
    Et tu as raison c'est bien cela.
    Mais j'ai un autre soucis! est ce que on a le droit de faire ceci ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Memo1.Lines.Add(Query1.FieldByName('NOM').AsString);
                    Memo1.SelectAll();
                    Memo1.CopyToClipboard();
                    Edit1.PasteFromClipboard();
                    AnsiString NOM := Edit1.Text;
                    AnsiString NOM2 := E_NOM.Text;
                    AnsiString TEL := E_TEL.Text;
                    AnsiString ONGLET := Onglet.Text;
    Sa me donne l'erreur:
    [Erreur] Unit1.pas(107): '(' attendu(e) mais identificateur 'NOM' trouvé(e)
    [Erreur] Unit1.pas(107): '(' attendu(e) mais identificateur 'NOM2' trouvé(e)
    etc...
    Si tu essaies de déclarer les variables NOM, NOM2, TEL et ONGLET à la volé, la réponse est NON.

    En delphi, les variables doivent être déclarées dans la bonne section (avec un VAR avant le BEGIN de l'implémentation d'une méthode) avant d'être utilisées dans le code.

    On ne peut pas mélanger la déclaration des variables avec le code comme dans d'autres langages.

  8. #8
    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 Franck SORIANO Voir le message
    Si tu essaies de déclarer les variables NOM, NOM2, TEL et ONGLET à la volé, la réponse est NON.

    En delphi, les variables doivent être déclarées dans la bonne section (avec un VAR avant le BEGIN de l'implémentation d'une méthode) avant d'être utilisées dans le code.

    On ne peut pas mélanger la déclaration des variables avec le code comme dans d'autres langages.
    j'imagine que c'est bien là son erreur.

    donc si tu as l'habitude d'un autre langage, tu vas sans doute trouver que le Pascal est écrit à l'envers (en réalité ce sont tous les autres langages qui sont inversés, mais là n'est pas la question )

    ainsi en C on écrira
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {
     int i=(int)x; // intraduisible :D
    }

    en Pascal on écrira
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var // nous allons utiliser les variables suivantes
     i:integer;  // i est un entier
    begin  // le traitement sera le suivant
     i:=integer(x); // à i on affecte l'entier issue de x
    end; // fin du traitement
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    euuuuuu pas sur d'avoir totalement compris...
    si je veux declarer NOM en AnsiString, j'écris cela?? :

    var
    AnsiString NOM = '';

    ?????

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Nan ça c'est la notation C++ En Pascal/Delphi le type vient après le nom de la variable et les deux sont séparés par des :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var
     NOM: AnsiString = '';
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  11. #11
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Heo,
    Citation Envoyé par Aka Guymelef Voir le message
    Nan ça c'est la notation C++ En Pascal/Delphi le type vient après le nom de la variable et les deux sont séparés par des :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var
     NOM: AnsiString = '';
    Je doute que cela compile.
    Si les cons volaient, il ferait nuit à midi.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Super je te remercie !!! maintenant il faux que je règle mon problème pour prendre la valeur d'un ComboBox:

    Le

    ONGLET :=Onglet.Text;

    Ne marche pas pour une ComboBox ais marche pour un Edit

    Je suppose qu'il y a des posts la deçu.
    ENCORE MERCI

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Pour un CombobBox tu possède la propriété ItemIndex qui renvoi l'index sélectionné dans la liste de choix possibles ou -1 si aucun item n'est sélectionné. Donc à partir de là tu peux récupérer la valeur comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if Onglet.ItemIndex <> -1 then
      ONGLET := Onglet.Items[Onglet.ItemIndex]
    else
      ONGLET := '';
    Sinon pense également à ne pas nommer tes variables avec le même nom juste en changeant la casse.

    @droogo : effectivement ça ne fonctionne pas dans le cadre de variables locales à une fonction ou une procédure mais pour les variables globales c'est tout à fait possible.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut
    Sorry,

    Je pensais qu'il voulait transtyper sa variable nom et non la déclarer.

    Pourtant je fais du C# et du delphi, j'aurais du y penser
    Tu peux le faire, tu veux le faire tu vas le faire Bref, soyons positif

  15. #15
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Joe,
    Citation Envoyé par Aka Guymelef Voir le message
    @droogo : effectivement ça ne fonctionne pas dans le cadre de variables locales à une fonction ou une procédure mais pour les variables globales c'est tout à fait possible.
    Certes, mais les variables globales... tu vois ce que je veux dire.
    Si les cons volaient, il ferait nuit à midi.

  16. #16
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par droggo Voir le message
    Joe,

    Certes, mais les variables globales... tu vois ce que je veux dire.
    Pour ça voir cette discussion.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  17. #17
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Si je peux me permettre, je te conseillerai de lire ce guide ... Ca peut faire un bonne base


    Bonne soirée
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

Discussions similaires

  1. identifiant commencant par 1
    Par claudyyyyy dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/04/2004, 14h16
  2. [Rave5][Débutant] commencer en rave
    Par duffman dans le forum Rave
    Réponses: 2
    Dernier message: 07/04/2004, 12h07
  3. Commencer la programmation avec le langage Java ?
    Par von_magnus dans le forum Débuter
    Réponses: 14
    Dernier message: 09/03/2004, 22h19
  4. commencement
    Par br0Nkz dans le forum Débuter
    Réponses: 29
    Dernier message: 16/06/2003, 13h25

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