cs_moi4975
Messages postés109Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention17 juillet 2007
-
6 avril 2006 à 13:27
cs_moi4975
Messages postés109Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention17 juillet 2007
-
8 avril 2006 à 16:45
Salut à tous,
Voila j'ai cherché sur le forum mais je n'ai rien trouver !
Je réalise un programme de gestion de dvd et je voudrais créer un fichier qui contient du texte (Titre, Réalisateur,...) et l'image du film ! Tous ça dans le même fichier !
J'ai déja réussit à créer un fichier avec le texte mais pas l'image !
[T]Le Seigneur des anneaux
[R]Réalisateur...
[D]145
[X]22/08/1893
[P]Usa
Voila à quoi ressemble mon fichier mais comment puis-je insérer une image là dedans ??????
Mon programme ouvrirait le fichier récupererait le texte et créerait un nouveau fichier image avec les informations du fichier ouvert !!
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 décembre 2007 6 avril 2006 à 15:25
Bonjour.
Il existe une méthode un petit peu compliquée.
Tout d'abord inscris tes instructions comme tu l'as fait auparavant.
Puis ensuite, il faut que tu ouvres le fichier image et que tu copies toutes les données du fichier image dans ton fichier, à la suite des données texte.
Procède comme ceci :
Open tonfichier For Output As #1
Write #1, titre, réalisateur '... ce sont tes données texte
Open lefichierimage For Binary As #2
Print #1, Input(LOF(2),2) 'si l'instruction input c'est Input(Length, file) sinon inverse
Close #2
Close #1
Ainsi ton fichier va contenir exactement le fichier image.
Ensuite pour le lire, il suffira que tu crées un fichier à part afin de recréer l'image pour pouvoir ensuite la lire :
Open tonfichier For Input As #1
Input #1, titre, réalisateur '... tes données texte
Open fichiertmpimage For Output As #2
Print #2, Input(LOF(1)-Seek(1),1) 'inverse si c'est dans l'autre sens
Close #2
Close #1
Et pour finir : Picture1.Picture=Loadpicture(fichiertmpimage)
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 décembre 2007 8 avril 2006 à 16:30
Il reste encore une solution qui vient de me revenir.
Récupère tout d'abord tes données comme tu avais fait. Mais ensuite ferme le fichier.
Il faudra ensuite que tu réouvres le fichier mais non plus en mode Input mais en mode Binary !
C'est comme ça que tu pourras récupérer toutes les données avec la méthode que je t'ai indiqué !
Ça devrait donner :
Private Sub cmdOuvrir_Click()
Dim Fichier1 As String
Dim a As String
Dim Ligne As String
Fichier1 ="C:\Film.txt"
Open Fichier1 For Input As #1
Input #1, a
For x = 1 To Val(a)
Input #1, a
MsgBox (a)
Next
temp_pos = Seek(1)
Close #1
Open Fichier1 For Binary As #1
Seek #1, temp_pos
Open "C:\NouvelleImage.jpg" For Output As #2
Print #2, Input(LOF(1) - (Seek(1) + 1), 1)
Close #2
Close #1
Picture1.Picture = LoadPicture("C:\NouvelleImage.jpg")
End Sub
Cette fois-ci ça devrait marcher... Enfin j'espère...
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 décembre 2007 8 avril 2006 à 14:53
Et bien cela signifie que le programme essaie de lire une longueur de fichier supérieure à la longueur de l'image. Dans ce cas, il suffit peut être de mettre :
Print #2, Input(LOF(1)- (Seek(1)+1),1).
Le Seek(1) sert normalement à indiquer la position de lecture dans le fichier. Si on essaie de lire la longueur totale moins la position du fichier, on devrait normalement obtenir le fichier image. Mais il se peut qu'il y ait un problème de décalage d'un octet. C'est pourquoi essaie de transformer la ligne comme je l'ai indiqué. Si cela ne marche toujours pas, renvoie un message et j'essaierai chez moi (j'ai pas Internet chez moi, donc je viens sur ce site au Cyberlocal, où il n'y a pas Visual basic).
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_moi4975
Messages postés109Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention17 juillet 2007 8 avril 2006 à 15:36
Non ça ne marche toujours pas ! J'ai toujours ce laid message d'erreur !
Voici mon code :
Private Sub cmdCréer_Click()
Dim Fichier1 As String
Dim Fichier2 As String
Fichier1 = "C:\Film.txt"
Fichier2 = "C:\ImageOrigine.jpg"
Open Fichier1 For Output As #1
Open Fichier2 For Binary As #2
Write #1, "10"
Write #1, txtTitre.Text
Write #1, txtRealisateur.Text
Write #1, txtDuree.Text
Write #1, txtDate.Text
Write #1, txtPays.Text
Write #1, txtActeur.Text
Write #1, txtCotation.Text
Write #1, txtGenre.Text
Write #1, txtFormat.Text
Write #1, txtSupport.Text
Write #1, Input(LOF(2), 2)
Close #2
Close #1
End Sub
Private Sub cmdOuvrir_Click()
Dim Fichier1 As String
Dim a As String
Dim Ligne As String
Fichier1 ="C:\Film.txt"
Open Fichier1 For Input As #1
Open "C:\NouvelleImage.jpg" For Output As #2
Input #1, a
For x = 1 To Val(a)
Input #1, a
MsgBox (a)
Next
Print #2, Input(LOF(1) - (Seek(1) + 1), 1)
Close #2
Close #1
Picture1.Picture = LoadPicture("C:\NouvelleImage.jpg")
End Sub
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 décembre 2007 8 avril 2006 à 15:59
J'ai trouvé une solution !
Il suffit que dans ton fichier tu ajoutes la longueur du fichier image dans tes données
Rajoute après Write #1, txtSupport.Text le code Write #1, LOF(2)
Puis pour ouvrir le fichier, remplace Print #2, Input(LOF(1) - (Seek(1) + 1), 1) par les
trois lignes suivantes :
cs_moi4975
Messages postés109Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention17 juillet 2007 8 avril 2006 à 16:23
Oui mon fichier texte contient toute les données (Titre,relisateur,etc) et puis il contient du texte (illisible) .Mais ce texte est sur plusieurs ligne et contient des virgules peut-etre que cela peut poser problème avec Input non ?
Ce code me donne une image parfaite
Open "C:\Image.txt" For Output As #1
Open Text2.Text For Binary As #2
Print #1, Input(LOF(2), 2)
Close #2
Close #1
Name "C:\Image.txt" As "C:\Image.jpg"
Je ne comprend pas pourqoui ma méthode pose problème