Fichier compreneant texte et image [Résolu]

Signaler
Messages postés
109
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
17 juillet 2007
-
Messages postés
109
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
17 juillet 2007
-
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 !!

merci de m'aider

10 réponses

Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007

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)
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007

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...
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
109
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
17 juillet 2007

Merci l'ecriture du fichier fonctionne très bien mais lors de la lecture du fichier et de l'écriture de l'image.

Open Fichier For Input As #1
Open "C:\Image.jpg" For Output As #2
Print #2, Input(LOF(1) - Seek(1), 1)
Close #1
Close #2

la ligne Print #2, Input(LOF(1) - Seek(1), 1) renvoit une erreur !

'erreur' d'exécution n°62
L'entrée dépasse la fin de fichier

Pouvez vous m'aider ? Que dois-je faire pour corriger ça ?
Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007

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).
Messages postés
109
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
17 juillet 2007

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

C'est gentil de m'aider !
Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007

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 :

Input #1, length_image
Seek #1, LOF(1)-(length_image-1)
Print #2, Input(length_image,1)


J'espère que ça va marcher ; je suis toujours au cyberlocal !
Messages postés
109
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
17 juillet 2007

Voila he ben c'est toujours le même problème :

Print #2, Input(length_image, 1)

Pose un problème de longueur.
Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007

Tu es sûr que l'écriture du fichier marche bien ? Parce que le problème peut venir de là aussi.
Messages postés
109
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
17 juillet 2007

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
Messages postés
109
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
17 juillet 2007

Merci beaucoup ! Ca fonctionne ! J'ai simplement du enlever le ligne

Write #1, LOF(2) lors de la création du fichier !!!!