1

Pourquoi cette fonction ne marche pas ?
void progrun (const char *arg)
	{
		char fname[25]="grav(\"";
		HANDLE h;
		strcat (fname, arg);
		strcat (fname, "\")");

		push_parse_text (fname);
		h = HS_popEStack ();
		printf_xy(10,10,"%s",fname);
		NG_execute (h, FALSE);
		HeapFree (h);

	 }
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

2

et tu as essayé sans le printf ?
(sinon, je vois rien comme ca au premier coup d'oeil)

3

C'est pareil sans le printf.
C'était juste pour tester ma chaine de caractère et ca m'a permi de voir que l'erreur est au niveau du NG_execute (h, FALSE); puisque en metant le printf après, il ne s'affiche pas.
L'erreur : Protected memory violation sad
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

4

bah, ché pas alors, ca parrait correct comment tu fais ...

5

En fait l'erreur c'est illegal instruction, et pas protected...
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

6

bah ce qui merde alors c'est surement ta chaine de caractère ...
y'a pas le caractère nul à mettre ? '\0'

7

Voici une fonction que je pensais utilisé pour mon VIEWER mais pour l'instant je ne l'utilise pas. C'est Kevin qui me l'a donné :


__attribute__((regparm))void Open_extens(unsigned char *arg,unsigned char *extens)
{
  char *fptr, *cptr;
  unsigned short plen;
  SYM_ENTRY *SymPtr = DerefSym (SymFind (SYMSTR (extens)));
  HANDLE h;
  if (!SymPtr)
  return;
  h = SymPtr->handle;
  if (HeapGetLock (h))
    {
      cptr = fptr = HeapDeref (h);
      h = 0;
    }
  else
    {
      cptr = fptr = HLock (h);
    }
  plen = *(short*)(cptr) + 3;
  if (SymPtr->flags.bits.archived)
    {
      if (!(cptr = malloc (plen)))
        {
          if (h) HeapUnlock (h);
          return;
        }
      memcpy (cptr, fptr, plen);
    }
  EX_patch (cptr + 0x40002, cptr + plen + 0x3FFFE);
  push_END_TAG(); 
  push_ANSI_string(arg);
  ASM_call (cptr + 0x40002);
  if (h) HeapUnlock (h);
  if (cptr != fptr) free (cptr);
}
www.wikio.fr/user1921&info=comments

8

Ben ca fait pas pareil ca .. il veut execiter le programme fname

9

./1: Parce que protection HW2. Installe HW2TSR ou HW2PATCH, ou plonge dans les arcanes du lancement de programme sous HW2.

10

S'il a une "illegal instruction", il a aussi un autre problème...
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é

11

En installant preos (HW2TSR) -> crash intercepted
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

12

ta chaine de caractère est bonne ?

13

printf_xy m'affiche grav("gravtemp") et c'est ce que je veux.
Qu'entends-tu par bonne ?
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

14

Essaye:
void progrun (const char *arg) 
 	{ 
 		char fname[25]="grav(\""; 
 		HANDLE h=0; 
 		strcat (fname, arg); 
 		strcat (fname, "\")"); 
  
                TRY
 		push_parse_text (fname); 
 		h = HS_popEStack (); 
 		printf_xy(10,10,"%s",fname); 
 		NG_execute (h, FALSE); 
                CATCH
                printf_xy (10,20,"Ca gloups...");
                ENDTRY
 		if (h) HeapFree (h);   
 	 }

15

Implicit declaration of function 'CATCH' sad
Et donc 5 erreurs...
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

16

C'est pas CATCH mais ONERR.
Je me suis trompe embarrassed

17

Même erreur, ca m'écrit grav("gravtemp") en 10,10 et Illegal instruction
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

18

Ben ca fait pas pareil ca .. il veut execiter le programme fname

La fonction que j'ai donné exécute bien le programme, normalement ?! Au début je faisais la même chose que lui et j'envoyais l'argument sur le stack mais Kevin m'a dit que c'était plus propre de faire ça.
www.wikio.fr/user1921&info=comments

19

Raphaël>Je comprends rien à ta fonction...
A quoi correspondent les arguments ?
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

20

Ta fonction ne marche pas sous Ti-89 titanium hehe

21

Raphaël>Je comprends rien à ta fonction... A quoi correspondent les arguments ?

C'est celle de Kevin. smile
Ne cherche pas à comprendre... même moi je n'ai pas trop cherché grin : il y a un paquet de fonction de bas niveau à connaître.
Par contre sur le principe il n'y a rien de compliqué :
- Ca c'est l'argument : unsigned char *arg
- Et ça c'est le nom du programme : unsigned char *extens que tu peux renomer en fname.
Mais bon si ça ne marche vraiment pas sur Ti89 Titanium...


Ah.... d'accord. grin Comment ça se fait ? ... Heureusement que je ne l'utilise pas alors... il font quand même ***** chez TI ! grin
www.wikio.fr/user1921&info=comments

22

Oki, j'avais un peu zapper les dernieres lignes de ton code grin

23

Ok... smile de toute façon je suis sûr que ça marche vu que j'avais déjà testé.
www.wikio.fr/user1921&info=comments

24

Raaah, même avec la fonction de KK, j'ai la même erreur. Il doit y avoir un autre problème sad
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

25

Tu penses que ça vient uniquement de la fonction ? Et au fait tu as cette erreur où ? Sur ta calculatrice ? Aussi avec VTI ?
Normalement le fonction de Kevin dans un programmé pas buggé, avec VTI marche parfaitement.
Et en plus si tu as exactement le même problème (si tu vois que ça plante de la même manière) c'est que ça ne viens pas de la fonction en elle même.
www.wikio.fr/user1921&info=comments

26

Mais dans ma première fonction, ca plante après le printf_xy et celui-ci affiche ce que je veux, donc bon...
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

27

C'est surement 'grav' qui plante.

28

Mais si je lance grav("gravtemp") dans home, ca marche parfaitement.
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

29

Ca veut rien dire. Il suffit que toi ou lui ne soit pas propre pour que le bug apparaisse dans ces conditions.
Tous les fichiers sont archives ?

30

Remplace 'grav' par un programme qui fait juste rien.