Recuperation d'une chaine de caractère en parametre

Crazyblood Messages postés 21 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 26 février 2007 - 30 oct. 2006 à 15:58
asmahane24 Messages postés 32 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 10 octobre 2011 - 25 oct. 2008 à 15:28
Bonjour,
Je suis en train de developpé une DLL pour créer une procedure stockée etendu sous SQL server,
je passe dans cette procedure un certain nombre de parametre dont l'un est un path ; je verifie donc si le path est bon le problème est que lorsque que je recupère mon paramètre, des caractères bizare sont ajoutés à la fin de mon path donc forcement le chemin n'est pas trouvé et une erreur m'est retournée.
Je débute en C++ et je ne sais donc pas trop comment m'y prendre pour ne récupérer que le path sans le reste derriere.

srv_paraminfo(pSrvProc, 3, &bType, &cbMaxLen, &cbActualLen, NULL, &fNull);

//Create some memory to get the parameter in to BYTE* Data =

new BYTE[cbActualLen];memset(Data, '\0', cbActualLen);

//Get the parametersrv_paraminfo(pSrvProc, 3, &bType, &cbMaxLen, &cbActualLen, Data, &fNull);

//Verification de l'adresse

if( (_access((
char*)&Data,0)) == -1){

//LE chemin n'existe pasprintError(pSrvProc, (

char*)Data);printError (pSrvProc, "srv_paraminfo failed... path not found");

return(XP_INCORECT_PARAMETERS);}

et lorsque je donne en 3eme parametre par exemple  'C:\Application' il me retourne C:\Applicationetpleindecaracterebizare

7 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 oct. 2006 à 16:42
ajoutes un \0

"C:\Application\0"

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
30 oct. 2006 à 16:52
Ben normalement, quand tu entre une chaine en paramètre comme suit:
fonction("mon texte");

Le 0 final est ajouté automatiquement.
Comment entre tu la chaine. Comme ça?

fontion(.., ..., "C:\Application", .......); ?

Si oui, ton problème est là. La solution est:
fontion(.., ..., "C:\\Application", .......);
ou
fontion(.., ..., "C:/Application", .......);

C++ (@++)<!--
0
Crazyblood Messages postés 21 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 26 février 2007
30 oct. 2006 à 17:00
j'ai essayé avec '\0' ca ne fonctionne pas.

En fait il s'agit d'une procedure stockée sous SQL Server donc mes parametres sont rentrés de cette façon :
exec

master
..xp_ma_proc_stockée_étendue 'param1'
,
'param2'
,

'C:\Application'
,
'param4' ......
0
Crazyblood Messages postés 21 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 26 février 2007
31 oct. 2006 à 08:54
Ce n'est pas non plus un pb de caractere d'echappement ; voila ce que j'obtient quanje recupere ma variable : C:\ApplicationÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍýýýý
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 oct. 2006 à 09:10
ton cbActualLen serait pas erroné ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Crazyblood Messages postés 21 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 26 février 2007
31 oct. 2006 à 09:59
mon cbActualLen vient de là : srv_paraminfo(pSrvProc, 3, &bType, &cbMaxLen, &cbActualLen, Data, &fNull);
0
asmahane24 Messages postés 32 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 10 octobre 2011
25 oct. 2008 à 15:28
Bonjour;

j'ai ecri une dll en dev c++ et je cherche a l'utiliser comme procedure stockées etendu sur sql server 7, je voudrai savoir ma dll doit etre ecrite d'une maniere specifique a cette utilisation et comment se fait l'appel de fonction de cette DLL avec sql server.

Merci de m'aider.
0
Rejoignez-nous