Accueil > Forum > > > > Passage de parametres avec concatenation a une fonction qui attend string
Passage de parametres avec concatenation a une fonction qui attend string
mardi 3 octobre 2006 à 05:06:38 |
Passage de parametres avec concatenation a une fonction qui attend string

develdelphi
|
Bonjour, Je vais vous enoncer mon probleme et je tiens a vous remercier de prendre le temps de lire tous ce code. Je suis dans la fonction OnDestroy() d'une boite de Dialog (IDD_CFGHARDWARE) et apres avoir modifier une zone Edit Control (IDC_EHARDWAREA)dont la variable est m_iBestCamA (variables entier contenant 6 chiffres)
je voudrais passer cette variable entiere a une fonction pour ecrire dans la base de registre les modification, cette fonction a pour classe CInit :
Code : int CInit::Set_Params_Hardware_Config_Init_CamA(CString cstrFileInitA) { m_Register.Write_HKey_Local_Machine (INIT_HARDWARE_CONFIG,"InitA",cstrFileInit); return(0); }
Donc lorsque je sauve mes parametres je veux mettre ces changements dans le registre grace a cette fonction en fesant comme suit (MyInit.Set_Params_Hardware_Config_Init_CamA() )
Code : void CVIewCfgHardware::OnDestroy() { CFormView::OnDestroy(); UpdateData(true); // TODO: Add your message handler code here if(IsModify()) { int iMessage; iMessage=MessageBox("Voulez vous sauver les paramètres ?","Sauver paramètres",MB_YESNO); if(iMessage==IDYES) { CInit MyInit; sMaximum MyMaximum; MyMaximum=MyInit.Get_Params_Hardware_Maximum (); MyMaximum.iNbZero=m_ctrlCellule.GetCurSel(); MyMaximum.iPointContact=m_iContact; MyMaximum.iPourcentageIr=m_iInfraRouge; MyMaximum.iPourcentageLargeur=m_iLargeur; MyMaximum.iPourcentageSurface=m_iSurface; MyMaximum.iPourcentageCellule=m_iCellule; ................... MyInit.Set_Params_Hardware_Maximum(MyMaximum); MyInit.Set_Params_Hardware_Config_Distance(m_uiDistance1,m_uiDistance2); // MyInit.Set_Params_Hardware_Config_Init_CamA("chemin"+"BestCamHardware_"+m_IBestCamA+".ini"); // MyInit.Set_Params_Hardware_Config_Init_CamB("chemin"+"BestCamHardware_"+m_IBestCamB+".ini"); ); /// Cstring ? Questions:
1)Comment dois-je passer mes variables m_IBestCamA et m_IBestCamB qui sont des entiers alors que la fonction attend un string? dois je utiliser atoi , si oui comment ?
2)Encore une question qui vient, c'est d'appeler le chemin qui se trouve dans une autre Dialog (IDD_REPERTOIRE) sous un Edit Control (IDC_EINITCAMERA) et dont la variable est m_cstrInitCamera vous l'aurais compris ici c'est deja du string donc je viendrais concatener avec un + mais pour appeler cette variable pourrais remplacer, dans cette instruction "chemin" par : GetDlgItemText( IDD_REPERTOIRE, IDC_EINITCAMERA, pointstr, Maxcount )
Code : LPTSTR pointstr; // par exemple ? int Maxcount = 6;// par exemple ? ........ ........ MyInit.Set_Params_Hardware_Config_Init_CamA(GetDlgItemText( IDD_REPERTOIRE, IDC_EINITCAMERA, pointstr, Maxcount )+"BestCamHardware_"+m_IBestCamA+".ini"); ........ .........
Est ce que la methode est envisageable je ne connais pas bien cette fonction? Merci de votre aide
|
|
mardi 3 octobre 2006 à 16:49:19 |
Re : Passage de parametres avec concatenation a une fonction qui attend string

buno
|
Salut, 1. Si tu regarde la classe CString, tu verras qu'elle contient une méthode Format() qui s'utilise comme un sprintf() classique: CString cstrInteger; int i=12; cstrInteger.Format("%d",i); 2. Tu peux évidemment récupérer ton chemin qui vient d'une boite de dialogue, pour peu qu'elle ne soit pas détruite mais, pour construire le chemin de ton fichier, il fau tle faire par étapes: CString cstrRepertoire, cstrFichier; GetDlgItemText(IDC_EDIT_REPERTOIRE,cstrRepertoire); cstrFichier.Format("%s\\BestCamHardware_%s.ini",cstrFichier,m_IBestCamA); En espérant que cela t'aidera... NB: Evites de récupérer tes paramètres dans la méthode OnDestroy(). Fais le plutôt dans la fonction OnOK()... Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai... Le site de mon mariage
|
|
mercredi 4 octobre 2006 à 09:55:02 |
Re : Passage de parametres avec concatenation a une fonction qui attend string

develdelphi
|
Salut, Merci beaucoup maintenant j'ai ça comme code pour la 1 ere question
1 ) Dans un premier temps par rapport ace qu'on a echangé :
Pour la reponse 1:
Code: /// CString strcam; strcam.Format("%d",m_iBestHardwareA); MyInit.Set_Params_Hardware_Config_Init_CamA(strcam); ///
Je crois que c'est bon par contre le %d veut dire qu'il s'agit d'un entier tout simplement ?
Pour la reponse 2 :
ici par contre ce n'est pas très clair:
//// ("chemin"+"BestCamHardware_"+ //// "chemin" correspond à ce qu'il y a dans le control Dialogue (IDD_REPERTOIRE) la variable m_cstrInitCamera "BestCamHardware_" correspond à une chaine constante qui viendra s'ajouter au chemin. Dialog (IDD_CFGHARDWARE) la variable m_iBestCamA
Car je n'ais pas bien compris 'cstrRepertoire' correspond t-il a '%s\\BestCamHardware_%s.ini' ? et comment implemeter les valeurs obtenues par les differentes etapes à l'instruction : //// ' MyInit.Set_Params_Hardware_Config_Init_CamA("chemin"+"BestCamHardware_"+m_IBestCamA+".ini"); ' ////
2) Dans un second temps, comme tu peux le voir le code a changé (reponse 1), en fait je dois changer le principe de programmation pour eviter certaines confusions, Je m'explique en fait la manière dont je t'avais dit c'était de mettre sur la meme cle de registre une fois uniquement (si on est dans le Dialogue (IDD_CFGHARDWARE) le numéro m_iBestHardwareA convertit en string. Et une autre fois (si on est dans le Dialogue IDD_REPERTOIRE) le chemin complet ( chemin+ le fichier + le numero de la camera) du repertoire ou se trouve le fichier ini de la camera.
Bref ca devient complexe, autant avoir trois clés de regsitre: -la première pour les deux cameras, par exemple "Directory Hardwares" devant avoir comme valeur le seul repertoire par defaut. Dans ce repertoire il ya les fichiers .ini des deux cameras.
-la seconde une pour chaque caméra, par exemple "Num A" devant avoir comme valeur le numero de série de la camera fournit par la DLL de la camera.
-la troisième une pour chaque caméra, sera la clé actuelle "InitA" ou on mettra comme valeurs le chemin complet ( le répertoire par defaut + le nom du fichier (BestCamHardware_) au quel on concatenera le numero de série de la camera et le .ini ) Et donc quand il le faudra on mettra dans dans le registre à la clé "InitA" pour la caméra A les données nécessaires afin qu'elle puisse bien s'initialiser.
Pour le moment je réalise les differents fonctions mais j'airais besoin de comprendre la question 2 car je devrais faire justement des concatenations avec des variables se trouvant dans differents endroits, pourrais tu m'aider a cet effet là? Merci bien
|
|
mercredi 4 octobre 2006 à 10:31:19 |
Re : Passage de parametres avec concatenation a une fonction qui attend string

buno
|
Oups, je vois que je t'ai enduis d'erreurs...  Je vais essayer d'y remédier. Pour la partie 1, le "%d" signifie effectivement que tu vas lui donner un entier. %f pour un flottant, %s pour une chaine de caractères. J'en viens donc à la partie 2, la concaténation de chaines pour avoir le chemin complet. Si j'ai bien compris, il y a 4 parties dans cette chaine, dont 2 fixes: - le répertoire par défaut que tu récupères dans une boite de dialogue: GetDlgItemText(IDC_EDIT_REPERTOIRE,cstrRepertoire); - le nom du fichier qui est fixe, à savoir "BestCamHardware_" - le numéro de série de la caméra, qui est variable et que tu as au format entier et non string (dis moi si je me trompe) - l'extension du fichier fixe, à savoir ".ini" Donc, pour reconstituer ton chemin complet, il faut faire la même manip que dans la 1ère partie, cad créer ta chaine à partir de morceaux fixes (que tu écris tels quels) et de morceaux variables (que tu spécifie avec des %): CString cstrCheminComplet; cstrCheminComplet.Format("%s\\BestCamHardware_%d.ini",cstrRepertoire,m_iBestHarwareA); Est-ce plus clair? Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai... Le site de mon mariage
|
|
jeudi 5 octobre 2006 à 16:41:09 |
Re : Passage de parametres avec concatenation a une fonction qui attend string

develdelphi
|
Salut,
Désolé pour ce retard à repondre, en effet je devais avance sur d'autres parties du programme. Merci beaucoup, c'est plus clair comme ça j'ai ceci maintenant qui marche bien:
//////// FSRetVal tmp; string strFile; CInit m_Init; if(m_bver==0) strFile=string((LPCTSTR)(m_Init.Get_Params_Hardware_Config_FileInit()+"BestCamHardware"+m_Init.Get_Params_Hardware_Config_FileInit_NumA()+".ini")); else strFile=string((LPCTSTR)(m_Init.Get_Params_Hardware_Config_FileInit()+"BestCamHardware"+m_Init.Get_Params_Hardware_Config_FileInit_NumB()+".ini")); //////////////
En fait tu as pu voir que pour fournir j'ai utilisait un string au lieu d'un entier pour les numeros. De plus, je n'ai pas employe ta fonction GetDlgItemText car avec ceci :
/// GetDlgItemText(IDC_EDIT_REPERTOIRE,cstrRepertoire); ///
Apparement ma classe ne le connaisait pas et qu'il falait la declarer (pourquoi ?) et ca devient pas tres propre au niveau du programme qui est un programme lourd avec bcp de classes et multithreads.
Enfin c'est pas ca le plus important car pour le moment je dois faire d'urgence une conversion de int vers string pour initialiser un objet BestCamHardware avec un if else et mettre comme parametre à la paranthese de BestCamHardware(); le numero cette portion de code:
////////test constructeur avec boleen CHardware::CHardware(bool bver) { m_bver=bver; m_pHardware=0; m_pHardware = new BestCamHardware(); TRACE("Début tache Hardware\n"); } ////////
Et je me demande comment je pourrais mieux le faire, avec la fonction atoi() peut etre ? Comme ceci:
////////test constructeur avec boleen CHardware::CHardware(bool bver) { m_bver=bver; int temp; if(m_bver==0) temp = int atoi (m_Init.Get_Params_Hardware_Config_FileInit_NumA()); else temp = int atoi (m_Init.Get_Params_Hardware_Config_FileInit_NumB()); m_pHardware=0; m_pHardware = new BestCamHardware(temp); TRACE("Début tache Hardware\n"); } ////// Je sais pas si c'est l'idéal de mettre des if() dans le constructeur ? Mais sinon est ce que le programme est juste? Encore merci
|
|
jeudi 5 octobre 2006 à 16:53:58 |
Re : Passage de parametres avec concatenation a une fonction qui attend string

develdelphi
|
Salut,
Juste une chose encore pour la fonction atoi() :
#include <stdlib.h>int atoi(const char *str); The atoi( ) function converts the string pointed to by str into an int value. dans la paranthese il faut passer un pointeur c'est ca que ca veut dire au fait le const char ? Merci
DevelDelphi :)
|
|
jeudi 5 octobre 2006 à 16:58:02 |
Re : Passage de parametres avec concatenation a une fonction qui attend string

buno
|
atoi() te permet, comme son nom l'indique de passer d'une chaine de caractères vers un entier (ASCII To Integer). Or, tu veux le contraire si j'ai bien compris. Utilise donc sprintf() qui te permet de convertir "n'importe quoi" en chaine de caractères. sprintf(strCam, "%d", m_Init.Get_Params_Hardware_Config_FileInit_NumA()); Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai... Le site de mon mariage
|
|
vendredi 6 octobre 2006 à 00:41:31 |
Re : Passage de parametres avec concatenation a une fonction qui attend string

develdelphi
|
Salut,
en fait c'est bien ce que j'ai dit cette fois je veux l'inverse que ce que je t'avais demande au depart. En effet je veux convertir du string en integer car c'est vrai je te l'ai pas dit pour instancier l' objet de la classe BestCamHardware il a besoin qu'on lui passe un integer comme argument (temp) dans cette instruction:
//// m_pHardware = new BestCamHardware(temp) ////
La je suis sur c'est bien du string vers l'integer que je veux convertir par contre je me demande si je dois pas mettre (LPCTSTR) dans la fonction atoi comme j'avais fait pour mon premier probleme: strFile=string((LPCTSTR)(m_Init.Get_Params_Hardware_Config_FileInit()+"BestCamHardware"+m_Init.Get_Params_Hardware_Config_FileInit_NumA()+".ini"));
Merci
DevelDelphi :)
|
|
vendredi 6 octobre 2006 à 09:27:04 |
Re : Passage de parametres avec concatenation a une fonction qui attend string

buno
|
Ok, on va y arrivé  Bon. Tu as le numéro de ta caméra dans une string strNumeroCamera. Tu veux récupérer ce numéro dans un entier. Effectivement, il faut utiliser atoi()...avec une petite subtilité: atoi() attend en paramètre un char *. Or tu as une string. Il faut donc convertir ta string en char *: strNumeroCamera.c_str(). string strNumeroCamera="13"; int iNum = atoi(strNumeroCamera.c_str()); Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai... Le site de mon mariage
|
|
lundi 9 octobre 2006 à 09:10:27 |
Re : Passage de parametres avec concatenation a une fonction qui attend string

develdelphi
|
Salut,
Merci effectivement j'ai pour finir ceci comme code:
/// CHardware::CHardware(bool bver) { m_bver=bver; string strTemp; CInit m_Init; if(m_bver==0) strTemp = (LPCTSTR)m_Init.Get_Params_Hardware_Config_FileInit_NumA(); else strTemp = (LPCTSTR)m_Init.Get_Params_Hardware_Config_FileInit_NumB(); int iTemp = atoi(strTemp.c_str()); // temp = int atoi (m_Init.Get_Params_Hardware_Config_FileInit_NumB()); m_pHardware = 0; m_pHardware = new FastcomHardware(iTemp); TRACE("Début tache Hardware\n"); } ///
Qui a l'air de bien fonctionner :) Je ne savais comment convertir en chaines de caractères apparement c'était cette fonction c_str().
C'est bien gentil à toi Buno merci
|
|
Cette discussion est classée dans : fonction, params, hardware, mymaximum, myinit
Répondre à ce message
Sujets en rapport avec ce message
Par défaut Fonction de conversion d'un type specifique vers un int en retour de fonction [ par develdelphi ]
Bonjour, Voici mon problème; en fait j'ai un grand programme relatif a un système de detections.Ce programme a plusieurs threads qui tournent ensemble
converion d'un type specifique vers un entier lors du retour d'une fonction [ par develdelphi ]
Bonjour, Voila comme le titre le dit bien, je veux convertir un type donne ( FSRetval ) vers un type ( int ) lors du retour vers la fonction. Voici l
transfere de pointeur [ par stefbuet ]
salut, j'ai créé un pointeur dans une fonction, comment je peux faire pour pouvoir le réutiliser dans une autre fonction, ou mieux l'utiliser partous
fonction de hashage hash_map [ par Sk8yo ]
bonjour,voila mon probleme :j'ai une structure hash_map (STL) pour laquelle j'ai besoin de créer une fonction de hashage perso.J'ai cherché un peu par
probleme fonction prenant un std::istringstream [ par gg_the_boss ]
tout est ici (le code, les messages d'erreurs, les explications): http://www.rafb.net/paste/results/JKU81J25.htmlmerci d'avance pour vos reponses :D
Graphique f(x)=x^p [ par dustez ]
On me demande de réaliser un programme affichant sous forme textuelle des graphiques représentant les fonction du type f(x)=x^p, à partir des paramètr
Conditions répétitif - debuggeur [ par juki_webmaster ]
Salut, Pour achever le developpement de mon logiciel j'ai eu l'idée de concevoir un debuggeur maison et de l'intégré par la suite en "dur" dans les s
qsort fonctionnement? [ par deck_bsd ]
Bonjour a tous,Voila, je voudrai trier ce tableau :char nt[][100] = {"un","trois","quatre","cinq","a","bb","b","axxxxxxxxxxxxxxxxxxx"};Avec la fonctio
c++ [ par aminegenie ]
je veux une fonction dans le c++ qui me permet d'entrer une variable ou un caractere ou elle me lit le bouton en cours de la lecture de c++ une autre
fonction qui crash à retardement [ par clad67150 ]
Bonjour à tous !Je viens poster parce que j'ai un petit problème, j'essaye de faire une fonction de debug qui marche comme un printf() et qui affiche
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|