1

Bonjour à tous !

Encore une fois, j'ai besoin de vos lumières car je me retrouve bloqué.

J'ai besoin de tester l'existence d'un fichier, pour poursuivre mon programme.

J'ai donc tapé le prog suivant :

if(le fichier appelé toto existe)
{
clrscr();
printf("toto existe");
ngetchx();
}
else
{
clrscr();
printf("toto n'existe pas");
ngetchx();
}



J'ai ensuite cherché par quoi remplacer "le fichier appelé toto existe".

Un petit tour dans la doc m'indique que checkCurrent est ce que je cherche.
La doc dit que checkCurrent
returns the HSym of the VAT entry if it exists and matches the requested tag type, otherwise it returns H_NULL


Le fichier dont je cherche à vérifier l'existence est un fichier texte nommé toto, donc, selon la doc et si mon anglais est correct,

checkCurrent(SYMSTR ("toto"),TEXT_TAG)

devrait renvoyer H_NULL si toto n'existe pas ou n'est pas un fichier texte.

Je devrai donc remplacer "le fichier appelé toto existe" par checkCurrent(SYMSTR ("toto"),TEXT_TAG) != H_NULL pour que cela fonctionne, ce qui donne :
if(checkCurrent(SYMSTR ("toto"),TEXT_TAG) != H_NULL)
{
clrscr();
printf("toto existe");
ngetchx();
}
else
{
clrscr();
printf("toto n'existe pas");
ngetchx(); }


Or, à la compilation, tigcc renvoie
invalid operands to binary !=

à la ligne où se trouve le if.

Après ça, je rame de nuit dans le brouillard :
Je suppose que cette erreur provient du fait que le type de donnée renvoyée par checkCurrent ne se teste pas avec !=
La doc précise que la valeur de type HSym, renvoyée en cas d'existence du fichier est une structure contenant un handle (je ne sais toujours pas précisément ce qu'est un handle, même si je pense avoir à peu près compris) et un unsigned short, alors que la valeur H_NULL, renvoyée en cas de non-existence du fichier est un "null handle".

TIGCC accepte une décaration et une initialisation telle que
HSym nombidon = checkCurrent(SYMSTR ("toto"),TEXT_TAG);

Mais refuse
HANDLE nombidon = checkCurrent(SYMSTR ("toto"),TEXT_TAG);


Je ne sais pas comment faire pour tester la valeur de retour d'une fonction (ou ROM_CALL) dont le type semble changer selon ce que fait la fonction.


J'ai essayé plusieurs arrangements, entre autres
HSym nombidon = checkCurrent(SYMSTR("toto"),TEXT_TAG);
clrscr();
printf("%u",nombidon.offset); ngetchx();

Qui m'affiche 0, que toto existe ou qu'il n'existe pas.

Merci d'avance.

Kami

2

C'est une faute de frappe dans la doc, il devrait y avoir écrit HS_NULL. Et cf. http://tigcc.ticalc.org/doc/vat.html#HS_NULL pour éviter d'avoir ton erreur.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Ok, merci de ta rapide réponse.
(maintenant, je regarderai la doc en ligne plutôt que celle sur ma machine.)
Ce prog :


#define OPTIMIZE_ROM_CALLS // Optimisation des ROM calls

#define SAVE_SCREEN // sauve puis restore l'écran LCD

#define MIN_AMS 209 //Définit l'ASM minimum

#include <tigcclib.h> // Inclut tous les headers.

// Fonction Main

void _main(void)
{
HSym tet = checkCurrent(SYMSTR("toto"),TEXT_TAG);

if(tet.folder != 0)
{
clrscr();
printf("toto existe");
ngetchx();
}
else
{
clrscr();
printf("toto n'existe pas");
ngetchx();
}
}


Fonctionne sans problèmes.

A bientôt sans doute wink

4

Kamikazee :
Ok, merci de ta rapide réponse. (maintenant, je regarderai la doc en ligne plutôt que celle sur ma machine.)

C'est la même doc, il y a la même faute de frappe dans la version en ligne aussi. Mais on va la corriger pour la prochaine mise à jour.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité