IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Exporter un fichier depuis une ressource locale


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut Exporter un fichier depuis une ressource locale
    Bonjour a tous,

    voilà mon problème :
    j'aimerais exporter un fichier quelconque que j'ai importé dans mon projet C#

    mais le problème c'est que j'aimerai le déposer à un endroit voulu depuis le code programme.

    pour etre plus précis il y a un fichier html qui fait partie de mon projet "resource embeded" et que j'aimerais que lorsque l'utilisateur clique sur le bouton "générer html" le fichier qui fait partie de mon projet compilé créer ce meme fichier à un endroit spécifique

    comment je peux résoudre mon problème svp ?

    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    Une autre question,
    est-ce que c'est en rapport avec le ressource manager de System.Ressource; ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Tu peux accéder au contenu du fichier via la classe TonApplication.Properties.Resources. Comme c'est un fichier texte, le contenu est accessible sous forme d'une variable string. Ensuite tu n'as plus qu'à écrire le contenu dans un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string html = TonApplication.Properties.Resources.ton_fichier;
    File.WriteAllText("un_fichier.html", html);

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Tu peux accéder au contenu du fichier via la classe TonApplication.Properties.Resources. Comme c'est un fichier texte, le contenu est accessible sous forme d'une variable string. Ensuite tu n'as plus qu'à écrire le contenu dans un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string html = TonApplication.Properties.Resources.ton_fichier;
    File.WriteAllText("un_fichier.html", html);
    En fait ce qu'il y a :

    Déjà tomlev dans code je ne trouve aucun fichier du type du mien, mais je vois de quoi tu veux me parler en citant ton exemple mais ce n'est pas a ca que je pensai
    Mais aussi ce n'est pas seulement des fichiers textes ou html que je veux exporter mais c'est aussi des icones

    Et le tout que j'inclu en faisant "add Reference" dans l'onglet de mon projet.

    toujours pas de ou d'autres suggestions?

    encore merci guys

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Je suis pas sûr d'avoir tout compris...

    Pour les icones, la propriété TonApplication.Resources.ton_icone renvoie un objet de type Icon, que tu peux enregistrer en appelant sa méthode Save. Idem pour les images.
    Pour les fichiers binaires, tu récupères un Stream, il faut donc lire ce stream et écrire ce que tu as lu dans le fichier où tu veux l'exporter.


    Pour les références je comprends pas trop... tu veux extraire les assemblies référencés par ton projet ? Ces assemblies ne sont pas des ressources, ils ne sont pas intégrés dans ton programme... si tu veux tu peux les lister comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    using System.Reflection;
    ...
    AssemblyName[] references = Assembly.GetExecutingAssembly().GetReferencedAssemblies();

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    Pour mes icones ce ne sont pas des .ico mais des .png mais je vais dja voir avec ca je te tiens au courant.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par programaniac Voir le message
    Pour mes icones ce ne sont pas des .ico mais des .png mais je vais dja voir avec ca je te tiens au courant.
    Citation Envoyé par tomlev Voir le message
    Idem pour les images.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    On efface tout et on recommence.

    Je reformule cette fois-ci avec des images!

    1. je créer un nouveau projet de type winform auquel je créer un dossier interne



    2. je rajoute des références, dans ce cas mes icones, dont je rends la propriété "build action" = "Embeded ressource"




    3. Ensuite lorsque un user clique sur un boutton je veux simplement que ces fichiers soit copiés vers un dossier

    comment je peux faire ca.

    PS: je te prend en aucun cas pour un déblie lol mais c'est juste pour que je soit sur que tu vois ce que je veux faire

    voilà.

    MERCI MERCI MERCI et pardon pour le dérangement!

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Oui, c'est bien ce que j'avais compris ! Mis à part un petit détail : tu n'utilises pas le designer de ressources (qui génère la classe WindowsFormsApplication3.Properties.Resources dont je parlais).

    Donc je vois 2 façons de faire, une simple et une un peu moins simple :

    - Plutôt que de simplement mettre Build Action = embedded resource, utilise le designer de ressources (propriétés du projet, onglet Resources) pour ajouter les ressources, et tu pourras y accéder comme j'expliquais plus haut.

    - Si tu préfères continuer de la même manière, utilise Assembly.GetManifestResourceStream pour extraire les ressources. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Assembly asm = Assembly.GetEntryAssembly();
    Stream stream = asm.GetManifestResourceStream("folder.gif");
    byte[] bytes = new byte[stream.Length];
    stream.Read(bytes, 0, stream.Length);
    stream.Close();
    File.WriteAllBytes("fichier_de_destination.gif", bytes);
    Mais j'ai jamais fait comme ça, je sais pas si c'est exactement comme ça que ça marche... Pour connaitre les noms des ressources, tu peux aussi utiliser Assembly.GetManifestResourceNames.

    Je te recommande évidemment la première méthode...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    Haaa voilà qui est un peu plus claire,

    En premier lieu je vais essayé de continuer sur ce que je faisai.

    si ca marche pas je me tourne vers le ressource manager temporairement et on essaiera de voir pourquoi ca ne la premiere solution ne marche pas ok?

    encore merci

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    comme tu veux, mais tu te compliques la vie pour rien à mon avis...

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    LOOOOOOL voilà chuis de retour

    Tout d'abor, a solution que tu m'a proposé fonctionnait presque
    dans le sens où Stream stream = asm.GetManifestResourceStream("folder.gif");
    ne fonctionnait pas car il fallait dans le chemin du fichier précisé le nom de l'assembly suivi d'un point et qui est donc Stream stream = asm.GetManifestResourceStream("MONAPPLI.folder.gif");


    ensuite : Non! détrompe toi tomlev, j'ai une certaine logique dans laquel lorsque je prend un chemin j'aime bien savoir s'il peut etre une alternative a un autre chemin correct et sinon pourquoi celui que j'aurai pris ne serai pas correct! .

    en l'occurence sache que les 2 manières fonctionnes je suis tres content d'avoir appris quelque chose en plus qui pourrait etre une autre option a prendre au cas où mé bon c quand meme, le meme résultat mais dans une autre direction

    donc je te remerci de m'avoir aidé c super gentil de ta part.

    Maintenant j'aimerai savoir comment faire pour exclure depuis une dll, tu saurai pas comment faire par hasard?


    Thanks A Lot

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Effectivement c'est toujours intéressant, et formateur, d'explorer des solutions alternatives... Je voulais juste dire que la solution utilisant le designer est plus simple (puisqu'il y a moins de code à écrire) et peut donc te faire gagner du temps, ce qui n'est pas négligeable quand tu as des délais à respecter...

    Citation Envoyé par programaniac Voir le message
    Maintenant j'aimerai savoir comment faire pour exclure depuis une dll, tu saurai pas comment faire par hasard?
    "exclure" ? tu veux dire "extraire" je suppose... Dans ce cas tu ne peux pas utiliser la classe Resources générée par le designer (enfin, c'est possible mais nettement plus compliqué, car cette classe n'est pas publique). Il faut donc passer par la méthode GetManifestResourceStream, mais appliquée cette fois à l'assembly correspondant à la DLL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Assembly asm = Assembly.LoadFile("le/chemin/de/la.dll");
    Stream stream = asm.GetManifestResourceStream("le.chemin.de.la.ressource");
    ...
    Si c'est une DLL référencée par ton projet, tu peux aussi récupérer l'assembly comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Assembly asm = typeof(UnTypeDéclaréDansLaDll).Assembly;
    (je suppose que tu parles d'une DLL .NET et non d'une DLL Windows native, sinon c'est nettement moins simple...)

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    BBBAAAAHHHH!!!!!

    Tu maitrise gars sérieux.

    bon hheuu oui je voulais bien dire extraire d'une dll lol.

    la premier bout de code me semble intéressant jvé voir avec ça!

    et tkt dès que je fini mon prog jte le file pour que tu vois ce que ca donne

    ou bien en screenshot hehe.

    pour un débutant comme moi je suis bien content de ce que j'ai fais jusque là


    ++

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/01/2006, 21h36
  2. [C#] Comment inserer Image depuis une ressource ?
    Par EagleEye dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/01/2006, 13h09
  3. [Javamail] Upload fichier depuis une page JSP
    Par matthieulombard dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 01/12/2005, 18h42
  4. Récupérer le nom de partage d'une ressource locale
    Par bib34690 dans le forum Langage
    Réponses: 4
    Dernier message: 12/10/2005, 16h10
  5. Exportation de données depuis une base
    Par david71 dans le forum JBuilder
    Réponses: 2
    Dernier message: 22/06/2004, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo