begin process at 2008 07 05 07:34:34
1 205 059 membres
45 nouveaux aujourd'hui
14 118 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme de string! [ Archives / Au secours ] (frdestroyers27)

Probleme de string! le 07/02/2004 23:34:00

frdestroyers27
Bonjours a tous!
j'ai un probleme que je n'arrive pas a resoudre et je ne trouve pas d'aide nul part pour ca!
je vais mettre mon code
en gros ca cherche les playlist de winamp les affiche a l'ecran
(jusqu'a 50 max)
ca ouvre le premier playlist trouver et j'essai de faire un renderfile du mp3 du playlist
c'est en win32 console app

#include <windows.h>
#include <string.h>
#include <tchar.h>
#include <stdlib.h>
#include <stdio.h>
#include <wchar.h>
#include <conio.h>
#include <atlbase.h>
#include <dshow.h>
#include <iostream.h>
#include <malloc.h>

#define SAFE_RELEASE(i) {if (i) i->Release(); i = NULL;}
void lister(LPCTSTR fichier);
void file_load();

void kill_dshow();
BOOL file_render(LPTSTR szMusicFile);


TCHAR nom[50][MAX_PATH]; //contient nom des playlists
IGraphBuilder *pGraph=NULL;
IMediaControl *pControl=NULL;
IMediaEvent *pEvent=NULL;
HRESULT hr;




int main(void)
{
CoInitialize(NULL);
lister("c:\\*.m3u");
CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,
IID_IGraphBuilder,(void**)&pGraph);


hr=pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);
if(FAILED(hr))
{
cout<<"erreur Query IMediaControl";
pGraph->Release();
pGraph=NULL;
CoUninitialize();

return 0;
}

hr=pGraph->QueryInterface(IID_IMediaEvent,(void**)&pEvent);
if(FAILED(hr))
{
cout<<"erreur query IMediaEvent";
pGraph->Release();
pControl->Release();
CoUninitialize();
return 0;
}



file_load();

kill_dshow();
CoUninitialize();
system("Pause");
return 1;

}



void lister(LPCTSTR fichier)
{
WIN32_FIND_DATA wData;


HANDLE listing;
listing = FindFirstFile(fichier, &wData);
if(listing==INVALID_HANDLE_VALUE)
{
cout<<"\nAucun txt\n\n";
return;
}
lstrcpy(nom[0],wData.cFileName);
cout<< nom[0] << endl;
for(int i=1;i<=50;i++)
{

FindNextFile(listing, &wData);
if(GetLastError()==ERROR_NO_MORE_FILES)
{
lstrcpy(nom[i],"<Empty>");
}
else
{
lstrcpy(nom[i],wData.cFileName);
}
cout<< nom[i] << endl;
}

FindClose(listing);
}

void file_load()
{
FILE *playlist;
LPTSTR szPlaylist;
LPTSTR szResult;
szPlaylist=(LPTSTR)malloc(MAX_PATH);
//szResult=(LPTSTR)malloc(MAX_PATH);
TCHAR path[MAX_PATH]="C:\\";
_tcscat(path,nom[0]);
playlist=_tfopen(path,"rt");
_fgetts(szPlaylist,_MAX_PATH,playlist);
_fgetts(szPlaylist,_MAX_PATH,playlist);
_fgetts(szPlaylist,_MAX_PATH,playlist);
szResult=TEXT(szPlaylist);//meme sans faire ca, ca marche pas!
cout<<szPlaylist; //j'affiche voir si c'est ok!

file_render(szResult);
fclose(playlist);
}



void kill_dshow()
{
SAFE_RELEASE(pControl);
SAFE_RELEASE(pEvent);
SAFE_RELEASE(pGraph);

}

BOOL file_render(LPTSTR szMusicFile)
{

WCHAR wFile[MAX_PATH];
MultiByteToWideChar(CP_ACP,0,szMusicFile,-1,wFile,MAX_PATH);
hr=pGraph->RenderFile((LPCWSTR)wFile,NULL);
if(FAILED(hr))
{
cout<<"\n"<<"erreur de renderfile"<<"\n";
return FALSE;
}
return TRUE;
}

si quelqu'un peux m'aider ca serait tres tres apprecier parce que la je sait plus quoi faire!
Merci d'avance!
Destroyers27

Re : Probleme de string! le 08/02/2004 15:02:52

ymca2003
en codant le nom en dur est-ce que ça marche (les chaînes unicode entre "" doivent avoir L devant):


pGraph->RenderFile(L"met le nom ici",NULL);

sinon, page msdn sur l'interface IGraphBuilder :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/htm/igraphbuilderinterface.asp

Re : Probleme de string! le 08/02/2004 20:23:13

frdestroyers27
t'a raison c'est la bonne methode sauf que de cette facon le nom du fichier doit etre predeterminer mon probleme c'est que je lis dans un fichier c'est storer dans une variable comment faire pour que le L soit la il doit y avoir un moyen que ca marche parce que lorsque que je me sert de OPENFILE
le code qui fait un browser pour choisir un fichier ben la variable retourner ca marche avec le renderfile et je sais pas comment il traite la variable pour que ca marche!
pour le site de microsoft j'ai ete voir deja c'est pas expliquer c'est d'ailleur toujours tres mal expliquer!
il montre comment s'en servir avec un nom de fichier
pgraph->RenderFile(L"c:\\musique.mp3",NULL);
eu prenne plutot un avi mais c'est la meme affaire
mais ca change rien a mon probleme!
si ya un moyen j'aimerais bien le savoir parce que je suis vraiment desesperer ca fait comme 9 fois que j'essaie des code different et ca marche jamais!
Destroyers27

Re : Probleme de string! le 08/02/2004 23:16:46

ymca2003
Lors de la conversion ANSI->UNICODE essai ça :

WCHAR wFile[MAX_PATH];
wsprintfW(wFile, L"%hs", szMusicFile);
hr=pGraph->RenderFile((LPCWSTR)wFile,NULL);

Re : Probleme de string! le 11/02/2004 19:14:09

frdestroyers27
j'ai essayer ca et ca marche pas plus!
j'ai essayer avec s et S au lieux de hs et ca marche pas non plus... j'ai essayer en enlevant la commande TEXT que je mettait et ca marche pas plus...mais j'ai fait un cout avant conversion de szMusicFile en fait j'ai fait:
cout<<"#"<<szMusicFile<<"#";
et bizarrement le '#' de la fin s'affiche juste sur l'autre ligne
je me demande si genre le reste de la string n'est pas rempli avec du garbage ou si il y aurait pas un \n dedans...
je sais pas si ca peux causer un probleme!
et si je fait un cout de wFile apres conversion ca donne de quoi comme 0x1233x0197 je sais pas si c'est normal ca aussi!
Destroyers27

Re : Probleme de string! le 11/02/2004 19:58:58

ymca2003
en effet, la fonction fgets garde un retour chariot à la fin de la chaîne => ça fout la merde pour ouvrir le fichier.

fait ce test avant d'ouvrir :
int len = strlen(szMusic);
if(len > 0 && szMuzic[len-1] == '\n')
szMusic[len-1] = '\0';

Re : Probleme de string! le 12/02/2004 07:11:42

frdestroyers27
Genial! merci beaucoup!
ca marche!!!!
Destroyers27


Classé sous : include, void, return, hr, pgraph

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS