Voir et éditer le contenu d'un fichier contenant des entiers

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Kangax
Messages : 8
Inscription : jeu. 29/juin/2017 16:23

Voir et éditer le contenu d'un fichier contenant des entiers

Message par Kangax »

Bonjour,
J'utilise le code de l'exemple donné dans l'aide pour faire un fichier texte avec juste 123456789 et ouf ça marche.

Code : Tout sélectionner

If CreateFile(0, "Test.txt")  ; Ouvre un fichier existant ou en crée un nouveau s'il n'existait pas
    FileSeek(0, Lof(0))         ; Place le pointeur à la fin du fichier en utilisant le résultat de Lof() 
    WriteInteger(0,123456789)
    CloseFile(0)
  EndIf
  If ReadFile(0, "Test.txt")  ; Si le fichier peut être lu , on continue...
    While Eof(0) = 0          ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
      Debug ReadInteger(0)    ; Affiche ligne par ligne le contenu du fichier
    Wend
    CloseFile(0)              ; Ferme le fichier précédemment ouvert
  Else
    MessageRequester("Information","Impossible d'ouvrir le fichier!")
  EndIf

J'ai bien 123456789 dans la fenêtre de debug.
Par contre, ni avec le notepad ni avec Excel je n'arrive à ouvrir mon Test.txt et voir mon magnifique 123456789 (le fichier s'ouvre mais j'ai des hiéroglyphes).
Mon besoin final serait de remplir mon fichier Test.txt avec PB et des tas de valeurs autres que 123456789 et de pouvoir les reprendre un peu à la main dans Excel ou autre avant de les relire dans PB.
Merci d'avance pour vos retours.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Voir et éditer le contenu d'un fichier contenant des ent

Message par djes »

Tu as créé un fichier binaire, alors que ce que tu veux, c'est créer un fichier textuel. Regarde plutôt les commandes WriteString() et ReadString() dans l'aide.

En gros, un fichier binaire contient des données telles qu'elles sont utilisées nativement par les ordinateurs : des bits, qu'on interprétera selon les besoins en octets, mots (binaires), flottants, bref, tous les «types» reconnus, de façon linéaire, bits après bits. On utilise certaines commandes pour ceux-là.

Un fichier textuel (texte, ASCII, plusieurs noms existent) contient également des données binaires mais qu'on interprétera systématiquement sous forme de texte. Le contenu sera en ASCII ou en Unicode, et le fichier contiendra certains codes spéciaux pour le formatage, afin de faciliter la vie du programmeur. Par exemple, écrire un texte dans un fichier peut intégrer un retour à la ligne, grâce à un ou deux caractères ajoutés de façon transparente.

Pour bien comprendre les fichiers, il est utile d'avoir un programme appelé visualiseur hexadécimal, qui permet d'afficher sous forme brute le contenu de n'importe quel fichier. Tu vois ainsi d'un côté la position, le contenu sous forme ascii (texte), et enfin le contenu sous forme de nombres.
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Voir et éditer le contenu d'un fichier contenant des ent

Message par Fig »

En reprenant ton code ça donnerait ça...

Code : Tout sélectionner

If CreateFile(0, "Test.txt")  ; Ouvre un fichier existant ou en crée un nouveau s'il n'existait pas
    WriteStringN(Str(123456789)) ;écrit le nombre sous forme d'une chaine de caractère lisible avec notepad.
    WriteStringN("deuxieme ligne") ;écrit une chaine de caratère
    CloseFile(0)
  EndIf
  If ReadFile(0, "Test.txt")  ; Si le fichier peut être lu , on continue...
    While Eof(0) = 0          ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
      Debug ReadString(0)    ; Affiche ligne par ligne le contenu du fichier sous forme de chaine de caratère. pour récupérer un nombre tu peux utiliser val()
    Wend
    CloseFile(0)              ; Ferme le fichier précédemment ouvert
  Else
    MessageRequester("Information","Impossible d'ouvrir le fichier!")
  EndIf
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Kangax
Messages : 8
Inscription : jeu. 29/juin/2017 16:23

Re: Voir et éditer le contenu d'un fichier contenant des ent

Message par Kangax »

Super ça marche, j'ai juste rajouté le "0," manquant en premier paramètre des WritestringN. Et c'est parfait.
Merci à tous les deux.
Répondre