djcool74
Messages postés44Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention12 février 2005
-
6 sept. 2003 à 19:05
surfzoid
Messages postés463Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention21 avril 2010
-
9 janv. 2004 à 01:08
Bonjour à tous :-)
Voila, j'ai un problème très bizarre. Je fais un prog qui contient une ressource, depuis celle-ci, il extrait un fichier "rmiles.mid" dans le répertoire du prog en cours. Voici le morceau du code :
===================================
Private Sub Form_Load()
Dim BDATA() As Byte
Dim FichierMidi As String
Dim nomfichier As String
Dim nom As String
Text1.Text = App.Path & "\rmiles.mid"
'Nom du repertoire ds laquel on va copier le son
nomfichier = Text1.Text
nbr = FreeFile
Open nomfichier For Binary As #nbr
'Caractéristiques et nom du son inclu dans le programme
BDATA = LoadResData(101, "CUSTOM")
Put #nbr, , BDATA
Close #nbr
' On joue le fichier mid
FichierMidi = Trim(nomfichier)
JouerMusic (FichierMidi)
End Sub
===================================
Mais le problème, c'est que ça merde au niveau de l'adresse pour jouer le fichier qui a été extrait (pourtant, il s'extrait correctement car je le vérifie grace à une textbox, mais impossibilité de le jouer).
Si je mets : nomfichier "C:\rmiles.mid", ça marche, mais si je mets : nomfichier App.path & "rmiles.mid" ça marche pas
Auriez vous une petite idée ?
La misère d'un ami n'est pas plus amusante que le vue d'un jardin dont la flore est mourrante.
djcool74 :-p
djcool74
Messages postés44Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention12 février 2005 6 sept. 2003 à 19:17
Oui, je sais, je me suis gouré dans le message, je mets :
nomfichier App.path & "\rmiles.mid"> marche pasnomfichier "C:\Windows\System\Bidon\rmiles.mid"> marche.
C'est trop bizarre, c'est pour cela que je demande de l'aide
:-)
La misère d'un ami n'est pas plus amusante que le vue d'un jardin dont la flore est mourrante.
djcool74 :-p
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 6 sept. 2003 à 19:45
j'avais bien pensé aussi que c'etait une erreur mais bon on sais jamais :
bon sinon as tu regardé ce que renvoie app.path
ou encore est-ce que le fichier est bien présent dans après extraction dans le dossier de l'app juste apres l'instruction close #nbr
s'il y est, c que le prb vient de ta sub JouerMusic si tu passes le meme chemin à JouerMusic et à Open
djcool74
Messages postés44Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention12 février 2005 7 sept. 2003 à 11:46
Tout est correct, je fichier s'extrait au bon endroit. Si c'est une adresse du type nomfichier=App.path & "\rmiles.mid", il arrive pas à lire, par contre si c'est un truc du genre :
nomfichier="C:\Windows\System\Bidon\rmiles.mid" ça marche.
La procédure, JouerMusic et StopperMusic, je l'ai pris sur un site, mais je ne comprends pas trop ce quelle fait, mais la voici pour + de précisions :
=====================================
Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
' dans un module BAS
Public Function JouerMusic(ByVal Fichier As String, _
Optional ByVal Alias As Variant) As Boolean
Dim nRet As Long
If IsMissing(Alias) Then Alias = "tune"
Call StopperMusic(Alias)
If mciSendString("open " & Fichier$ & " alias " & Alias, _
vbNullString, 0, 0) = 0 Then
nRet = mciSendString("play " & Alias & " from 0", _
vbNullString, 0, 0)
JouerMusic (nRet 0)
Else
MsgBox "Impossible de jouer la musique"
End If
End Function
Public Sub StopperMusic(Optional ByVal Alias As Variant)
MoiOlivier
Messages postés172Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 4 août 2005 7 sept. 2003 à 11:56
Salut,
Pour que App.path renvoie le vrais chemin de l'exécutable, il faut que le prog soit compilé. Si tu teste ton prog sans le compiler, App.path renvoie le chemin en cours, donc le chemin renvoyé est celui renvoyé par la fonction CurDir. Tu peux changer le CurDir en utilisant la fonction ChDir (va voir dans l'aide en ligne de VB pour la syntaxe, c'est pas compliqué).
djcool74
Messages postés44Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention12 février 2005 7 sept. 2003 à 13:09
Non, cela n'a strictement aucune importance. Pour preuve, va dans l'explorateur d'objet et regarde à App.path, c'est marqué :
"Spécifie le chemin du fichier projet .VBP lorsque l'application est exécutée à partir de l'environnement de développement ou le chemin de l'exécutable lorsque l'application est exécutée comme un fichier exécutable."
Et je l'ai compilé, mais ça ne marche pas quand même.
Par contre, j'ai remarqué un truc bizarre, quand le projet n'es pas compilé, dans la TextBox1, ça me mets le chemin du fichier extrait comme il l'est sur le disque mais quand je compile le prog, il me mets aussi le chemin mais il me mets les répertoires en majuscules
du genre "C:\MES DOCUMENTS\rmiles.mid" quand il est compilé et "C:\Mes Documents\rmiles.mid" quand il n'est pas compilé.
Mais, à mon avis, ça merde au niveau de la procédure
Mais comment ??????,
Car si je mets "C:\Mes Documents\Exemple\rmiles.mid", ça marche et si je mets :
App.path & "\rmiles.mid" ça ne marche pas.
Je ne vois pas en quoi ça gène, car le fichier est bien extrait mais pas joué.
La misère d'un ami n'est pas plus amusante que le vue d'un jardin dont la flore est mourrante.
djcool74 :-p
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 7 sept. 2003 à 13:35
salut
alors la je comprends plus : dans jouerMusic tout est correct : on appelle MCI pour jouer le son (il y a d'autres méthodes sur VBFrance.com sans extraction)
sinon mets ca :
Private Sub Form_Load()
Dim BDATA() As Byte
Dim nomfichier As String
nomfichier = App.Path & "\rmiles.mid"
'Nom du repertoire ds laquel on va copier le son
Text1.Text = nomfichier
Open nomfichier For Binary As #1
'Caractéristiques et nom du son inclu dans le programme
BDATA = LoadResData(101, "CUSTOM")
Put #1, , BDATA
Close #1
' On joue le fichier mid
JouerMusic nomfichier
End Sub
si ca marche pas vérifie que le fichier extrait est un fichier son valide...
sinon je vois pas : regardes des sources du site qui font la meme chose
surfzoid
Messages postés463Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention21 avril 2010 9 janv. 2004 à 00:37
as tu essayer de mettre des guillemets ( chr(13) )un peut comme sous dos quan tu veux mettre des nom long
par ex chr (13) & app.path & chr(13) & "monfile" & chr(13)
a la racine de ton c tu na pas un fichier sans ext qui s apel program ou window si c le cas suprimes les (surtout pas les rep mais bien un fichier sans ext et sans icones,LoL)
et ultime test compile le ,met le sur un suport avec les vb6.dll , t ocx et autre depandances et essaye sur un autre PC .
comme ca au moin tu sera fixé
sinon pour info g le mem genre de pb avec tous mes projet lorsque je les fait tourné avec le debuggeur vb6 par contre compilé et dans un autres rep mon app.path marche nickel
c pourquoi je mais systematiquement ds la proc ou j utilise app.path : on error resume next et comme ca en debug il me fait plus chier mais je ne peut tjrs pas utilisé la fonction je ne peut que testé le reste
LoL
:big)