[Résolu] Suis-je devenu fou !!!

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

[Résolu] Suis-je devenu fou !!!

Message par Guimauve »

Bonjour à tous,
Est-ce que l'un d'entre vous peut me dire pourquoi ce code ne fonctionne pas :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Read Null Terminated String
; Nom du fichier : Read Write Null Terminated String.pb
; Version du fichier : 3.0.0
; Programmation : En cours
; Programmé par : Guimauve
; Date : 08-02-2012
; Mise à jour : 08-02-2012
; Code PureBasic : 4.60
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure.s WriteNullTerminatedString(FileID, String.s, P_Flag.b = #PB_Ascii) 
  
  If P_Flag = #PB_Ascii 
    WriteString(FileID, String, #PB_Ascii) 
    WriteAsciiCharacter(FileID, 0) 
  ElseIf P_Flag = #PB_UTF8 
    WriteString(FileID, String, #PB_UTF8) 
    WriteAsciiCharacter(FileID, 0) 
  Else 
    WriteString(FileID, String, #PB_Unicode) 
    WriteUnicodeCharacter(FileID, 0) 
  EndIf 
  
EndProcedure 

Procedure.s ReadNullTerminatedString(FileID, P_Flag.b = #PB_Ascii) 
  
  If P_Flag = #PB_Ascii 
    Null_Terminated_String.s = ReadString(FileID, #PB_Ascii) 
  ElseIf P_Flag = #PB_UTF8 
    Null_Terminated_String = ReadString(FileID, #PB_UTF8) 
  Else 
    Null_Terminated_String = ReadString(FileID, #PB_Unicode) 
  EndIf 
  
  ProcedureReturn Null_Terminated_String 
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<< 
; <<<<< !!! WARNING - THIS CODE SHOULD BE COMMENTED - WARNING !!! <<<<< 
; <<<<< !!! WARNING - BEFORE THE FINAL COMPILATION. - WARNING !!! <<<<< 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

If CreateFile(0, "Test.bin")

  WriteNullTerminatedString(0, FormatDate("A=%yyyy, M= %mm, J=%dd - %hh:%ii:%ss", Date()), #PB_Ascii)
  WriteNullTerminatedString(0, "PureBasic 4.61 Beta 1", #PB_Ascii)
  WriteNullTerminatedString(0, "FreeMat 4.0 (Similiaire à MatLab mais sans Simulink)", #PB_Ascii)
  WriteNullTerminatedString(0, "Séance de lutte greco-romaine mixte (Le mixte ici est très important !!!!)", #PB_Ascii)
  WriteNullTerminatedString(0, "PureBasic is the best programming language, period !", #PB_Ascii)
  WriteNullTerminatedString(0, "Linux Mint 12 x64 + Gnome-Shell 1.0", #PB_Ascii)
  WriteNullTerminatedString(0, "À È Ê É Î à è ê é î", #PB_Ascii)
  
  CloseFile(0)
  
EndIf

If ReadFile(1, "Test.bin")
  
  Debug ReadNullTerminatedString(1, #PB_Ascii)
  Debug ReadNullTerminatedString(1, #PB_Ascii)
  Debug ReadNullTerminatedString(1, #PB_Ascii)
  Debug ReadNullTerminatedString(1, #PB_Ascii)
  Debug ReadNullTerminatedString(1, #PB_Ascii)
  Debug ReadNullTerminatedString(1, #PB_Ascii)
  Debug ReadNullTerminatedString(1, #PB_Ascii)
  
  CloseFile(1)
  
EndIf

; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
A=2012, M= 02, J=15 - 01:17:46
PureBasic 4.61 Beta 1
FreeMat 4.0 (Similiaire à MatLab mais sans Simulink)
Séance de lutte greco-romaine mixte (Le mixte ici est tr�s important !!!!)
PureBasic is the best programming language, period !
Linux Mint 12 x64 + Gnome-Shell 1.0
À È Ê É Î à Ã? ê é î
Alors que celui ci oui :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Nom du projet
; Nom du fichier : *.pb
; Version du fichier : 0.0.0
; Programmation : En cours
; Programmé par : Guimauve
; Date : 15-02-2012
; Mise à jour : 15-02-2012
; Code PureBasic : 4.50
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure.s WriteNullTerminatedString(FileID, String.s, P_Flag.b = #PB_Ascii) 
  
  If P_Flag = #PB_Ascii 
    WriteString(FileID, String, #PB_Ascii) 
    WriteAsciiCharacter(FileID, 0) 
  ElseIf P_Flag = #PB_UTF8 
    WriteString(FileID, String, #PB_UTF8) 
    WriteAsciiCharacter(FileID, 0) 
  Else 
    WriteString(FileID, String, #PB_Unicode) 
    WriteUnicodeCharacter(FileID, 0) 
  EndIf 
  
EndProcedure 

Procedure.s ReadNullTerminatedString(FileID, P_Flag.b = #PB_Ascii) 
  
  If P_Flag = #PB_Ascii 
    Null_Terminated_String.s = ReadString(FileID, #PB_Ascii) 
  ElseIf P_Flag = #PB_UTF8 
    Null_Terminated_String = ReadString(FileID, #PB_UTF8) 
  Else 
    Null_Terminated_String = ReadString(FileID, #PB_Unicode) 
  EndIf 
  
  ProcedureReturn Null_Terminated_String 
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! ATTENTION - CODE D'ESSAI !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

If CreateFile(0, "Test.bin")
  
  WriteNullTerminatedString(0, "à è ê î À È Ê É Î", #PB_Ascii)
  WriteNullTerminatedString(0, "à è ê î À È Ê É Î", #PB_Ascii)
  
  CloseFile(0)
  
EndIf

If ReadFile(1, "Test.bin")
  
  Debug ReadNullTerminatedString(1, #PB_Ascii)
  Debug ReadNullTerminatedString(1, #PB_Ascii)
  
  CloseFile(1)
  DeleteFile("Test.bin")
  
EndIf

; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
à è ê î À È Ê É Î
à è ê î À È Ê É Î
Dans les deux cas, le compilateur est en mode Unicode.

Là je suis complètement largué.

A+
Guimauve
Dernière modification par Guimauve le mer. 15/févr./2012 14:12, modifié 1 fois.
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Suis-je devenu fou !!!

Message par kernadec »

bonjour Guimauve

dans le premier cas si le fichier "test" existe, il n'est pas crée et donc il garde le précédent

dans le second le problème est résolu par le deletefile

peut être utiliser openfile

Cordialement
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Suis-je devenu fou !!!

Message par Guimauve »

kernadec a écrit :bonjour Guimauve

dans le premier cas si le fichier "test" existe, il n'est pas crée et donc il garde le précédent

dans le second le problème est résolu par le deletefile

peut être utiliser openfile

Cordialement
Bonjour Kernadec,

Bonne tentative mais ce n'est pas ça, je viens de refaire un test en enlevant le DeleteFile() du 2e exemple et lui il fonctionne quand même. De plus la commande CreateFile() écrase le fichier si ce dernier existe.

Quelqu'un à une autre idée ?

Merci à l'avance.
Guimauve
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Suis-je devenu fou !!!

Message par lepiaf31 »

Désolé mais chez moi j'obtiens bien:
A=2012, M= 02, J=15 - 13:45:51
PureBasic 4.61 Beta 1
FreeMat 4.0 (Similiaire à MatLab mais sans Simulink)
Séance de lutte greco-romaine mixte (Le mixte ici est très important !!!!)
PureBasic is the best programming language, period !
Linux Mint 12 x64 + Gnome-Shell 1.0
À È Ê É Î à è ê é î
Compilé en Unicode avec PB 4.51 x64 sous Windows 7 ...
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Suis-je devenu fou !!!

Message par Mesa »

même chose, ça fonctionne bien chez moi aussi.

Et si t'enlèves la ligne :
WriteNullTerminatedString(0, FormatDate("A=%yyyy, M= %mm, J=%dd - %hh:%ii:%ss", Date()), #PB_Ascii)

ça marche ?

Mesa.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Suis-je devenu fou !!!

Message par Guimauve »

C'est peut-être un problème avec Linux.

Pourtant il me semblait que ce code fonctionnait très bien lors que je l'ai créé il a de cela quelques jours. Moi ce que je ne comprends pas c'est pourquoi les deux codes utilisent les mêmes commande de lecture et d'écriture et donne 2 résultat différent avec les mêmes entrée.

@Mesa : Ça marche pas plus en enlevant la ligne avec la Date.

Et là je viens de refaire un test en séparant le code source des commandes Read/WriteNullTerminatedString() et du code d'essai et jai fait un IncludeFile avec le source des commande de Lecture-Écriture là comme par enchantement tout fonctionne normalement que le compilateur soit en mode Unicode ou non. que j'utilise le #PB_Unicode ou #PB_UTF8 ou #PB_Ascii comme valeur pour P_Flag. Preuve à l'appui :
A=2012, M= 02, J=15 - 08:04:44
PureBasic 4.61 Beta 1
FreeMat 4.0 (Similiaire à MatLab mais sans Simulink)
Séance de lutte greco-romaine mixte (Le mixte ici est très important !!!!)
PureBasic is the best programming language, period !
Linux Mint 12 x64 + Gnome-Shell 1.0
À È Ê É Î à è ê é î
Encore une instabilité on dirait.

A+
Guimauve
Répondre