Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1362 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Mes questions en C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mes questions en C++

n°319579
haazheel
Posté le 27-02-2003 à 17:42:48  profilanswer
 

Salut à tous,
 
alors plutôt que de créer à chaque fois un topic pour une question, je poserai toutes mes futures interrogations dans ce topic...
 
C'est parti:
 
comment je peux réduire la condition suivante?
 

Code :
  1. if(Key == ':' || Key == '/' || Key == '\\' || Key == '*' || Key == '?' || Key == '"' || Key == '<' || Key == '>' || Key == '|')


 
Parce qu'en fait ça permet de vérifier quand l'utilisateur tape son futur nom de fichier qu'il n'y mettra pas de caractère qui annulera la création du fichier...
 
Et ensuite je voudrais savoir comment récupérer une chaine de caractère moins le dernier caractère tapé, comme cela quand l'utilisateur tape une touche "interdite", la chaine de texte qu'il est en train de taper se réactualise sans ce fameux caractère...
 
Merci d'avance!!

mood
Publicité
Posté le 27-02-2003 à 17:42:48  profilanswer
 

n°319608
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-02-2003 à 18:05:56  profilanswer
 

Les codes ASCII de ces touches ne sont pas contigüs, ça risque de pas être coton [:meganne]


---------------
J'ai un string dans l'array (Paris Hilton)
n°319611
antsite
Je me souviens
Posté le 27-02-2003 à 18:10:39  profilanswer
 

pour ta chaine sans le dernier caractères:

Code :
  1. char buf[255];
  2. buf[strlen(buf)-1] = '\0'; //normalement c'est bon je suis plus sur du -1 s'il le faut ou pas


Message édité par antsite le 27-02-2003 à 18:11:27
n°319635
Poireau
Posté le 27-02-2003 à 18:37:28  profilanswer
 

Voila comment je ferais en C, le code est pas optimise mais c plus lisible je pense :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. void lireNomFichier () ;
  5. int main(int argc, char *argv[])
  6. {
  7. char tampon [32] ;
  8. lireNomFichier (tampon, sizeof (tampon)) ;
  9. printf ("Nom : %s\n", tampon) ;
  10. system("PAUSE" );
  11. return 0;
  12. }
  13. void lireNomFichier (char * tampon, unsigned int taille)
  14. {
  15. char caractereCourant ;
  16. int i ;
  17. /* vider la chaine */
  18. for (i = 0 ; i < taille ; i++)
  19.  tampon [i] = '\0' ;
  20. /* se positionner sur le premier caracetere*/
  21. i = 0 ;
  22. printf ("Entrer votre nom de fichier : " ) ;
  23. while (((caractereCourant = getchar ()) != '\n') &&
  24.   i < taille - 1)
  25. {
  26.  switch (caractereCourant)
  27.  {
  28.   /* caracteres invalides */
  29.   case ':' :
  30.   case '*' :
  31.   case '\\' :
  32.   case '/' :
  33.   case '?' :
  34.   case '"' :
  35.   case '<' :
  36.   case '>' :
  37.   case '|' :
  38.    /* ne rien faire ou afficher un msg d'erreur*/
  39.    break ;
  40.   /* caracteres valides */
  41.   default :
  42.    /* copier le caractere valide*/
  43.    tampon [i] = caractereCourant ;
  44.    /* passer au caractere suivant */
  45.    i++ ;
  46.  }
  47. }
  48. }


Message édité par Poireau le 27-02-2003 à 18:39:21
n°319636
haazheel
Posté le 27-02-2003 à 18:37:44  profilanswer
 

Harkonnen a écrit :

Les codes ASCII de ces touches ne sont pas contigüs, ça risque de pas être coton [:meganne]


 
En PHP on peut faire un truc du style:
 

Code :
  1. if (x == ("oui" | "non" | "peut être" )
  2. {
  3. }


 
Comme ça on déclenche si x vaut soit oui, soit non,....
 
On peut pas faire quelque chose dans le même genre en C++??

n°319640
Captain ad​-hoc
miam les bon batonnets de tux
Posté le 27-02-2003 à 18:44:03  profilanswer
 

haazheel a écrit :


comment je peux réduire la condition suivante?
 

Code :
  1. if(Key == ':' || Key == '/' || Key == '\\' || Key == '*' || Key == '?' || Key == '"' || Key == '<' || Key == '>' || Key == '|')



Code :
  1. if (strchr(":/\\*?\"<>|",Key)) { ... }

n°319641
haazheel
Posté le 27-02-2003 à 18:45:04  profilanswer
 

merci de ton aide Poireau, mais je code avec Borland C++ Builder 6, et j'ai ça pour le moment:
 

Code :
  1. void __fastcall TAssistantForm::NomMatchKeyPress(TObject *Sender,char &Key)
  2. {
  3.   if(Key == ':' || Key == '/' || Key == '\\' || Key == '*' || Key == '?' || Key == '"' || Key == '<' || Key == '>' || Key == '|')
  4.   {
  5.         ShowMessage("Les caractères suivants sont interdits\r\n\\ / : * ? \" < > |" );
  6.   }
  7. }


 
Quant à ta solution ANTsite, le problème est que mon nom de fichier, que je tape dans un EditBox, est un AnsiString...
 
comment je peux convertir un AnsiString en char?
 
Le nom de fichier qui est tapé s'appelle NomMatch->Text

n°319642
haazheel
Posté le 27-02-2003 à 18:47:16  profilanswer
 

Captain ad-hoc a écrit :


Code :
  1. if (strchr(":/\\*?\"<>|",Key)) { ... }




 
Parfait!! Ca fonctionne nickel!!
 
Merci beaucoup :jap:

n°320995
haazheel
Posté le 02-03-2003 à 00:59:13  profilanswer
 

Bon, voilà, ça y est, j'ai réglé tous ces problèmes...
 
Maintenant, voici le nouveau:
 
j'arrive désormais à lire une vidéo AVI ou MPEG grâce à un composant MediaPlayer inclus dans C++ Builder...
 
La question que je me pose est de savoir si ce composant est aussi rapide qu'un player codé de toutes pièces en MCI?
 
Si non, auriez vous des liens qui expliquent une telle programmation? Parce que j'ai eu des bouts de code sur groups.google, mais j'arrive pas à compiler...
 
Merci d'avance...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Mes questions en C++

 

Sujets relatifs
quelques chtites questionsQuestions "Formulaire" et pop-up
[oracle] problème d'installation Oracle8i + questions de newbieQuestions en c
REMERCIEMENT + qq questions array dynamique.questions variable dans une requette sql ????
[Shell- Bash]Encore des questions de noob[UNIX-Shell]Questions de noob pour faire des scripts
ADA protected ? on se pose des questions ???recherche votre avis sur 2 pitites questions projet info
Plus de sujets relatifs à : Mes questions en C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR