guilc Le 17/04/2002 à 01:28 bah, sur mon prog, ça fait gagner 8 octets...
PpHd Le 17/04/2002 à 11:53 C'est beau.
Je vais vois ca en detail C 'est meme magnifique !
PpHd Le 17/04/2002 à 15:18 36: DialogAddRequest(dialog,3,15,"Nom du Tableau", 0 ,8,8);
guilc Le 17/04/2002 à 16:37Edité par guilc le 17/04/2002 à 16:38 Pour ton problème : ton fichier à ouvrir, il est pas archivé au moins, parceque pour l'écriture c'est pas top.
Si jamais t'arrive à le faire marcher, j'ai modifié ta routine pour la lecture sans les fopen :
SYM_ENTRY *sym;
char *file;
void LoadTab(void)
{
if(!(dialog=DialogNewSimple(140,38))) return;
DialogAddTitle(dialog,"Charger un Tableau",BT_OK,BT_CANCEL);
DialogAddRequest(dialog,3,15,"Nom du Tableau",8,8,8);
if(DialogDo(dialog, CENTER, CENTER, buffer, NULL)==KEY_ENTER)
{
if(!(sym = SymFindPtr (SYMSTR (buffer), 0)))
{
DlgMessage("Erreur Fichier Inexistant.", buffer, BT_OK, BT_NONE);
}
else
{
file = (char *)HeapDeref (sym->handle);
memcpy (Tab , file+2, 12*20*sizeof(short));
}
}
HeapFree(dialog);
strcpy(buffer," "); // Remet a zero buffer
}
toujours la meme remarque pour le SYMSTR...
Kevin Kofler Le 24/04/2002 à 20:30Edité par Kevin Kofler le 24/04/2002 à 20:33 Ce qui ne va pas dans ton code:
1.
DialogAddRequest(dialog,3,15,"Nom du Tableau",8,8,8);
C'est:
DialogAddRequest(dialog,3,15,"Nom du Tableau",0,8,8);
comme l'a dit PpHd (message n°36).
2.
strcpy(buffer," ") // Remet a zero buffer
Faux. Il faut:
memset(buffer,0,9);
Et il faut aussi initialiser buffer (c'est automatique en _nostub pour l'instant, mais ça peut changer et ce n'est pas automatique en mode kernel):
char buffer[9]={0,0,0,0,0,0,0,0,0};
D'ailleurs buffer[9] suffit pour 8 caractères et un '\0'. Ce n'est pas la peine de mettre buffer[10]. Sauf que je mettrais plutôt:
char buffer[18]={}; //Ça mettra des 0 automatiquement
...
DialogAddRequest(dialog,3,15,"Nom du Tableau",0,17,17);
...
memset(buffer,0,18);
pour pouvoir mettre un nom de répertoire avec le nom du fichier.