Parce que tu n'utilise pas une structure, mais un pointeur vers une structure.
EvaSDK Le 29/10/2002 à 18:27Edité par EvaSDK le 29/10/2002 à 19:10 bon ca marche. Je réussi a lire les données. Maintenant je voudrais qu'elles soient copiées dans des vars locales. Histoires de pouvoir les manipuler. Il faut que j'utilise memcpy c ca ?
if (!rhandle && !result)
DrawStr(0,0,"ERREUR FATALE",A_REPLACE);
else {
typedef char *ptr;
ptr monptr=HeapDeref(rhandle);
ptr ptrac;
clrscr();
ptrac=monptr+2;
i=0;
do {
ptrac++;
if ( (*ptrac == (0x00)) )
{ DrawStr(0,8*i,ptrac+1,A_NORMAL); i++;
while(*ptrac != (0x2D)) {ptrac++;}
}
} while(*ptrac == (0xE5) && i<9);
Sachant que ce qui n'est pas déclaré est dans le post précédent (rhandle et result) et que i est un int ou un short.
J'obtiens 'Comparison is always false due to the limited range of the data type' pour le test avec 0xE5 ou 0xD9 et je ne comprends pas pkoi !
Je ne vois pas...
Peut-être qui'l faut simplement mettre (char)0x2D
c fou ca, le test au milieu du code marche sans ca mais pas celui de sortie. Enfin bon, ca marche maintenant.
typedef unsigned char *ptr;
c bete mais ca doit etre ca en plus. Merci Kevin.
Bon, en fait j ai pas bcp avancer. J ai un porbleme pour charger les donnees de la matrice dans une structure. On dirait que de mainiere aleatoire, il ne recopie pas le 1 char pointer par mon pointeur alors que je suis certain qu il y a qqch sur le fichier. Si qq un peut m'aider... J ai pas le code sous la main, mais demain peut-etre (surement....)
non, en fait c bon, j'ai change de methode, et maintenant ca marche tres bien.
Bon alors aujourd'hui, je cherche à pouvoir accéder à plusieurs fichiers de données.
format: taille/1/chemin complet/1/0/AgdD/0/oth_tag
pour récuperer le chemin j'ai pas de probs, mais j'arrive pas à faire en sorte que SymFind ou SymFindPtr marche avec ce que je renvoie. J'ai essayé la commande SYMSTR (ancien $) mais ca foire. Help...
Je n'ai pas compris ce qu'était ton format de données, mais si tu arrives à récupérer le chemin complet, tu devrais pouvoir arriver à un résultat avec les fonctions du genre SymFindPtr et SymFindFirst, en mettant en argument SYMSTR(ptr_chemin)
je vais essayer avec ca, merci
Pour le format, c'est l'organisation des valeurs dans le fichier, j'avais pas envie de mettre tous les fputc,... Trop lourd...
Link Le 04/12/2002 à 20:50 La macro SYMSTR ne marche que pour des chaines "immédiates".
(c'est à dire des chaines données telles quelles dans le source, comme pour un puts("Bonjour") La chaine "Bonjour" peut être qualifiée d'immédiate)
Comme c'est une macro, elle ne peut pas marcher avec des variables chaines.

Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.
Houlà, je ne sais pas d'où tu sors ça, mais c'est complètement faux !
SYMSTR est une macro qui prend en argument un pointeur sur un char (char *).
Donc que tu mettes une chaine "immédiate" (ce qui ne veut rien dire au fait), ou un pointeur sur une chaine ça marchera autant, puisque bien entendu, quand tu écris "chaine" dans une source C, le compilo la remplace par son adresse.
Et il n'existe pas de type de variable CHAINE... (on n'est pas en BASIC, tu as p-ê confondu...)
Zeph Le 04/12/2002 à 21:30 Je crois qu'il confond la macro constructeur $, et SYMSTR, qui ne sont pas du tout la même chose. SYMSTR converti bien une chaine "normale" en chaine utilisable pour pointer vers une variable TiOS, avec SymFindPtr par exemple.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
'pouvez m'expliquer mon erreur dans la ligne:
HSym hs=SymFind(SYMSTR((char *)("mainaglm")));
ou
HSym hs=SymFind(SYMSTR((char *)(var)));
ou var est un tableau de caractères terminé par et ou la fonction strlen n'arrive pas à déterminer la longueur de var (renvoie 0)
pour le moment, la ligne qui marche:
HSym hs=SymFind(SYMSTR((char *)("aglm")));
mais j'ai pas envie de parcourir tous les dossiers à sa recherche étant donné que je demande sa localisation précise...
jackiechan Le 05/12/2002 à 18:18Edité par jackiechan le 05/12/2002 à 18:18 Bon, déjà, ce n'est pas la peine de transtyper ta chaine et ta variable var (si elle est déjà un tableau de char).
Normalement Hsym hs=SymFind(SYMSTR("mainaglm")); devrait marcher aussi bien que SymFind(SYMSTR("aglm")); (si la variable aglm est bien dans main...).
Et sinon, ce n'est pas normal que strlen ne puiss déterminer la taille de var (tu es sûr qu'elle ne commence pas par 0 ?). Comment l'initialises-tu ?
Je définis un type avec une variable (pour avoir la taille du texte pile+ ) puis je fais tourner une boucle pour la remplir et compris dedans et j'ai vérifié suffisament de fois que le premier char et bien != de 0 (et les suivants aussi)
Poste le code, je ne comprends pas trop (surtout le "je définis un type avec une variable")
Un bout de la source
ptr_uc = unsigned char *
HANDLE Handle_agdrg=(SymFindPtr($(agdrg),0)-> handle);
ptr_uc rh,rg1=HeapDeref(Handle_agdrg)+2;
rh=rg1;
do{rg1++;}while(*rg1!=1);
char rep[(int)(rg1-rh)-1];
memset(rep,(int)(rg1-rh)-1,0);
rh++;
i=0;
do{rep[i]=*rh;i++;rh++;}while(*rh!=1);
for(i=0;i<10;i++)
printf("n%c %d",rep[i],rep[i]);
ngetchx();
HSym hs=SymFind(SYMSTR((char *)("mainaglm")));
result=DerefSym(hs);
rhandle = result -> handle;
il m'affiche bien ce que j'ai mis dans agdrg mais les trois dernières lignes ne renvoient rien.
bon en fait j'ai bien fait une erreur mais qui ne se vois pas là apparement, en remmettant des bouts de code que j'avais effacer, la structure de la variable qui contient les chemins d'accès a été modifiées. Maintenant ca marche et en plus, mon programme sait retrouver tout seul la variable de stockage des infos.
Merci quand même.
Pourquoi tu n'utilises pas une nouvelle fois SymFindPtr (au lieu de SymFind) ?
Sinon, c'est à quelle ligne que ça bugge ?
Que vaut hs après le SymFind ? (tu devrais faire un test du genre if(!hs) return NULL;)
EvaSDK Le 05/12/2002 à 19:52Edité par EvaSDK le 05/12/2002 à 20:02 je suis en train de modifier tout ca et de rajouter 2-3 test histoire que a plante pas pour un rien...
[edit] petite correction, le prog ne trouve le fichier de sauvegarde que dans le dossier actif
au fait mon prog fait deja plus de 8500 octets et je ne fais pas encore de manipulation des données c normal ?