Voici deux petites instructions pour lire et écrire une chaîne de caractères Ascii se terminant par le caractère null ('\0'). J'ai eu besoin pour lire les chaînes de caractères présentes dans un fichier *.3ds et au passage j'ai ajouté la commande d'écriture. Je n'ai pas effectué de test particulièrement poussé mais elles semblent fonctionner autant en mode normal qu'en Unicode.
Edit : Suite à une remarque de la part de STARGATE sur le forum anglais, les deux procédures on pues être réduite à deux simple macros.
Faut dire que l'aide en Français mentionne que la commande ReadString() lit des caractères jusqu'à ce qu'un caractère de retour de chariot soit lu. Alors que dans l'aide en Anglais c'est un caractère "EndOfLine".
Pour moi un retour de chariot porte le numéro 13 et non 0 comme c'est le cas pour le caractère de fin de chaîne. J'ai donc perdu mon temps pour rien.
A+
Guimauve
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Read Write Null Terminated String
; Nom du fichier : ReadNullTerminatedString.pb
; Version du fichier : 2.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 08-02-2012
; Mise à jour : 08-02-2012
; Code PureBasic : 4.61
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Macro WriteNullTerminatedString(FileID, String)
WriteString(FileID, String, #PB_Ascii)
WriteAsciiCharacter(FileID, 0)
EndMacro
Macro ReadNullTerminatedString(FileID)
ReadString(FileID, #PB_Ascii)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<<
; <<<<< !!! WARNING - THIS CODE SHOULD BE COMMENTED - WARNING !!! <<<<<
; <<<<< !!! WARNING - BEFORE THE FINAL COMPILATION. - WARNING !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
NewList Texte.s()
AddElement(Texte())
Texte() = FormatDate("A=%yyyy, M= %mm, J=%dd - %hh:%ii:%ss", Date())
AddElement(Texte())
Texte() = "PureBasic 4.61 Beta 1"
AddElement(Texte())
Texte() = "FreeMat 4.0 (Similiaire à MatLab mais sans Simulink)"
AddElement(Texte())
Texte() = "PureBasic is the best programming language, period !"
AddElement(Texte())
Texte() = "Linux Mint 12 x64 + Gnome-Shell"
If CreateFile(0, "Test.bin")
ForEach Texte()
WriteNullTerminatedString(0, Texte())
Next
CloseFile(0)
EndIf
If ReadFile(1, "Test.bin")
While Eof(1) = 0
Debug ReadNullTerminatedString(1)
Wend
CloseFile(1)
DeleteFile("Test.bin")
EndIf
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<