Le bien coder
Re: Le bien coder
Pas faux Djes..
@Poshu (Je précise que je ne me sens nullement agressé ou visé hein, on discute mais je fais parti des "vieux" codeurs maladroits.)
Je vais reprendre tout de même ta métaphore de sportif .
Robert aime bien le foot, mais il va à son entrainement 1 fois toutes les 2 semaines, parce qu'il n'a pas que ça à faire Robert.. Il a un taf, des gosses, une vie de famille, des potes et d'autres passions comme le piano ou il excelle parce qu'il en à fait 15 ans de façon assidu. Alors lors de la rencontre contre l'équipe adverse du coin, il arrive malgré son entrainement heinekenesque à marquer un but. Un but assez simple, une ouverture s'est présenté, il a tiré... bim, au fond. Ici pas de retournée acrobatique ou de ciseaux ou même de grosse reprise de volée..
Mais il a gagné Robert et il est bien content.. Il aurait pu apprendre les retournées, en étant plus assidu, en se pétant le dos à chaque entrainement, mais non, il ne la pas fait. Le regrette-t-il ? Pas vraiment..
J'arrête là cette métaphore foireuse pour dire qu'étant un des codeurs de longues dates, je n'en demeure pas moins créatif et probablement pétri de "mauvaise habitudes". Alors certes je n'ai pas toujours le réflexe des callbacks, mise à part dans certains cas précis (je l'ai par exemple utilisé pour un chrono histoire que le temps défile quand on bouge la fenêtre), mes progs sont fonctionnels. j'en ai même vendus quelques uns et les clients ont toujours été satisfaits.
Mais avant tout, si le résultat est à la hauteur de mes attentes, j'en suis très satisfait.
Alors est-ce de la fainéantise ? Franchement je ne crois pas. Je n'aspire pas à devenir un codeur parfait. Je ne crache pas sur un bon trick ou une méthode vraiment efficace mais je ne vais pas non plus tout le temps remettre en question ce que j'ai mis déjà beaucoup de temps à assimiler, et qui fonctionne. Je code avant tout pour le fun que cela m'apporte.
Enfin pour en revenir aux conseils "bien moisis", là encore c'est le point de vu du perfectionniste que tu es.
Si les events sont si merdiques, la team n'a qu'à les virer.. Mais vu qu'on a encore le choix et que cela fonctionne très bien pour la grande majorité des codes. Je ne vois pas le mal à aiguiller un débutant via cette méthode.
Maintenant il a plein de solutions, s'il si retrouve, il aura le choix.
Je vais de ce pas me coucher car j'ai mon bébé qui va se réveiller encore à 5h30 donc plus trop de créneau dodo.
@Poshu (Je précise que je ne me sens nullement agressé ou visé hein, on discute mais je fais parti des "vieux" codeurs maladroits.)
Je vais reprendre tout de même ta métaphore de sportif .
Robert aime bien le foot, mais il va à son entrainement 1 fois toutes les 2 semaines, parce qu'il n'a pas que ça à faire Robert.. Il a un taf, des gosses, une vie de famille, des potes et d'autres passions comme le piano ou il excelle parce qu'il en à fait 15 ans de façon assidu. Alors lors de la rencontre contre l'équipe adverse du coin, il arrive malgré son entrainement heinekenesque à marquer un but. Un but assez simple, une ouverture s'est présenté, il a tiré... bim, au fond. Ici pas de retournée acrobatique ou de ciseaux ou même de grosse reprise de volée..
Mais il a gagné Robert et il est bien content.. Il aurait pu apprendre les retournées, en étant plus assidu, en se pétant le dos à chaque entrainement, mais non, il ne la pas fait. Le regrette-t-il ? Pas vraiment..
J'arrête là cette métaphore foireuse pour dire qu'étant un des codeurs de longues dates, je n'en demeure pas moins créatif et probablement pétri de "mauvaise habitudes". Alors certes je n'ai pas toujours le réflexe des callbacks, mise à part dans certains cas précis (je l'ai par exemple utilisé pour un chrono histoire que le temps défile quand on bouge la fenêtre), mes progs sont fonctionnels. j'en ai même vendus quelques uns et les clients ont toujours été satisfaits.
Mais avant tout, si le résultat est à la hauteur de mes attentes, j'en suis très satisfait.
Alors est-ce de la fainéantise ? Franchement je ne crois pas. Je n'aspire pas à devenir un codeur parfait. Je ne crache pas sur un bon trick ou une méthode vraiment efficace mais je ne vais pas non plus tout le temps remettre en question ce que j'ai mis déjà beaucoup de temps à assimiler, et qui fonctionne. Je code avant tout pour le fun que cela m'apporte.
Enfin pour en revenir aux conseils "bien moisis", là encore c'est le point de vu du perfectionniste que tu es.
Si les events sont si merdiques, la team n'a qu'à les virer.. Mais vu qu'on a encore le choix et que cela fonctionne très bien pour la grande majorité des codes. Je ne vois pas le mal à aiguiller un débutant via cette méthode.
Maintenant il a plein de solutions, s'il si retrouve, il aura le choix.
Je vais de ce pas me coucher car j'ai mon bébé qui va se réveiller encore à 5h30 donc plus trop de créneau dodo.
~~~~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
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳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
Re: Le bien coder
Alors en fait, la team a viré la boucle d'event... Sur SB. Et ça fait déjà un très gros argument pour ne plus l'utiliser : la compatibilité web/iOS/android.
Re: Le bien coder
On parlait de PB.
~~~~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
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳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
Re: Le bien coder
EnableExplicit
On en voit l'intérêt lorsqu'il nous arrive de patauger durant des jours sur un code parce pour finalement trouver qu'au deuxième appel d'une variable on a inversé deux lettres. Avec EnableExplict, au deuxième appel, le compilateur aurait dit "cette variable n'existe pas" Donc c'est très utile dans tous les cas voir indispensable pour gagner du temps si on est dyslexique.
EnableExplicit devrait même être plus strict et ne pas considérer qu'une variable numérique sans type est par défaut un Integer.
On ne se retrouverait pas avec des variables qui deviennent négatives car elles ont fait la boucle,Résultat valeur négative (compilo 64bits) -9223372036854775808
ou à utiliser 4 à 8 octets pour une variable à un seul chiffre (qui aurait pu être codée sur 1 avec un .a .b ou .c)
Inconvénient d'EnableExplict, c'est qu'on a tendance à déclarer puis parfois oublier des variables et utiliser de la RAM pour rien, et quand c'est un tableau à plusieurs dimensions... C'est un peu pour cela que j'avais demandé à une époque s'il était possible de mettre dans le précompilo de PB une option qui existe dans d'autres langages et qui sort une phrase de type "La variable xxx a été déclarée, mais jamais utilisée". Ça incite à nettoyer le code.
Je serais même partisan d'une option genre NoGadgetNum qui obligerait à utiliser une constante ou une variable pour l'ID des gadgets
Bind ou classique
Pas aussi évident que ça n'y parait. Par exemple mettre un Bind sur le resize de la fenêtre principale provoque un nouvel appel de la fonction à chaque changement de taille même d'un pixel et en cours de manœuvre. C'est joli car on voit tous les objets grandir en même temps, mais sur les petit configs avec beaucoup d'objets, ça plombe le CPU.
La méthode classique ne redessine les objets que quand on relâche la souris
La boucle classique à base de WaitWindowEvent oblige le programme à s'arrêter dès qu'un event listé se produit. Dans certains types d'applications, c'est très bien car ça empêche que l'utilisateur ne reclique pensant qu'il ne se passe rien alors que le programme commence un traitement.
Sur le forum us, il a été démontré un bug (5.70b1): Si on bind plusieurs fois un même objet, unbind ne fonctionne plus.
Et il y avait d'autres désavantages évoqués sur le forum us (mais je ne m'en ne me souviens plus)
Mais de toutes façon, on peut mélanger les deux, et c'est très bien, car on peut par exemple mettre les actions qui doivent executer une par une en mode classique et d'autres (comme l'affichage d'une pendule) en bind
On en voit l'intérêt lorsqu'il nous arrive de patauger durant des jours sur un code parce pour finalement trouver qu'au deuxième appel d'une variable on a inversé deux lettres. Avec EnableExplict, au deuxième appel, le compilateur aurait dit "cette variable n'existe pas" Donc c'est très utile dans tous les cas voir indispensable pour gagner du temps si on est dyslexique.
EnableExplicit devrait même être plus strict et ne pas considérer qu'une variable numérique sans type est par défaut un Integer.
On ne se retrouverait pas avec des variables qui deviennent négatives car elles ont fait la boucle,
Code : Tout sélectionner
a = 9223372036854775807
Debug a + 1
ou à utiliser 4 à 8 octets pour une variable à un seul chiffre (qui aurait pu être codée sur 1 avec un .a .b ou .c)
Inconvénient d'EnableExplict, c'est qu'on a tendance à déclarer puis parfois oublier des variables et utiliser de la RAM pour rien, et quand c'est un tableau à plusieurs dimensions... C'est un peu pour cela que j'avais demandé à une époque s'il était possible de mettre dans le précompilo de PB une option qui existe dans d'autres langages et qui sort une phrase de type "La variable xxx a été déclarée, mais jamais utilisée". Ça incite à nettoyer le code.
Je serais même partisan d'une option genre NoGadgetNum qui obligerait à utiliser une constante ou une variable pour l'ID des gadgets
Bind ou classique
Pas aussi évident que ça n'y parait. Par exemple mettre un Bind sur le resize de la fenêtre principale provoque un nouvel appel de la fonction à chaque changement de taille même d'un pixel et en cours de manœuvre. C'est joli car on voit tous les objets grandir en même temps, mais sur les petit configs avec beaucoup d'objets, ça plombe le CPU.
La méthode classique ne redessine les objets que quand on relâche la souris
La boucle classique à base de WaitWindowEvent oblige le programme à s'arrêter dès qu'un event listé se produit. Dans certains types d'applications, c'est très bien car ça empêche que l'utilisateur ne reclique pensant qu'il ne se passe rien alors que le programme commence un traitement.
Sur le forum us, il a été démontré un bug (5.70b1): Si on bind plusieurs fois un même objet, unbind ne fonctionne plus.
Et il y avait d'autres désavantages évoqués sur le forum us (mais je ne m'en ne me souviens plus)
Mais de toutes façon, on peut mélanger les deux, et c'est très bien, car on peut par exemple mettre les actions qui doivent executer une par une en mode classique et d'autres (comme l'affichage d'une pendule) en bind
Dernière modification par Marc56 le ven. 06/juil./2018 9:05, modifié 1 fois.
- microdevweb
- Messages : 1800
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Le bien coder
Même si dans la plupart de mes programmes la boucle d'événement se limite à
Car j'utilise les "bind", cette boucle peut s’avérer très utile.
Si je dis pas de bêtises, beaucoup de langages avec une programmation événementiel (GUI) comme par exemple "Java" n'on pas ce type de boucle et oblige de passé par des threads pour la gestion hors événementiel.
Avec Pb et ca boucle on est vraiment libre d’interagir comme on veux même si il n'y à pas d’événement.
Code : Tout sélectionner
Repeat
WaitWindowEvent()
forever
Si je dis pas de bêtises, beaucoup de langages avec une programmation événementiel (GUI) comme par exemple "Java" n'on pas ce type de boucle et oblige de passé par des threads pour la gestion hors événementiel.
Avec Pb et ca boucle on est vraiment libre d’interagir comme on veux même si il n'y à pas d’événement.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
Re: Le bien coder
@Ar-S Moui. J'ai du mal à séparer les deux, et surtout : pourquoi ne pas faire une pierre deux coups?
En dehors de ça, on a vu comment la communauté réagi quand la team essaye de supprimer des features qui sont dépassées : la controverse autour de l’arrêt du support de l'ascii a fait trembler les murs...
Je l'ai dit dans mon premier poste : c'est difficile de faire un choix pour ses users, mais la suppression d'options est -la plupart du temps- quelque chose de positif.
@Marc je crois que quelqu'un avait fait un precompiler qui analysait ton code à la recherche de variables inutilisées, nan? (pas sûr de moi sur ce coup). Sinon, je trouve que perdre 4 octets de ram sur des machines modernes parce qu'on a déclaré une variable inutile, c'est pas cher payé :p
J'utilise rarement les fonctions internes à PB pour callback (j'avais découvert la surpuissance du système bien avant que ce ne soit implémenté, merci Srod!) et j'ai depuis longtemps dev ma propre solution pour ça; donc j'ignore tout des quirks liés à l'implémentation officielle... Mais tout comme la ram au dessus, est ce bien grave de pomper plus de CPU quand on resize? Déjà parce qu'on ne resize pas toutes les deux secondes, mais aussi parce que sur les machines modernes, on est pas à quelques milliers d'instructions prêt.
Comme je ne code pas d'application critique, je vais privilégier un code lisible à un code performant. Et c'est probablement le coût de la structure que j'emploie généralement dans mes programmes : c'est un peu plus lent.
Ça reste un argument complètement valide pour utiliser la boucle d’événements ponctuellement.
@Microdevweb j'ai la même ;3
Tous les autres langages que je connais utilisent exclusivement les callbacks (ça veut pas dire que je connais tous les langages!), Windows utilise des callbacks. Le callback, c'est un gros standard.
En dehors de ça, on a vu comment la communauté réagi quand la team essaye de supprimer des features qui sont dépassées : la controverse autour de l’arrêt du support de l'ascii a fait trembler les murs...
Je l'ai dit dans mon premier poste : c'est difficile de faire un choix pour ses users, mais la suppression d'options est -la plupart du temps- quelque chose de positif.
@Marc je crois que quelqu'un avait fait un precompiler qui analysait ton code à la recherche de variables inutilisées, nan? (pas sûr de moi sur ce coup). Sinon, je trouve que perdre 4 octets de ram sur des machines modernes parce qu'on a déclaré une variable inutile, c'est pas cher payé :p
J'utilise rarement les fonctions internes à PB pour callback (j'avais découvert la surpuissance du système bien avant que ce ne soit implémenté, merci Srod!) et j'ai depuis longtemps dev ma propre solution pour ça; donc j'ignore tout des quirks liés à l'implémentation officielle... Mais tout comme la ram au dessus, est ce bien grave de pomper plus de CPU quand on resize? Déjà parce qu'on ne resize pas toutes les deux secondes, mais aussi parce que sur les machines modernes, on est pas à quelques milliers d'instructions prêt.
Comme je ne code pas d'application critique, je vais privilégier un code lisible à un code performant. Et c'est probablement le coût de la structure que j'emploie généralement dans mes programmes : c'est un peu plus lent.
Ça reste un argument complètement valide pour utiliser la boucle d’événements ponctuellement.
@Microdevweb j'ai la même ;3
Tous les autres langages que je connais utilisent exclusivement les callbacks (ça veut pas dire que je connais tous les langages!), Windows utilise des callbacks. Le callback, c'est un gros standard.
Re: Le bien coder
Ca depend de ce qu'on fait, imaginons un tableau déclaré mais jamais utiliséposhu a écrit :Sinon, je trouve que perdre 4 octets de ram sur des machines modernes parce qu'on a déclaré une variable inutile, c'est pas cher payé :p
Code : Tout sélectionner
Mem_Before = MemoryStatus(#PB_System_FreePhysical)
Dim Forgotten_Array.s(10000,10000)
Mem_After = MemoryStatus(#PB_System_FreePhysical)
Debug FormatNumber(Mem_Before - Mem_After, 0)
Code : Tout sélectionner
799,944,704
Comme en général les codeurs ont le dernier pc et glonflé à donf en ram, s'ils ne passent pas par le profileur ou tout autre méthode bien carrée, ils ne voient rien.
"Mais pourquoi les utilisateurs râlent parce que ça swapp tout le temps l'appli ?"
Un bon codeur doit être radin et gratter tout ce qu'il peut en RAM (tout bon programmeur devrait commencer sur une machine sous-dimensionnée)
- microdevweb
- Messages : 1800
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Le bien coder
C'est une des faiblesse de l'ide de pb, il ne signale pas les variables ,procédure etc non utilisées.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
Re: Le bien coder
V'la la gueule du tableau aussi xD c'est vraiment un besoin hyper spécifique et oublier un truc aussi massif, c'est quand même une bonne grosse faute.
Sinon, pour la machine bas de gamme, je suis on ne peut plus d'accord, j'ai une tablette chinoise sous windows 10 à 60€, tout ce que je fais doit tourner dessus... Des fois c'est assez chiant, mais c'est un exercice gratifiant à la fin.
Sinon, pour la machine bas de gamme, je suis on ne peut plus d'accord, j'ai une tablette chinoise sous windows 10 à 60€, tout ce que je fais doit tourner dessus... Des fois c'est assez chiant, mais c'est un exercice gratifiant à la fin.
Re: Le bien coder
~~~~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
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳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
Re: Le bien coder
Marc56 > une autre méthode pour savoir ce qu'est la variable est d'indenter ça propre variable, je m'explique. On part d'un principe par exemple, toutes variable est en majuscule et les choses importante de la variable séparer par "_" (c'est un exemple).
Ce qui peu me donner par exemple "MAVARIABLE_QUIFAIT_UNTRUC", apres cela ne donne toujours pas son "type", alors pour ma part j'ajoute son type en minuscule au début ce qui me donne donc "iMAVARIABLE_QUIFAIT_UNTRUC", après tu peux aussi ajouter un "_" pour séparer les choses ce qui peut donnée "i_MAVARIABLE_QUIFAIT_UNTRUC".
un define simple avec cette norme perso donnerait (ce n'est pas forcement ce que j'utilise mais ça explique bien) :
Les méthodes sont multiples pour avoir un code clair et de connaitre facilement le type de la variable peut être utile.
après pour tout ce qui est les tableaux ect... rien n’empêche une méthode perso mais simplifier, du style un dim peut être "tab_", une list "lst_" et j'en passe, c'est juste une question de logique personnelle.
cordialement,
GallyHC
PS: je fait parti de ce qui sont contre le fait de 100% unicode, juste sur le fait du chargement de fichier dans des structures (genre les headers). Ou avoir de quoi pouvoir dire a la variable de structure qu'elle prend en compte de l'ASCII.
Ce qui peu me donner par exemple "MAVARIABLE_QUIFAIT_UNTRUC", apres cela ne donne toujours pas son "type", alors pour ma part j'ajoute son type en minuscule au début ce qui me donne donc "iMAVARIABLE_QUIFAIT_UNTRUC", après tu peux aussi ajouter un "_" pour séparer les choses ce qui peut donnée "i_MAVARIABLE_QUIFAIT_UNTRUC".
un define simple avec cette norme perso donnerait (ce n'est pas forcement ce que j'utilise mais ça explique bien) :
Code : Tout sélectionner
define.i i_MAVARIABLE_QUIFAIT_UNTRUC
après pour tout ce qui est les tableaux ect... rien n’empêche une méthode perso mais simplifier, du style un dim peut être "tab_", une list "lst_" et j'en passe, c'est juste une question de logique personnelle.
cordialement,
GallyHC
PS: je fait parti de ce qui sont contre le fait de 100% unicode, juste sur le fait du chargement de fichier dans des structures (genre les headers). Ou avoir de quoi pouvoir dire a la variable de structure qu'elle prend en compte de l'ASCII.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Le bien coder
Mais... Passer à l'unicode n’empêche pas de pouvoir lire de l'ascii. La preuve : pb peut toujours lire de l'ascii. Par contre, passer à l'unicode, c'est moins de taff pour l'équipe de PB qui peut se concentrer sur des trucs plus important, c'est s'assurer que tous les outils seront bien compilés en unicode (toujours pour protéger les gens de leur propre ignorance), c'est aussi rendre les codes plus compatibles : fut une époque où, quand on choppait un code sur un forum, c'était un peu la loterie pour la compatibilité unicode. Bref, ça a beaucoup d'avantage et peu d’inconvénients :pGallyHC a écrit :PS: je fait parti de ce qui sont contre le fait de 100% unicode, juste sur le fait du chargement de fichier dans des structures (genre les headers). Ou avoir de quoi pouvoir dire a la variable de structure qu'elle prend en compte de l'ASCII.
J'ai lu sur le forum anglais qu'une app compilé en Unicode produisait du son moins bon qu'en ascii... J'ai pas vérifié et j'ai du mal à imaginer comment ça marche (je suis pas dans le code) mais, si c'est le cas, le passage à l'unicode forcé est l'occasion de régler ces petits désagréments aussi.
Re: Le bien coder
poshu>
j'ai un header pour les fichiers (par exemple les WAV), je suis obliger de faire des actions inutiles à cause du 100% unicode. je vais faire simple en donnant du code et des exemples.
Avant un simple :
Avec le fait du passage au 100% unicode cela n'est plus du tout possible et on doit passer par une méthode a trouver soit même (je précise bien soit même et qui donne dans mon cas) :
Pourquoi en déclarant un string dans une structure, il doit forcement être unicode? je ne connait pas encore de header de fichier en unicode (même les fichiers texte en unicode), mais par contre l'avoir forcer doit faire modifier le code existant des utilisateurs. A la rigueur si il y avait pour les structure une chose comme "montruc.s-ascii" ou l'on peu ajouter des limites comme "montruc.s-ascii{4}", la pas de problème, mais le fait est que le passage n'a pas arranger les chose par le fait qu'il y a eu des oublis toujours pas corriger.
J'ai bien peur, que tu vois que le futur et que tu vois pas l’utilité du passé. un fichier n'est que des bits mis bout à bout. l'unicode n'est juste qu'une extension de l'ascii mais ne le remplace pas (on à juste ajouter des bits pour encoder plus de caractères).
Bien cordialement,
GallyHC
j'ai un header pour les fichiers (par exemple les WAV), je suis obliger de faire des actions inutiles à cause du 100% unicode. je vais faire simple en donnant du code et des exemples.
Avant un simple :
Code : Tout sélectionner
Structure WaveFileHeader
chunkid.s{4}
chunksize.l
format.s{4}
fmtchunkid.s{4}
fmtchunksize.l
audioformat.u
numchannels.u
samplerate.l
byterate.l
blockalign.u
bitspersample.u
datachunkid.s{4}
datachunksize.l
EndStructure
Global tabWaveFile.WaveFileHeader
; au niveau injection du fichier dans la structure été :
ReadData(file, tabWaveFile, SizeOf(WaveFileHeader))
; pour l'info du header :
debug tabWaveFile\chunkid
Code : Tout sélectionner
Structure WaveFileHeader
chunkid.a[4]
chunksize.l
format.a[4]
fmtchunkid.a[4]
fmtchunksize.l
audioformat.u
numchannels.u
samplerate.l
byterate.l
blockalign.u
bitspersample.u
datachunkid.a[4]
datachunksize.l
EndStructure
Global tabFile.WaveFileHeader
; Déjà l'ajout :
Macro ReadString(structProperty)
LSet(PeekS(@structProperty, 4, #PB_Ascii), 4, " ")
EndMacro
; au niveau injection du fichier dans la structure (ça n'a pas changer):
ReadData(file, tabWaveFile, SizeOf(WaveFileHeader))
; et donc maintenant pour lire l'info je doit faire
debug ReadString(tabWaveFile\chunkid)
J'ai bien peur, que tu vois que le futur et que tu vois pas l’utilité du passé. un fichier n'est que des bits mis bout à bout. l'unicode n'est juste qu'une extension de l'ascii mais ne le remplace pas (on à juste ajouter des bits pour encoder plus de caractères).
Bien cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)