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

Basic Discussion :

[OOBasic (openoffice)] Ouvrir un fichier existant


Sujet :

Basic

  1. #1
    Membre éclairé
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 474
    Points : 772
    Points
    772
    Par défaut [OOBasic (openoffice)] Ouvrir un fichier existant
    Bonjour,

    Comme le titre le précise je cherche à ouvrir un fichier qui existe ("essai1.txt") puisqu'il a été créé par cette macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    REM  *****  OOBASIC  *****
    REM *** ouverture et fermeture de fichiers textes 
     
     
     
    Option Explicit   ' Déclaration explicite des variables
     
    ' Nom et chemin du fichier qui sera créé par la macro
    Public Const nomFichier = "C:\Documents and Settings\Propriétaire\Mes documents\essai1.txt"
     
     
    Sub EcrireFichierTexte()
    Dim f1 As Integer
     
    f1 = FreeFile 'obtenir un numero de fichier (numero de canal)
     
    Open nomFichier For Output As #f1
     
    Print #f1, "Macro en OO basic"
    Print #f1, " "
    print #f1, " Hello World "
     
    Close #f1
     
    End Sub
     
    Sub Macro1
     
    End Sub



    Le code de la macro d'ouverture est ici. A l'exécution j'ai une "erreur de périphérique entrée /sortie" je n'arrive pas à voir pourquoi ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    REM  **Ouverture fichier
    Option Explicit
     
    Public Const nomFichier = "C:\Documents and Settings\Propriétaire\Mes documents\essai1.txt"
     
     
    Sub LireFichierTexte()
     
     
     
    Dim f1 As integer
    Dim nomFichier As String
    Dim uneLigne As String
     
    f1 = FreeFile
    Open nomFichier For Input As #f1 
     
    Do While Not Eof(f1)
    	Line Input #f1, uneLigne
    	Print uneLigne
    Loop
     
    Close #f1
     
    End Sub 'LireFichierTexte
    Je débute en OOBasic comme vous l'aurez constaté et je trouve la doc assez mal fichue Merci de votre aide.
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth
    https://pharo.org/web
    https://faust.grame.fr/

  2. #2
    Membre éclairé
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 474
    Points : 772
    Points
    772
    Par défaut
    Le problème semble provenir de la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim nomFichier As String
    Si je la mets en commentaires ça marche : le fichier texte est affiché ligne par ligne dans une messageBox. je précise que ce code est tiré du livre "programmation OpenOffice.org" (version 1) de Marcelly et Godard.

    NB : je suis sous windows XP avec openOffice.org 2.0
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth
    https://pharo.org/web
    https://faust.grame.fr/

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour


    La ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim nomFichier As String
    est en trop car tu as déja une constante qui porte le meme nom (et qui apparament sert à la même chose)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const nomFichier = "C:\Documents.....\essai1.txt"


    des infos sur les constantes:

    http://ooo.developpez.com/faq/?page=...es#Question169



    Le livre cité est une référence dans le domaine d'OpenOffice et je doute qu'il contienne de telles coquilles. Tu as peut être mixé deux exemples différents et non complémentaires. Sinon, ce serait sympa d'alerter les auteurs afin qu'ils puissent prendre en compte cette information.



    Tu peux aussi consulter la FAQ OOo en cas de besoin:

    http://ooo.developpez.com/faq/



    bonne journée
    michel

  4. #4
    Membre éclairé
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 474
    Points : 772
    Points
    772
    Par défaut
    Bonjour,

    Merci de ta réponse qui confirme la conclusion que j'avais tirée. Je comprends ton scepticisme que je partage également, cependant l'exemple est bel et bien le même (page 134, "Code08-03.swx bibli : LireEcrire Module2"). La premiere macro est dans le module 1 et la deuxième est dans le module 2 (c'est pour cela que le "Public Const ..." n'a pas besoin d'être répété : espaces de nommage en OoBasic).

    Pendant que j'y suis, j'ai une autre question à te poser concernant ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub ChargerDocument()
     
    Dim monDocument As Object  'Pour qu'une macro puisse manipuler un document OO il faut le référencer à travers
    ' une variable de type Object
    Dim adresseDoc As String
    Dim propFich()
     
    adresseDoc = convertToURL("C:\Documents and Settings\Propriétaire\Mes documents\essai1.txt")
    ' Pour éviter les erreurs E/S Il faut convertir les adresse win en adresses URL
    ' cette adresse est ensuite transmise comme argument via la variable "adresseDoc" à la méthode
    ' LoadComponentFromUrl de l'objet StarDesktop
     
    monDocument = StarDesktop.loadComponentFromURL(adresseDoc,"_blank", 0, propFich)
    ' Les arguments seront toujours les mêmes sauf cas très particuliers
     
    ' ----- Gestion d'erreurs si le fichier n'existe pas à l'adresse donnée ----
    	If IsNull(monDocument) then
    	  MsgBox("Le document n'existe pas !", 16)
    	end if
     '  -------  Cette gestion d'erreur ne fonctionne pas : Pourquoi ?? ---------
    End Sub
    Pourquoi la gestion d'erreur ne marche pas ? En exécution le runtime m'affiche une erreur d'exécution sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monDocument = StarDesktop.loadComponentFromURL(adresseDoc,"_blank", 0, propFich)
    donc avant l'interception de l'erreur.

    Quand je place l'interception de l'erreur avant la declaration de "monDocument = ..." ( j'inverse les deux lignes donc) alors j'ai bien un message d'erreur dans une MsgBox mais j'ai toujours un message d'erreur ensuite (il faut donc lever une exception qui interrompe le déroulement mais je ne sais pas encore comment faire) y compris si le fichier existe et que l'URL est correcte ! J'imagine qu'il lève un message d'erreur parce que la variale monDocument n'est pas encore affectée (si c'est bien la réponse... ) mais pourquoi cela ne fonctionne pas dans le premier cas ?
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth
    https://pharo.org/web
    https://faust.grame.fr/

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Dans ton exemple tu contrôles uniquement si une variable contient des données.

    Tu dois préalablement utiliser l'instruction On Error:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    On Error Resume Next
    monDocument = StarDesktop.loadComponentFromURL(adresseDoc,"_blank", 0, propFich)
     
    	If IsNull(monDocument) Then
    	  MsgBox("Le document n'existe pas !", 16)
    	End If

    bonne soirée
    michel

  6. #6
    Membre éclairé
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 474
    Points : 772
    Points
    772
    Par défaut
    Bonsoir,

    OK, c'est ça qui me manquait !

    Je te remercie.

    Bonne soirée.
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth
    https://pharo.org/web
    https://faust.grame.fr/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FPDF] Ouvrir un fichier existant
    Par Sangdrax1604 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 13/12/2007, 12h40
  2. Ouvrir un fichier OpenOffice dans le navigateur
    Par Amélie Ladoque dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2007, 10h51
  3. Ouvrir un fichier excel déja existant
    Par lynal dans le forum Langage
    Réponses: 9
    Dernier message: 24/06/2006, 00h03
  4. [FPDF] ouvrir un fichier pdf existant
    Par norkius dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/06/2006, 15h15
  5. Ouvrir un fichier Excel existant
    Par Yanmeunier dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/11/2005, 11h17

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