Page 1 sur 1

modification de fichier

Publié : mar. 13/sept./2005 10:45
par jerexgrz
Voila le petit prob :

le fichier test.txt va etre constituer de ca:
11

A

Il fait 7 octets. En faite, si on le represente comme il est :
11*
**
a*
Chaque etoile est en faite un caractere special ! Et chaque lettre correspond à 1 octet. (A verifier !)

Mon prob est que je veux ecrire du texte dans l'espace vide (4eme place) c'est à dire ici :
11
texte à ecrire ici
A

Mais, quand je mets un SEUL octet, une lettre avec writestring j'ai ca :
11
T*A
et la, l'etoile correspond au retour de chariot. Et la case n'est + respecter.

Donc si je fais ca avec writestringn j'ai ca :
11
T

et c'est tout !

De + je me demande, si c'est possible à faire, car comme le fichier ne fait que 7 octets, je ne peux peut etre pas rajouter + à l'interieur ?

Publié : mar. 13/sept./2005 13:26
par brossden
Bonjour tu as essayé cela :

Code : Tout sélectionner

  Temps=400
  ;Création du fichier de base :
  Debug "Création du fichier :" 
  CreateFile(1,"c:\test.txt")
  WriteStringN("11")
  WriteStringN(" ")
  WriteStringN("a")
  
  CloseFile(1)
  Debug "Fait"
  Debug ""
  Delay(Temps)
  
  ;Lecture du fichier de base
  Debug "Lecture du Fichier :" 
  Debug "" 
  OpenFile(1,"c:\test.txt")
  While Eof(1)=0
    Debug ReadString()
  Wend
  CloseFile(1)
  Debug "Fait"
  Delay(x)
  ;Modification fichier
  Debug ""
  Debug "Modification fichier"
  Debug "" 
  OpenFile(1,"c:\test.txt")
  FileSeek(4)
  WriteString("T")
  CloseFile(1)
  Delay(Temps)
  ;Lecture du fichier modifié
  Debug "Lecture du Fichier :" 
  Debug "" 
  OpenFile(1,"c:\test.txt")
  While Eof(1)=0
    Debug ReadString()
  Wend
  CloseFile(1)
  Debug "" 
  Debug "Fini"

Publié : ven. 16/sept./2005 18:10
par jerexgrz
Merci pour le code !
Je viens de voir mon erreur, il s'agissait d'un espace ! Par contre, si :
11
A
12

si je veux remplacer A par "Ce", ca fait :
11
Ce#12

le # correspond au retour de chariot ! Quand je regarde dedans avec le bloc note je vois le symbol au lieu qu'il soit comme ceci :
11
Ce
12
Une idée d'ou cela peut venir ?

Publié : ven. 16/sept./2005 18:11
par jerexgrz
Merci pour le code !
Je viens de voir mon erreur, il s'agissait d'un espace ! Par contre, si :
11
A
12

si je veux remplacer A par "Ce", ca fait :
11
Ce#12

le # correspond au retour de chariot ! Quand je regarde dedans avec le bloc note je vois le symbol au lieu qu'il soit comme ceci :
11
Ce
12
Une idée d'ou cela peut venir ?

Publié : ven. 16/sept./2005 18:18
par Thyphoon
d'apres ce que j'ai compris tu as rencontré le même problème que moi ! Si tu regarde le sujet juste au dessous du tient...
voilà comment j'ai regler mon problème

Code : Tout sélectionner

Procedure WriteMameINI(name.s,key.s,val.s)
  Dim tmp_line.s(1000)
  l.l=0 ;
  ;key.s="hiscore_directory"
  ;val.s="TESTDEREMPLACEMENT"
  OpenFile(0,"MAME.ini")
  While Eof(0) = 0
  l=l+1
  tmp_line(l)=ReadString()
  Wend
  FileSeek(1)
  Debug Str(l)
  For z=1 To l
    keyfound.s=Trim(Mid(tmp_line(z), 1, 24))
    If keyfound=key
      tmp_line(z)=keyfound+Space(24-Len(keyfound))+val
      Debug Str(z)
    EndIf
    WriteStringN(tmp_line(z))
  Next
CloseFile(0)
EndProcedure
en gros je lit toute les ligne et je les met dans un tableau temporaire
ensuite je le réécrit en inserant la ou je veux mon text et du coup plus de problème de caractère spécial ou bien de texte qui en recouvre un autre