none
Inserer un fichier en dur dans le soft, et l'utiliser RRS feed

  • Question

  • Bonjour à tous!

    Jusqu'aujoud'hui, j'ai toujours reussi a trouver des solutions plus ou moins hortodoxes pour resoudre mes problemes, mais là, j'ai beau tourner dans tous les sens je ne trouve pas.

    J'ai ecris un petit soft qui effectue des operation sur des fichiers binaires: j'ouvre des fichier, les traites et les enregistres.

    Aujourd'hui je voudrai qu'un de ces ficher binaire soit inclu dans le soft, pourne pas avoir a faire ouvrir ....
    J'ai bien vu que je pouvait faire glisser tous type de fichier dans mon arbre (appelé explorateur de solution)

    Je n'arrive pas a acceder a ce fichier que j'insere...
    Jusqu'a maintenant, j'utilise : FileSystem.FileOpen(1, sFile, OpenMode.Binary, OpenAccess.Read)   pour acceder aux fichier que j'ouvre, et ensuite je passe par la fonction getfile... pour en extraire les octets.

    Est ce que quelqu'un pourrait eclairer ma lanterne?

    Si qqc n'est pas clair je peut reformuler

    Merci


    Sylvain
    mercredi 9 septembre 2009 13:41

Réponses

  • Salut Sylvain,
    Si tu souhaites, tu peux écrire le fichier sur le disque, et ensuite tu peux l'ouvrir.
    Mais ce n'est pas nécessaire, car My.Resources.monfichier est le type Byte (), exactement la même chose que tu obtiens en lisant depuis le disque.
    Cordialement,
    Marius

    Imports System.IO
    
    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            '1
            My.Computer.FileSystem.WriteAllBytes("monfichier.bin", My.Resources.monfichier, False)
            Dim fs As New FileStream("monfichier.bin", FileMode.Open)
            Dim b(fs.Length) As Byte
            fs.Read(b, 0, fs.Length)
    
            'ou 2
            Dim b1 As Byte()
            b1 = My.Resources.monfichier
            'apres ça, b and b1 sont la même chose
    
        End Sub
    End Class
    • Proposé comme réponse TroxsaEditor jeudi 10 septembre 2009 08:00
    • Marqué comme réponse Sylvain du 13 jeudi 10 septembre 2009 08:05
    mercredi 9 septembre 2009 22:58

Toutes les réponses

  • Bonjour,

    On peux très bien mettre un fichier en tant que ressource au projet mais celui ci est en ReadOnly (ne peux pas être modifiable)

    Pour mettre en fichier en tant que ressource il faut aller dans le menu projet, Propriété du projet, et ressource, choisir fichier et glisser le fichier dedans
    pour avoir accès a ce fichier il me semble il peut être utiliser en état c'est a dire comme msgbox(My.ressources.Monfichier) le resultat sera la contenance du fichier

    Il y a peut être une solution de contournement pour avoir un système de modification qui est utiliser les paramètres mais cela pourrais ne pas fonctionner car pas tester !


    Cordialement, Troxsa
    mercredi 9 septembre 2009 15:27
    Auteur de réponse
  • Merci de ta réponse!!


    Je vais tester ca sur le champ!
    mercredi 9 septembre 2009 15:33
  • Alors, comme convenu, lon fichier s'insert bien le dossier ''resources'', mais is je fait un ''msgbox(My.ressources.Monfichier)'', il me repond joyeusement: "L'argument 'Prompt' ne peut pas être converti en type 'String'.

    Le fichier que j'utilise est un fichier '.bin', où se suit differente valeur, le probleme vient peut etre de là.

    J'ai essayé:

    FileSystem.FileOpen(1,

    My.Resources.MonFichier, OpenMode.Binary)

     mais là il me dit que ''Une valeur de type 'Tableau à 1 dimension de Byte' ne peut pas être convertie en 'String'" en me soulignant My.Resources.MonFichier.

    Je vais continuer a trifouiller, si Troxsa où qulequ'un d'autre a une idée, je suis preneur!!


    Sylvain
    mercredi 9 septembre 2009 16:00
  • C'est normal car le fichier n'est pas considérer en tant que fichier mais en tant que valeur
    exemple, je met un fichier texte que j'appelle "monfichiertexte.txt" je modifie ça contenance en "Bonjours je suis la contenance du fichier" j'enregistre le fichier puis je le met dans ressources
    une fois que ce fichier ce trouve dans la ressource je lui met msgbox My.ressources.monfichiertexte
    le resultat sera alors "Bonjours je suis la contenance du fichier"

    Je pense qu'il faut faire la même chose avec votre fichier ".Bin" et ne plus utiliser FileOpen
    si le fichier a des donnée bytes il faut alors utiliser la variable qui va avec (As byte)

    Si le fichier doit ressembler a un tableau il faudra alors traité les données pour les mettre dans un tableau de donnée


    Cordialement, Troxsa
    mercredi 9 septembre 2009 16:59
    Auteur de réponse
  • Salut Sylvain,
    Si tu souhaites, tu peux écrire le fichier sur le disque, et ensuite tu peux l'ouvrir.
    Mais ce n'est pas nécessaire, car My.Resources.monfichier est le type Byte (), exactement la même chose que tu obtiens en lisant depuis le disque.
    Cordialement,
    Marius

    Imports System.IO
    
    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            '1
            My.Computer.FileSystem.WriteAllBytes("monfichier.bin", My.Resources.monfichier, False)
            Dim fs As New FileStream("monfichier.bin", FileMode.Open)
            Dim b(fs.Length) As Byte
            fs.Read(b, 0, fs.Length)
    
            'ou 2
            Dim b1 As Byte()
            b1 = My.Resources.monfichier
            'apres ça, b and b1 sont la même chose
    
        End Sub
    End Class
    • Proposé comme réponse TroxsaEditor jeudi 10 septembre 2009 08:00
    • Marqué comme réponse Sylvain du 13 jeudi 10 septembre 2009 08:05
    mercredi 9 septembre 2009 22:58
  • Merci à tous les 2, la solution N°1 de Marius me convient parfaitementelle entre parfaitement dans mon contexte, et ca marche!! je pense que le ''imports System.IO"  y est pour beaucoup, je ne le mettais pas auparavant...

    Merci beaucoup


    Sylvain
    jeudi 10 septembre 2009 07:02
  • Je t'en prie!
    Je remercie également TroxSa, pour les infos sur My.Resources.Monfichier, que je ne connaissais pas.
    Cordialement,
    Marius
    vendredi 11 septembre 2009 19:52
  • Y a pas de quoi :)
    (ça fait plaisir des remerciements) 
    Cordialement, Troxsa
    vendredi 11 septembre 2009 20:45
    Auteur de réponse