Structure pour un header au chargement de fichier ASCII

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Structure pour un header au chargement de fichier ASCII

Message par GallyHC »

Bonjour,

Je trouve dommage que pour le chargement d'un header de fichier et surtout pour le rendre compatible en ASCII et Unicode, on soir obliger de faire tout a la main.

Avec un fichier ASCII simple et en mode non Unicode, on peu faire :

Code : Tout sélectionner

Structure lwo_header
  form.s{4}
  flen.l
  lwo2.s{4}
EndStructure

Protected header.lwo_header

; un simple (on a bien fait l'ouverture du ficher et tout forcment, la je fait au plus simple) :
ReadData(ifile, header, SizeOf(lwo_header))
; pour envoyer les données dans la structure.
Par contre si on compile en Unicode la rien de fonctionne (normal) et il faut faire en partant des même infos que dans l'exemple plus haut :

Code : Tout sélectionner

header\form = ReadString(ifile, #PB_Ascii, 4)
header\flen = ReadLong(ifile)
header\lwo2 = ReadString(ifile, #PB_Ascii, 4)
Alors pourquoi n'y a t'il pas une solution "simple" comme par exemple :

Code : Tout sélectionner

Structure lwo_header
  form.p-ascii{4}
  flen.l
  lwo2.p-ascii{4}
EndStructure
Car la c'est toujours chiant de tout faire surtout quand le header est plutôt grand (genre le chargement des ISO, que j'ai mis de coté a cause de cela) :

Cordialement,
GallyHC
Dernière modification par GallyHC le lun. 17/nov./2014 12:22, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Structure pour UN header au chargement de fichier ASCII

Message par majikeyric »

Tu charges normalement ton fichier (mais avec cette structure)

Code : Tout sélectionner

Structure lwo_header
  form.a[4]
  flen.l
  lwo2.a[4]
EndStructure
et quand tu as besoin de faire des opérations sur un champ, tu fais par exemple:

Code : Tout sélectionner

If PeekS(@*header\form[0],4,#PB_Ascii)="TRUC"
....
EndIf
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Structure pour un header au chargement de fichier ASCII

Message par GallyHC »

Bonjour,

majikeyric > merci pour le code (mais, c'est toujours une "bidouille").

GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Répondre