Page 1 sur 1

[Pas Bug] CreateFile

Publié : ven. 26/mai/2017 15:38
par SPH
Salut,

je crois avoir trouvé un bug. Quand je crée un fichier avec CreateFile, pas de probleme.
Mais quand je réexecute le code, il devrait s'apercevoir que le fichier existe deja :
CreateFile(0, file$) ; Ouvre un fichier existant ou en crée un nouveau s'il n'existait pas
Hors, la, il ecrase mon fichier existant et recommence. Pourquoi ?

Code : Tout sélectionner

file$="c:/sph/pb/Test.txt"

If CreateFile(0, file$)    ; 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() 
    WriteString(0, "Une ligne.")
    WriteStringN(0, "... une autre ligne à la fin du fichier.")
    CloseFile(0)
  EndIf
  If ReadFile(0, file$)   ; 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
    Wend
    CloseFile(0)               ; Ferme le fichier précédemment ouvert
  Else
    MessageRequester("Information","Impossible d'ouvrir le fichier!")
  EndIf

Re: [Bug] CreateFile

Publié : ven. 26/mai/2017 15:39
par Ar-S
Tu as mal lu la doc
Si le fichier existe déjà, il sera remplacé par un fichier vide !
Pour ouvrir un fichier existant en lecture et en écriture, utilisez la fonction OpenFile()

Re: [Bug] CreateFile

Publié : ven. 26/mai/2017 15:43
par SPH
Pourtant, la doc dit : "CreateFile(0, file$) ; Ouvre un fichier existant ou en crée un nouveau s'il n'existait pas"

Mais merci :idea:

Re: [Pas Bug] CreateFile

Publié : ven. 26/mai/2017 16:09
par Marc56
@SPH:
La définition que tu donnes est issue de l'exemple donné sur la fonction pour la fonction ReadFile()
Effectivement, il y a une coquille ou un oubli depuis une ancienne version.

Code : Tout sélectionner

If CreateFile(0, "Test.txt")  ; Ouvre un fichier existant ou en crée un nouveau s'il n'existait pas
La page d'aide et l'exemple de CreateFile() donne quant à elle la bonne définition

Syntaxe:
Resultat = CreateFile(#Fichier, NomFichier$ [, Options])
Description:
Crée un fichier vide.

Re: [Pas Bug] CreateFile

Publié : ven. 26/mai/2017 16:11
par Ar-S
De toute façon tu as plus intérêt à utiliser OpenFile(). C'est lui qui va te permettre de créer OU de continuer à utiliser un fichier.