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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Y a une fonction qui agit comme Mid en VB ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Y a une fonction qui agit comme Mid en VB ?

n°67108
godbout
Génial.
Posté le 23-10-2001 à 13:52:32  profilanswer
 

C'est a dire si on a:
 
chaine = mid("salut", 2, 4)
 
chaine contient alors "alu".
 
Merci ;)

mood
Publicité
Posté le 23-10-2001 à 13:52:32  profilanswer
 

n°67113
El_gringo
Posté le 23-10-2001 à 14:10:14  profilanswer
 

Bien sur...
Avec les MFC, tout est possible :D
la classe CString dispose de la méthode Mid( int nFirst, int nCount ).
 
du coup, tu fais:
 
CString strTachaine = "salut";
strTachaine.Mid(2,4) rend une CString qui contient "alu" ... c t'y pas beau ça !?:D

n°67115
godbout
Génial.
Posté le 23-10-2001 à 14:18:27  profilanswer
 

'tain c'est super cool mais j'utilise pas les MFC.
Je peux quand meme utiliser ca si j'ai fait un projet dll APiWin32 ?
 
parce que sinon j'etais parti sur une bonne voie (pour une fois)

n°67116
godbout
Génial.
Posté le 23-10-2001 à 14:19:54  profilanswer
 

par contre le pb c'est que mes chaine sont declarees en char [255] et pas en Cstring.

n°67119
godbout
Génial.
Posté le 23-10-2001 à 14:22:53  profilanswer
 

En + j'y connais vraiment que dalle aux MFC, tlm me dit que c'est bien mais je m'y suis toujours pas lance.
Ca fait peur de se lancer quand on connait rien

n°67123
El_gringo
Posté le 23-10-2001 à 14:27:33  profilanswer
 

c vraiement tout simple... si t'as le même compilo que moi (VC++), je t'explique comment faire un projet MFC en 2 secondes (seul pb, y faudra te démerder pr récupérer ce que t'as déja fait jusqu'a maintenant, chose qui devrait pas ê dur du tout !)

n°67124
El_gringo
Posté le 23-10-2001 à 14:29:17  profilanswer
 

ça c si tu veux apprendre les MFC maintenant... par contre, si ton projet est important, et que t pressé, y a une classe string, on dit que c un template, enfin, j'crois... En fait, g jammais utilisé la classe string... d'ailleur, si qqn en passant peux aussi me dire comment on utilise ça... par curiosité !

n°67129
godbout
Génial.
Posté le 23-10-2001 à 14:37:40  profilanswer
 

Ben pour les MFC ca m'interesserait si tu pouvais m'expliquer, mais pas forcement pour le projet la, plutot pour les suivants parce que celui la doit etre fini pour vendredi et j'ai un peu peur de me lancer dans les mfc, et pas reussir a continuer ce que je dois faire. (je sais pas si j'ai ete clair sur la coup la :D)
On peut vraiment tout faire avec les MFC ?
Comme si on programmait ?
des dll aussi je crois ?
 
Pour Mid j'me suis fait ca, pas trop dur mais bon...
 
char* Mid(char *chaine, int debut, int longueur)
{
 char *ptr;
 char result[200];
 
 strcpy(result, "" );
 
 
 ptr = &chaine[debut - 1];
 strncpy(result, ptr, longueur);
 
 return result;
   
}

n°67131
El_gringo
Posté le 23-10-2001 à 14:42:10  profilanswer
 

ouais, ta fonction, g pas détaillé, ms j'imagine que ça marche...
Pour les MFC, tu m'as pas répondu... t'as Visual C++ !?

n°67136
godbout
Génial.
Posté le 23-10-2001 à 14:46:05  profilanswer
 

ah oui excuse.
Ouais je bosse sous Visual C++ 6.0, edition professionnelle :)

mood
Publicité
Posté le 23-10-2001 à 14:46:05  profilanswer
 

n°67141
El_gringo
Posté le 23-10-2001 à 14:55:36  profilanswer
 

ok... alors pour utiliser les mfc, y faut que, quand tu créés ton nouveau projet, au lieu de Win32 application, tu choisis MFC Wizard... y va te poser 2, 3 questions sur ce que tu veux faire; et, hop, la magie des MFC commence (j'en fait peut être un peu trop là ! :D). Après, vu que j'imagine que t'as la doc MSDN, j'te propose de regarder dedant; les classes de la MFC commencent toutes par C... comme CString.

n°67146
godbout
Génial.
Posté le 23-10-2001 à 15:06:51  profilanswer
 

Ok ben jusque la c'est pas trop dur.
J'ai pas le temps pour l'instant de matter tout ca mais j'y passerai surement une partie de mon week end (mais pas trop quand meme :D)
 
Merci ;)
Si j'ai besoin d'aide je referai monter le topic, a moins que t'ai d'autres infos ;)

n°67155
El_gringo
Posté le 23-10-2001 à 15:17:40  profilanswer
 

ms franchement, utiliser les MFC, ça simplifie plus que ça ne complique, tu verras...
Ouais, le dimanche, quand on est plus capable de faire autre chose que rester chez sois... la prog, ça passe !:D

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

n°67158
godbout
Génial.
Posté le 23-10-2001 à 15:20:54  profilanswer
 

ok, je te tiens au courant alors... ;)

n°67163
H4dd3R
Q2
Posté le 23-10-2001 à 15:28:04  profilanswer
 

Pour utiliser la classe CString ya pas besoin de créer un projet MFC!! ;) (et heureusement)..
 
Tu fais un include <afx.h> et pi c tout!!  :D


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
n°67165
El_gringo
Posté le 23-10-2001 à 15:35:08  profilanswer
 

ha, je savais pas ça... j'me doutais bien qui avait un moyen des les utiliser sans créer de projet MFC... et c quoi la différence entre stdafx.h, et afx.h ? et winbase.h il est inclus dans les afx.h, c ça !?

n°67170
BENB
100% Lux.
Posté le 23-10-2001 à 16:02:12  profilanswer
 

Alors en STL ca donne
 
#include <string> // sans .h je confirme...
 
using namespace std; //je sais c'est un peu barbare ;)
 
void mid(const char *init,int from,int length, char* result)
{
   string tempo = string(init).substr(from, length);
   strcpy(result,tempo.c_str());
}
 
ou string(init) cree une string a partir du char* init
substr cree la sous chaine que j'assigne a tempo.
puis je convertis tempo en char (methode c_str()) pour le recopier dans result...
 
ATTENTION ta methode ne marche pas...

Citation :

char* Mid(char *chaine, int debut, int longueur)  
{  
char *ptr;  
char result[200];  
 
strcpy(result, "" );  
 
 
ptr = &chaine[debut - 1];  
strncpy(result, ptr, longueur);  
 
return result;
   
}


 
En effet result est une variable locale qui est detruite a la fin de ta methode, or le pointeur que tu renvoie pointe toujours dessus, moralite il pointe n'importe ou...
Bien sur dans la plupart des cas cette zone n'aurra pas ete reutilise, et donc cela marchera, mais si elle a ete reutilise... enfin tu me comprends...  
Certains compilos mettent un warning... pas tous...

 

[edtdd]--Message édité par BENB--[/edtdd]

n°67174
godbout
Génial.
Posté le 23-10-2001 à 16:15:46  profilanswer
 

Ben merci ;)
Heureusement que tu me le dis, en effet mon compilo m'a prevenu, mais y a tellement de warnings ;)
J'vais essayer d'arranger tout ca

n°67176
El_gringo
Posté le 23-10-2001 à 16:20:25  profilanswer
 

y faut éviter d'avoir plein de warning ...
même si y a des petits truc inutils à faire; fait les pour faire plaisir au compilo et pr plus avoir ces warnings; c plus propre, et qd y a une VRAI warning au moins, tu le sais ! c pas pour les chien les warnings (de toute façon y comprendraient même pas ces cons d'animaux !)

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

n°67177
tfj57
Posté le 23-10-2001 à 16:21:11  profilanswer
 

Godbout a écrit a écrit :

Ben pour les MFC ca m'interesserait si tu pouvais m'expliquer, mais pas forcement pour le projet la, plutot pour les suivants parce que celui la doit etre fini pour vendredi et j'ai un peu peur de me lancer dans les mfc, et pas reussir a continuer ce que je dois faire. (je sais pas si j'ai ete clair sur la coup la :D)
On peut vraiment tout faire avec les MFC ?
Comme si on programmait ?
des dll aussi je crois ?
 
Pour Mid j'me suis fait ca, pas trop dur mais bon...
 
char* Mid(char *chaine, int debut, int longueur)
{
 char *ptr;
 char result[200];
 
 strcpy(result, "" );
 
 
 ptr = &chaine[debut - 1];
 strncpy(result, ptr, longueur);
 
 return result;
   
}  




 
Salut,
 
Il y a 2 problèmes avec ta fontion Mid :
- strncpy n'ajoute pas le 0 en fin de chaîne, donc la fin de chaîne n'est pas marquée !
- return result; NON car lorsque tu quittes Mid, le tableau result[200] n'existe plus et on a plus le droit d'y acceder. Si tu veux faire cela, il faut déclarer le tableau en static char result[200];
 
Voila une fonction mid toute simple.
 
A+
 
----------------------
 
#include <string.h>
 
void mid(char *ch, int deb, int nb, char *result)
{
   strncpy(result,ch+deb,nb);
   result[nb]=0;
}
 
main()
{
   char buf[256];
   mid("salut",2,4,buf);  // la chaîne résultat (buf) doit avoir une taille suffisante
   printf("%s\n",buf);
}

 

[edtdd]--Message édité par tfj57--[/edtdd]

n°67178
godbout
Génial.
Posté le 23-10-2001 à 16:29:51  profilanswer
 

Oulah vous me faites peur la !!
 
J'ai vraiment l'impression de programmer comme une merde :ouch:

n°67180
El_gringo
Posté le 23-10-2001 à 16:34:05  profilanswer
 

hé...le C c subtil. Si t'as l'habitude du VB, ça doit faire bizard au début. Ms on s'y fait... on fini même desfois par aimer ça ! :D

n°67181
godbout
Génial.
Posté le 23-10-2001 à 16:37:37  profilanswer
 

Ben le pb c'est que j'ai commence le C y a deux ans a l'iut, mais c'est vrai que niveau pointeur j'etais une merde et j'aimais pas trop ca.
Mais je pense que quand ca va venir je vais apprecier, mais pour l'instant j'ai l'impression de faire un paquet de conneries !!

n°67182
El_gringo
Posté le 23-10-2001 à 16:40:47  profilanswer
 

T'aurais jammais du faire de VB...
Quoi qu'avec les MFC c ûn peu le même pb: c trop "simplifié" et du coup, si on doit s'en passer, on est plutot emmerdé ! ça va m'tomber sur le gueule un jour, c sur  :sarcastic:

n°67183
BENB
100% Lux.
Posté le 23-10-2001 à 16:44:15  profilanswer
 

Godbout > aller on te soutiens, tu vas y arriver...
le C c'est comme le velo on n'oublie pas, mais il faut se remettre en jambes...
 
El_Gringo > Depuis le temps que je te dis d'oublier les MFC...
vive wxWindows et la STL !!!

n°67184
godbout
Génial.
Posté le 23-10-2001 à 16:47:51  profilanswer
 

Ben le pb c'est que quand t'as mal appris a faire du velo c'est dur de se corriger !!
 
Les MFC c'est pas bien ??

n°71631
H4dd3R
Q2
Posté le 12-11-2001 à 18:24:50  profilanswer
 

El_Gringo
et c quoi la différence entre stdafx.h, et afx.h ?
afx.h est une include normale des MFCs.
stdafx.h est juste une file générée par un wizzard pour précompiler un projet spécifique (et c assez foireux pour la reconnaissance des changements).
 
et winbase.h il est inclus dans les afx.h, c ça !?
Je pense.. À vérifier.. :)

mood
Publicité
Posté le   profilanswer
 


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

  [C++] Y a une fonction qui agit comme Mid en VB ?

 

Sujets relatifs
DELPHI Fonction[C++ / Templates / Visual Studio] fonction po accessible
C : Wrapper pour la fonction wsprintf[VB] Est-il possible de faire des pointeurs de fonction en VB ?
[PHP] Rassurer moi y'a une fonction pour l'heure dynamiquecherche fonction en C
fonction 'like' sous oracle[php] fonction mail()
fonction de hashage, Aie !Quelqu'un sait se servir de la fonction Shell_NotifyIcon?
Plus de sujets relatifs à : [C++] Y a une fonction qui agit comme Mid en VB ?


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