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