Problème fichier incompréhensible...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Problème fichier incompréhensible...

Message par Shadow »

Salut,

Tester ce code simple comme bonjour:

Code : Tout sélectionner

Fichier$ = ""

If ReadFile(1, "votre fichier.pb") ; Si le fichier peut être lu , on continue...
  While Eof(1) = 0                                       ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
    Fichier$ + ReadString(1) + Chr(13) + Chr(10)         ; Affiche ligne par ligne le contenu du fichier
  Wend
  CloseFile(1) ; Ferme le fichier précédemment ouvert
Else           ; Sinon ont affiche un message d'avertissement
  MessageRequester("Information","Impossible d'ouvrir le fichier !")
EndIf

Debug Fichier$ + Chr(13) + Chr(10)
Remplacer "votre fichier.pb" par un fichier à vous.
Evidemment le fichier devra être au même endroit que votre code.

Ok, maintenant go, puis copier le contenue du débogueur avec le bouton "Copier tous"
Coller dans un nouveau code sur PB, tester, surprise !

Bug !

En faite ça viens je suppose, d'un caractère invisible et inconnue en début de fichier !
Tester sous PB: 5.71 beta 1 LTS x 64 bit.

Et vous ça le fait aussi ?
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Problème fichier incompréhensible...

Message par Ar-S »

En 5.6x et 5.70 je n'ai pas de bug.
Je ne vais pas installer la beta 1 pour tester ça. Si quelqu'un d'autre veut tester.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Problème fichier incompréhensible...

Message par Ollivier »

Moi aussi j'ai la flemme alors l'auteur du sujet va insérer la ligne suivante

Code : Tout sélectionner

BOM = ReadStringFormat(1)
juste avant son << While >> et considérer qu'il faut le faire tout le temps à chaque départ d'un fichier texte à lire pour des raisons de compatibilité.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Problème fichier incompréhensible...

Message par Marc56 »

1. « Bug ! » n'est pas un message d'erreur. Veuillez préciser le message exact.
2. ReadFile et ReadString gèrent parfaitement les lectures de fichiers avec ou sans BOM sans avoir à ajouter de paramètre.
3. Cause possible: fichier verrouillé car ouvert par un autre processus. Utiliser #PB_File_SharedRead pour éviter cela (Windows)

(Testé 5.70 et 5.71 B1)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Problème fichier incompréhensible...

Message par Ollivier »

@Marc56

Tu as raison de préciser que ce n'est pas un bug. Cependant une boucle Read#Qqch() peut échouer si le BOM n'est pas traité initialement. Er ReadStringFormat() est conçu pour adapter le pointeur de fichier correctement qu'il y ait ou non un BOM. D'où ma très vive recommandarion de placer ReadStringFormat().
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Problème fichier incompréhensible...

Message par Shadow »

Salut,

Je crois qu'on ne sait pas bien compris.
Avec mon code sans le toucher, mettez votre nom de fichier (un fichier PB code sans erreur), lancez le code et copier tous dans le débogueur.
Sur PB faites "nouveau", collez le code, tester:

Erreur de syntaxe ligne 1, alors que non !
C'est bien un bug !

Je teste avec LTS attention !
Merci à vous.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Problème fichier incompréhensible...

Message par Ar-S »

Marc56 a pourtant mis testé avec 5.71 b1
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Problème fichier incompréhensible...

Message par Marc56 »

Trouvé.
Oui, en ouvrant en hexa le fichier, on trouve alors 2 BOM consécutifs

EF BB BF EF BB BF

Raison: Quand tu copie/colle le contenu de la fenêtre du debug, dans une fenêtre vide, PB ajoute un deuxième caractère BOM (éditeur) à celui du contenu (copié/collé).
Si le contenu est un fichier source PB UTF-8 alors il a déjà un BOM qui vient s'ajouter à celui de la fenêtre debug.

Bug, oui, mais c'est pas tout le monde qui va lire un code source pour recopier le contenu depuis la fenêtre output :wink:
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Problème fichier incompréhensible...

Message par case »

pas du tout un bug car il me semble logique que pb vas pas vérifier tout ce qui est collé dans l'éditeur... c'est au colleur de vérifier que ce qu'il colle n'est pas susceptible de buguer.
ImageImage
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Problème fichier incompréhensible...

Message par Shadow »

Toi te manque une "case" :lol: (humour)
Je suis pas d'accord avec toi Mr case !

Si je copie mon code depuis le débogueur et que je le colle dans PB, normalement il n'est pas censé avoir ce genre de truc !
Après, je suppose que quand je lis le fichier, le BOM est conserver, d'ou cette erreur !

Bref, Merci Marc56 !
Jvé creusé !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Problème fichier incompréhensible...

Message par Ar-S »

c'est pas tout le monde qui va lire un code source pour recopier le contenu depuis la fenêtre output
Qui (à part shadow) fait ça ? Et surtout pourquoi.. ? (vraie question)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Problème fichier incompréhensible...

Message par Shadow »

Pour test, car en vraie je lis le code du fichier, je le
met dans une variable puis je le compile ensuite !

J'ai résolut mon soucis en mettant ReadStringFormat(0) mais je ne suis pas sur que se soit réglé pour autant !:

Code : Tout sélectionner

If ReadFile(0, "Gadget Wiever Gestion Edition Gaget.pb", #PB_UTF8)
  ReadStringFormat(0)
  length = Lof(0) ; Lit la taille en octets du fichier 
  *MemoryID = AllocateMemory(length) ; alloue un bloc mémoire de la taille du fichier "length"
  If *MemoryID                       ; si l'allacation a bien fonctionner ont continue
    ReadData(0, *MemoryID, length)   ; Lit les données du fichier et les place dans le bloc m�moire "*MemoryID" de la taille correspondant à "length"
    Code$ = PeekS(*MemoryID, length, #PB_UTF8) + #CRLF$ + #CRLF$
  EndIf
  CloseFile(0)
EndIf
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Problème fichier incompréhensible...

Message par Marc56 »

Lire un fichier texte peut se faire sans pointeur ("Less is more")

Code : Tout sélectionner

If ReadFile(0, "Gadget Wiever Gestion Edition Gaget.pb")
    ReadStringFormat(0) ; Déplacera le pointeur après le BOM s'il en trouve un 
    While Not Eof(0)
        Code$ = ReadString(0, #PB_File_IgnoreEOL)
    Wend    
    CloseFile(0)
    ; SetClipboardText(Code$) si on veut le mettre dans le presse-papier
Else
    MessageRequester("Erreur", "Ne peut lire le fichier source")
EndIf
Et si tu veux sauver le contenu de la fenêtre debug sans ajouter un BOM, il y a SaveDebugOutput()
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Problème fichier incompréhensible...

Message par Shadow »

Ah ok, merci encore Marc56 :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Mindphazer
Messages : 695
Inscription : mer. 24/août/2005 10:42

Re: Problème fichier incompréhensible...

Message par Mindphazer »

Shadow a écrit :Jvé creusé !
Tu pousses, tu creuses... tu fais quoi d'autre de passionnant ?
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Répondre