none
Démarrer une application à partir d'un fichier de données RRS feed

  • Question

  • Bonjour,

    j'ai une appli VB2008 à partir de laquelle je sauvegarde quelques données au format texte dans un fichier de nom quelconque.

    J'ai associé dans l'explorateur Windows l’extension du fichier texte à mon appli, le démarrage de celle-ci s'effectue correctement.

    Maintenant ce que je souhaiterais faire, c'est lancer automatiquement la lecture des données du fichier.

    Merci pour vos suggestions.

    Bien à vous.

     

    dimanche 22 mai 2011 22:17

Réponses

  • En déboguant, oui. Mais lors d'un clic sur un fichier dont l'extension est associée au programme, c'est le chemin et nom de ce fichier qui devraient être affichés.

    EDIT : après vérification, c'est le deuxième argument qui contient le chemin du fichier lancé.

    Ainsi il est possible d'ouvrir le fichier en lecture via :

    (en supposant que leCheminDuFichierOuvert contienne le chemin valide de l'exécutable)

     

    Dim leCheminDuFichierOuvert As String = ""
     Dim args As String() = Environment.GetCommandLineArgs() 'on obtient les arguments de la ligne de commande
     leCheminDuFichierOuvert = args(1) 'réctification
     Dim contenu As String = ""
    
     Using sr As New IO.StreamReader(leCheminDuFichierOuvert)
    
     contenu = sr.ReadToEnd() 'on lit le fichier
    
     End Using
    


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.

    • Marqué comme réponse Tironron lundi 23 mai 2011 21:31
    lundi 23 mai 2011 19:54

Toutes les réponses

  • Bonjour,

    j'ai une appli VB2008 à partir de laquelle je sauvegarde quelques données au format texte dans un fichier de nom quelconque.

    J'ai associé dans l'explorateur Windows l’extension du fichier texte à mon appli, le démarrage de celle-ci s'effectue correctement.

    Maintenant ce que je souhaiterais faire, c'est lancer automatiquement la lecture des données du fichier.

    Merci pour vos suggestions.

    Bien à vous.

     

     

    Bonjour,

     

    Si j'ai compris ? Dans la procédure load notamment, donc avant affichage, juuste au lancement, à cet endroit on demande une lecture du fichier, mais je ne comprends pas l'étendue de ta question, est-ce que tu veux le code pour faire ça, et dans quoi sortiront les données, comment sont rangées le données, est-ce avec avec des retour à la ligne ou non (et dans ce cas, quel serait le séparateur), où se trouve le fichier à lire... ?

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    lundi 23 mai 2011 08:07
  • Bonjour,

    Apres avoir lu les commantaire de EhJo je suis complément d'accord avec lui, il y a des ambiguïtés sur ce que vous souhaitez faire.
    pour moi il s'agissait de faire un Process.start du fichier pour le lire visuellement mais il ne doit pas s agir de ça, si ?

     

    A bientôt


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    lundi 23 mai 2011 10:01
    Auteur de réponse
  • Bonjour,

     

    Merci pour vos réponses et questions.

     

    Je vais essayer de préciser ma demande.

     

    Les données sont actuellement lues dans le fichier par une simple instruction fileOpen comme suit :

     

    FileOpen(1, Chemin + Nom, OpenMode.Input)

    While Not EOF(1)

    Charact = LineInput(1) + Chr(32)

    End While

    FileClose(1)

     

    Ensuite les données contenues dans Charact sont traitées une par une puis rangées dans un DataGrid et des calculs sont effectués.

     

    Pour répondre à EhJoe, ce que je souhaite est lancer lors du Load la lecture du fichier pour en extraire les données, les traiter et seulement ensuite afficher l’application. En fait comme avec un fichier .xls où un clic suffit à lancer Excel et mettre en forme les données contenues dans le fichier.

     

    D’où une première question : comment initier l’ouverture du fichier sur lequel je viens de faire le double clic (parce que je ne connaît à priori pas le nom) ?

     

    Si ceci est faisable, pouvez vous me donner une piste sur le code à mettre dans la procédure Load ?

     

    Bien à vous.

     

    lundi 23 mai 2011 10:43

  • D’où une première question : comment initier l’ouverture du fichier sur lequel je viens de faire le double clic (parce que je ne connaît à priori pas le nom) ?

     

    Bonjour Lacsapdu67,

    En supposant que vous ayez assigné votre extension à votre programme, qui donc s'ouvre par défaut avec le fichier concerné. Vous pouvez récupérer le nom du fichier via les arguments.

    Voilà un exemple :

     

      Dim leCheminDuFichierOuvert As String = ""
        Dim args As String() = Environment.GetCommandLineArgs() 'on obtient les arguments de la ligne de commande
        leCheminDuFichierOuvert = args(0)
        MsgBox(leCheminDuFichierOuvert) 'vérification temporaire
    

    Ensuite il reste à ouvrir le fichier "leCheminDuFichierOuvert", je préfère utiliser la classe IO.StreamReader pour cela, mais FileOpen devrait faire l'affaire.

    Bonne journée.

     


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.
    lundi 23 mai 2011 11:24
  •  

    Merci.

    Cependant Environment.GetCommandLineArgs() me renvoie le chemin et nom de mon application, pas les infos du fichier sur lequel je suis en train de cliquer.

    J'ai essayé d'autres commandes, mais j'avoue être là très limite en connaissance sur tout ce qui est I/O.

    Auriez vous une autre piste ?

    Cordialement.

     

     

    lundi 23 mai 2011 19:33
  • En déboguant, oui. Mais lors d'un clic sur un fichier dont l'extension est associée au programme, c'est le chemin et nom de ce fichier qui devraient être affichés.

    EDIT : après vérification, c'est le deuxième argument qui contient le chemin du fichier lancé.

    Ainsi il est possible d'ouvrir le fichier en lecture via :

    (en supposant que leCheminDuFichierOuvert contienne le chemin valide de l'exécutable)

     

    Dim leCheminDuFichierOuvert As String = ""
     Dim args As String() = Environment.GetCommandLineArgs() 'on obtient les arguments de la ligne de commande
     leCheminDuFichierOuvert = args(1) 'réctification
     Dim contenu As String = ""
    
     Using sr As New IO.StreamReader(leCheminDuFichierOuvert)
    
     contenu = sr.ReadToEnd() 'on lit le fichier
    
     End Using
    


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.

    • Marqué comme réponse Tironron lundi 23 mai 2011 21:31
    lundi 23 mai 2011 19:54
  • Cependant Environment.GetCommandLineArgs() me renvoie le chemin et nom de mon application, pas les infos du fichier sur lequel je suis en train de cliquer.

    J'ai essayé d'autres commandes, mais j'avoue être là très limite en connaissance sur tout ce qui est I/O.

    Auriez vous une autre piste ? 

     

    Bonjour;

     

    Me concernant, tu veux lire ton fichier dans le load, voici :

     

     

    Sub Load...
     ' récupération du click externe sur le fichier 
     ' et chargementr dans ses deux variables
    
     dim chemin as string = ""
     dim nom as string = "" ' mettre \ devant le nom
    
     ' lecture fichier
     Try
     Dim i as integer = 0
     dim maxi as integer = 0
     Dim ligne() As String
    
     Dim p1 As New System.IO.StreamReader(chemin & nom)
      While p1.Peek() >= 0
       maxi = maxi + 1
      End While
     p1.Close()
    
     ReDim ligne(maxi)
     Dim p2 As New System.IO.StreamReader(chemin & nom)
     for i = 1 to maxi
      ligne(i) = p2.ReadLine()
     Next i
     p2.Close()
    Catch
     Msgbox("Fichier introuvable")
    End Try
    
     for i = 1 to maxi 
     ' ligne(i) ' chaque ligne de ton fichier
     next i
    End Sub ' load
    
    
    

     

     

    Il peut y avoir des erreurs, tu diras, car je l'ai fait de tête...

    Pour ce qui est de récupérer hors de ton application le nom du fichier cliqué puis ensuite de le passer avec son chemin au lancement de ce dernier, grâce à l'association d'extendion, je ne sais pas, je présume que des variables d'environnement externes doivent être prévues pour ce genre de truc, mais je ne sais pas comment ni quoi récupérer pour charger ton programme (dailleurs tu peux utiliser une seule variable dans ce cas), exemple :

    Dim CheminPlusFichier as string = ' la méthode de récupération ???

     

    Donc, soit quelqu'un va compléter, soit pose la question sur ce point ...

     

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire

    • Modifié EhJoe lundi 23 mai 2011 20:19 correctif
    lundi 23 mai 2011 20:18
  •  

    C’est avec args(1) que cela fonctionne.

     

    En résumé  :

     

    Associer dans l’explorateur Windows l’extension du fichier de données avec l’Appli

     

    En début de Load mettre :

     

    Dim leCheminDuFichierOuvert As String = ""

    Dim args As String() = Environment.GetCommandLineArgs()

     

    A la fin du Load :

     

    Try
    leCheminDuFichierOuvert = args(1)

    Lire le fichier

    Traitement du fichier

    Catch

    End Try

     

    Merci à tous !!

    Bien à vous.

     

     

    • Proposé comme réponse EhJoe lundi 23 mai 2011 21:34
    lundi 23 mai 2011 21:31