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

C++Builder Discussion :

Probleme de passage de parametres a une procedure


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut Probleme de passage de parametres a une procedure
    Bonsoir
    Je cherche a traduire un code Delphi sans succes
    le code Delphi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // appel de la fonction
    DefFonte(C.Font, 'Times New Roman', 24, []);
     
    // la fonction a executer
    procedure DefFonte(F: TFont; Nom: string; Taille: integer; Styl: TFontStyles);
    begin
     with F do begin
       Name := Nom;
       Size := Taille;
       Style := Styl;
      end;
    end;
    Voici ce que j'ai ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // appel de la fonction
    DefFonte(Printer()->Canvas->Font, "Times New Roman", 24, []);
     
    // la fonction a executer
    void __fastcall TForm1::DefFonte(TFont F, String Nom, int Taille, TFontStyles Styl)
       {
       Font->Name = Nom;
       Font->Size = Taille;
       Font->Style = Styl;
       }
     
    // declaration dans le .h
    void __fastcall TForm1::DefFonte(TFont F, String Nom, int Taille, TFontStyles Styl);
    Le message d'erreur recu a la compilation
    [C++ Error] Unit1.cpp(78): E2188 Expression syntax
    Je n'arrive pas a solutionner ce probleme

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Salut,
    peut tu nous précisez quel est la ligne 78 de ton code (ou en gros sur quel ligne le compilateur te sort cette erreur)


  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Gros oubli de ma part c'est sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DefFonte(Printer()->Canvas->Font, "Times New Roman", 24, []);

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    As mon avis il faudrait que tu remplace le [] par TFontStyle(), en tout cas le [] est bien invalide en c++ nom de variable devant

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // appel de la fonction
    DefFonte(Printer()->Canvas->Font, "Times New Roman", 24, TFontStyles());
     
    // la fonction a executer
    void __fastcall TForm1::DefFonte(TFont *F, String Nom, int Taille, TFontStyles Styl)
    {
       F->Name = Nom;
       F->Size = Taille;
       F->Style = Styl;
    }
     
    // declaration dans le .h
    void __fastcall TForm1::DefFonte(TFont *F, String Nom, int Taille, TFontStyles Styl);

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Je viens de trouver c'est vraiment trop bete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // appel de la fonction
    DefFonte(Printer()->Canvas->Font, "Arial", 11, TFontStyles());
     
    // la fonction a executer
    void __fastcall TForm1::DefFonte(TFont *F, String Nom, int Taille, TFontStyles Styl)
       {
       F->Name = Nom;
       F->Size = Taille;
       F->Style = Styl;
       }
    en fait effectivement il y avait " TFontStyles() " mais aussi " TFont *F " et " F->Name "

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut,

    Bon, j'ai vu que vous avez trouvé la première erreur (le passage de paramètre F ...)

    Je vous propose ceci pour ma part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void __fastcall TForm1::DefFonte(TFont *F, String Nom, int Taille, TFontStyle Styl)
    {
      F->Name = Nom;
      F->Size = Taille;
      if (Styl != NULL)
      {
        F->Style = TFontStyles() << Styl;
      }
      else
      {
        F->Style = TFontStyles();
      }
    }
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      DefFonte(Form1->Canvas->Font, "Times New Roman", 12, fsUnderline );
    }
    Bon, c'est pas très beau le coup du NULL ... Ca serait pas mal de faire en sorte qui si on ne saisit rien, alors pas de formatage de la Font ...

    Voilà

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Merci ero-sennin
    Mon probleme est completement resolu, pour la beaute du code il est peut etre possible de remplacer " NULL " par " \0 " c'est la valeur que l'on recupere en pointant sur " *F " en mode Debug, je n'ai pas teste, et je t'en prie tu peut me tutoyer

  9. #9
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Citation Envoyé par blondelle Voir le message
    Merci ero-sennin
    Il n'y a pas de quoi

    Citation Envoyé par blondelle Voir le message
    Mon probleme est completement resolu, pour la beaute du code il est peut etre possible de remplacer " NULL " par " \0 " c'est la valeur que l'on recupere en pointant sur " *F " en mode Debug, je n'ai pas teste,
    Disons que je visais à faire simple pour l'utilisateur ... Je n'ai pas testé le "\0" ... Mais si c'est totalement résolu, alors c'est parfait

    Citation Envoyé par blondelle Voir le message
    et je t'en prie tu peut me tutoyer
    C'est noté

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/08/2008, 07h40
  2. Réponses: 8
    Dernier message: 15/11/2007, 09h05
  3. Réponses: 3
    Dernier message: 15/06/2006, 11h48
  4. Réponses: 7
    Dernier message: 20/03/2006, 12h19
  5. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 17h59

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