Derniers sujets | » Numbers par Ver2guerre Dim 02 Avr 2023, 00:47
» Mort ? par godbod Dim 22 Aoû 2021, 12:23
» Network, essai 1 par godbod Dim 09 Juil 2017, 02:18
» GODBOD par godbod Sam 08 Juil 2017, 14:05
» mon humeur par Ver2guerre Sam 30 Juil 2016, 19:44
» [A voir] Programme de traduction original : WikiTranslate par AdRiWeB Lun 01 Fév 2016, 04:50
» Reprise ? par Emyl Jeu 14 Juin 2012, 21:17
» Euh, ah ? par Ver2guerre Dim 27 Mai 2012, 12:11
» Problème TI 89 Titanium non visible après mise à jour par abdoukid Mer 23 Mai 2012, 13:37
» Y'a quelqu'un ? par Ver2guerre Sam 21 Avr 2012, 23:10
|
Qui est en ligne ? | Il y a en tout 4 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 4 Invités Aucun Le record du nombre d'utilisateurs en ligne est de 367 le Dim 18 Oct 2009, 00:16 |
| |
Avez-vous compris le tuto ? | Oui | | 100% | [ 2 ] | Presque | | 0% | [ 0 ] | Pas vraiment | | 0% | [ 0 ] | Non (si non, expliquer ce qui manque en postant) | | 0% | [ 0 ] |
| Total des votes : 2 | | |
| Auteur | Message |
---|
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: [C] VAT, chapitre III Mer 05 Mar 2008, 22:54 | |
| Nous voici donc au 3ème chapitre, dernier chapitre que je vais écrire sur la VAT. Une fois ce chapitre lu, vous devriez être capable de manipuler correctement vos variables présentes sur votre calculatrice. Puis, petit à petit, en lisant d'autres tutos, vous serez devenu un expert en la matière
Aujourd'hui, nous allons apprendre à manipuler les octets consistuant la plupart des variables que vous possédez sur votre TI, comme vous le faisiez avec les fonctions de stdio.h telles que fread, fputc, fputs ...
- Citation :
Mais pourquoi on utilise pas ces fonctions-là ? ça devrait être beaucoup plus simple que de manipuler la VAT...
Cette question, pas mal d'entre vous doivent se la poser : en effet, pourquoi se compliquer la vie ? En fait, ces fonctions de stdio.h sont lourdes et plutôt lentes. Ce sont des fonctions toutes faites, utile aux "programmeurs débutants", qui ne cherchent pas encore à optimiser leur code, mais juste à le faire marcher. Les fonctions de la VAT sont plus légères et plus rapides. C'est pour ça que nous allons les utiliser pour faire ce qu'on aurait pu faire avec les fonctions de stdio.h. Mais si vous souhaitez rester avec les fonctions de stdio.h, vous pouvez tout à fait, dans les petits programmes destinés à un usage personnel par exemple L'idéal est de les connaitre tous les deux, et c'est le but de ce tuto Commençons donc la leçon d'aujourd'huiManipulation de bites bytes spéciale dédicace à Xywez ^^ I Un peu de théorie : structure des variablesTous les fichiers que vous utilisez couramment, les listes, les variables, les textes, les programmes, ont une structure particulière qui permet au TI-OS de savoir à quel genre de variable il a affaire. Cette structure est identique pour la majorité d'entre eux : en gros, on peut la définir ainsi, il y a ensuite quelques différences selon le type de variable : - Code:
-
2 octets : taille de la variable ? octets : données 1 octet : extension (ou plus si extension personnelle)
En général, vous êtes libres d'organiser vous-même la structure de votre variable, mais attention à bien mettre la bonne taille à la fin de la manipulation de votre variable, sinon cela risque de rendre le fichier inutilisable, voire pire ! Renseignez-donc vous bien sur un type de variable avant de commencer à le manipuler. C'est ce qu'on va faire maintenant : découvrir la structure de la plupart des variables courantes En cours de rédaction...Et voilà, vous savez maintenant comment sont formées les variables :) Maintenant nous allons utiliser ça :)II Ecrire/lire dans un fichierTout d'abord, avant d'écrire ou de lire dans un fichier, il faut l'ouvrir, comme on le faisait (ou pas...) avec la fonction fopen() de stdio.h Pour cela, on va tout simplement faire comme on l'a appris dans le chapitre I de ce tutorial, en utilisant le pointeur de type SYM_ENTRY Je ne citerais pas une nouvelle fois les données de ce pointeur, en tout cas, ce qui va nous intéresser cette fois est le HANDLE de la structure qui va nous permettre d'accéder aux données de la variable - Citation :
Mais...qu'est-ce qu'un HANDLE ?
Bon, tout le monde sait que la mémoire est divisée en plusieurs "blocs" qui contiennent chacun un certain nombre de données. Ces "blocs" sont des HANDLE, à l'intérieur desquels on trouve une succession de données. Pour en savoir plus, il vaut mieux aller fouiner dans le header < alloc.h > de la doc de tigcc (ou à d'autres endroits, google is your friend )
Nous allons donc accéder ici au HANDLE contenant les données de la variable que nous cherchons à modifier, ou à lire. Voici comment on va s'y prendre, étape par étape :
- On crée un pointeur SYM_ENTRY vers la variable
- On récupère le HANDLE de la variable
- On crée un pointeur qui va pointer sur la première donnée à l'aide de l'instruction HeapDeref()
- A partir de là, on à "l'adresse de base", on peut accéder à n'importe quelle donnée de la variable en ajoutant un certain nombre à l'adresse de base
Attention de bien vérifier entre chaque étape si tout s'est correctement passé, sinon il risque d'y avoir des gros bugs !
A noter que si vous voulez créer une variable, il faut juste remplacer l'instruction SymFindPtr() utilisée en 1. en SymAdd() Cette fonction prend un seul argument, le nom de la variable à créer, de type SYM_STR. Elle retourne ensuite un pointeur de type HSym qu'on convertit ensuite à l'aide de l'instruction DerefSym(). La suite est pareille, mais n'oubliez pas de mettre la bonne taille dans les 2 premiers octets (taille des données - 2) à la fin de la manipulation.
Maintenant, voyons ce que ça donne en code : objectif :créer une chaine nommée "test" de 32 octets essayez d'abord tout seul puis comparez avec la version du tuto
- Spoiler:
- Code:
-
#include < tigcclib.h >
void _main(void) { SYM_ENTRY *sym;
//Le fichier fait 32 octets HANDLE h = HeapAlloc (32);
//on teste qu'on peut allouer de la mémoire, si on ne peut pas, on quitte if (!h) return;
//Ce pointeur contiendra "l'adresse de base" char *base;
//obtient le pointeur de type SYM_ENTRY sym = DerefSym(SymAdd(SYMSTR("test")));
//on teste qu'on a bien obtenu le pointeur, sinon on quitte après avoir libéré la mémoire allouée précedemment par le HANDLE h if (!sym) { free(h); //on libère la mémoire return; }
//il est temps d'utiliser notre handle, on le copie dans le handle de la structure SYM_ENTRY sym -> handle = h;
//maintenant, on obtient l'adresse de base de notre fichier base = HeapDeref(h);
//C'est une chaine de caractères. On met le tag STR_TAG (0x2D) à l'avant-dernier octet (soit le 31ème) de notre fichier base[31] = STR_TAG;
//maintenant il ne reste plus qu'à mettre la taille dans les 2 premiers octets, qui est de 32 - 2 = 30. Pour cela on écrit un short dans les premières "cases", qui va écrire la taille comme il faut :) * (short *)base = 30 ;
//vala c'est fini :)
Pour lire, on procède de même mais au lieu d'écrire, bah on lit ^^ attention aux types des données, il est conseillé d'utiliser des char On peut aussi utiliser l'instruction memcpy() et strcpy() pour simplifier la tâche et écrire plusieurs octets d'un coup
Vala, maintenant vous savez lire/écrire dans un fichier :) Je n'ai plus rien à vous apprendre, entrainez-vous, regardez d'autres tutos, faites-vous plaisir ^^ Moi, j'continuerais à écrire d'autres tutos si j'en ai le temps, et surtout la motivation
Avant de clore définitivement ce tuto, si vous avez un quelconque problème n'hésitez pas à poster ou à me contacter :) Je vous conseille également pour la lecture de regarder le header < vat.h >, vous y apprendrez beaucoup beaucoup de choses :)
Vala vala, c'est tout ce que je pouvais dire Au revoir :) - Citation :
Au revoir.
tama 11 Mars 2008
Dernière édition par tama le Sam 29 Mar 2008, 19:44, édité 10 fois |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Mer 05 Mar 2008, 22:55 | |
| Début de tuto, j'le compléterais plus tard :) |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6275 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [C] VAT, chapitre III Mer 05 Mar 2008, 23:58 | |
| |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Jeu 06 Mar 2008, 01:32 | |
| c'est la seule chose que tu as vu bon, j'aimerais bien qu'on ne poste pas avant que j'ai terminé le tuto, alors je supprimerai tout nouveau message |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Mer 12 Mar 2008, 01:28 | |
| vala, fini le gros, vous pouvez commencer à poster :) |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6275 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [C] VAT, chapitre III Mer 12 Mar 2008, 15:23 | |
| j'aime bien lespece de fausse interview %) bon concept |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Mer 12 Mar 2008, 16:06 | |
| c'est pour répondre à la plupart des questions qu'un utilisateur "lambda" se poserait en regardant ce tuto |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6275 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [C] VAT, chapitre III Mer 12 Mar 2008, 16:16 | |
| (ouai, c'est très utile ^^)
par contre, tu peux pas faire de screen explicite, pour ce tuto, non ?
'omi j'men fou mais bon, pi bno ca doit pas trop etre possible non lmus mdr |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Mer 12 Mar 2008, 16:24 | |
| Bah si, bien sûr je peux, mais à quoi ça servirait : "oh ! ça a marché !" ? |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Jeu 13 Mar 2008, 00:59 | |
| Bon, sinon, ça serait bien de répondre aux sondages que je laisse avec les tutos, même si "ça vous concerne pas" |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6275 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [C] VAT, chapitre III Jeu 13 Mar 2008, 20:10 | |
| ok pas de probleme
okok pour les screens mdr |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Jeu 13 Mar 2008, 23:50 | |
| et parlez pour vous, ne votez pas "juste pour me faire plaisir" |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6275 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [C] VAT, chapitre III Ven 14 Mar 2008, 21:33 | |
| oui, quand on l'aura lu ^^ xD |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Ven 14 Mar 2008, 22:26 | |
| ...c'est-à-dire dans 3 mois... |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6275 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [C] VAT, chapitre III Dim 16 Mar 2008, 11:46 | |
| (quand j'aurai une 68k ^^ ? lol) |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Dim 16 Mar 2008, 14:25 | |
| pas forcément, tu peux essayer sur ému :p |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6275 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [C] VAT, chapitre III Lun 17 Mar 2008, 20:48 | |
| rhaaa ^^
faut pas pousser non plus ^^ |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9434 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [C] VAT, chapitre III Lun 17 Mar 2008, 21:48 | |
| |
| | | Contenu sponsorisé
| Sujet: Re: [C] VAT, chapitre III | |
| |
| | | |
Page 1 sur 1 | |
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
|
|