60

Tu sais que tu as le droit de définir le répertoire en cours comme sous Linux ? Et il me semble que gcc arrive à fonctionner avec les chemins relatifs cheeky
Mais bon, c'est vrai qu'il y a peut-être probablement des bugs liés à la constante MAX_PATH à l'intérieur de gcc… :]
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

61

Bien vu, ce test sur la longueur ne doit pas aider smile
Mais sa présence ne suffit pas à expliquer pourquoi l'IDE ne rencontre pas de problème, malgré l'UAC activé, sur certaines machines: "C:\Documents and Settings\a\Local Settings\temp" fait toujours plus de 30 caractères.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

62

TEMP peut se redéfinir.

63

Je vérifierai ma VM Vista quand j'y aurai accès.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

64

Vérifier quoi ?
Ça peut se redéfinir, c'est tout à fait certain. D'ailleurs c'est le cas sur ma machine du boulot. Et j'ai dû le faire chez moi aussi, sur un autre volume...

65

Vérifier les valeurs des variables d'environnement TEMP ou TMP, si elles existent smile
(désolé, je me suis mal exprimé)
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

66

Ben oui elles existent. Je suis sur un Vista 64 là.
C:\>echo %tmp%
C:\TEMP

C:\>echo %temp%
C:\TEMP

67

Nan, mais je parlais des valeurs de TEMP et TMP (et de leur existence éventuelle) sur ma machine virtuelle smile
Je sais bien que ces variables d'environnement peuvent être redéfinies à volonté, avec override des variables per-user sur les variables globales.


Je viens de reproduire le problème: quand l'UAC est activé, ce test sur la taille du chemin du répertoire temporaire peut effectivement faire merder le build, oui

Sur ma VM, le user name est tel que l'expansion du path TMP=TEMP=%USERPROFILE%\Documents\temp (choisi pour le test, car les droits y sont suffisants même quand l'UAC est activé), à savoir C:\Users\login6\Documents\Temp produit une chaîne d'exactement 30 caractères. Le build fonctionne.
Avec TMP=TEMP=%USERPROFILE%\Documents\temp2 (31 caractères), le build merde (pas trouvé extgraph.h).
Avec la valeur TMP=TEMP=%USERPROFILE%\AppData\Local\Temp (34 caractères), répertoire temporaire plus traditionnel, le build merde aussi pour la même raison, bien sûr.


Le minimum à faire est donc de dégager les deux "or (Length (Temp) > 30) " de l'extrait de code posté en ./51 oui
Mais il est clair que dégager ces deux tests n'est pas suffisant: si, à la fin de la détermination du path du répertoire temporaire, la variable Delphi "Temp" pointe vers un répertoire protégé par l'UAC (soit parce que TMP ou TEMP contiennent une telle valeur, soit parce que les fallbacks vers %WINDIR%\TEMP ou C:\TEMP ont été déclenchés), on aura quand même un problème avec l'UAC. Il y a donc d'autres modifs à faire ailleurs dans le code, pour prendre en compte l'UAC.


J'avais regardé les symptômes avec ProcessExplorer, aidé d'un utilisateur dont j'ai oublié le pseudo et qui pouvait, lui, reproduire le problème, et publié les fichiers - mais en fait, pour une fois, le problème est visible en revue de code.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

68

Heu, franchement si j'étais toi, je me contenterais de renvoyer un message d'erreur explicite si %temp% n'est pas accessible en écriture. Faut pas déconner quand même triso

69

Si TEMP ou TMP sont overridées vers un répertoire protégé, c'est a priori parceque l'utilisateur l'a fait en connaissance de cause (ou qu'un autre soft lui a pourri ses variables d'environnement, mais ça reste un problème étranger à TIGCC/GCC4Ti) ; donc crayon Pen^2 ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

70

Egalement. Tu ne peux pas tout blinder, et de toute façon l'utilisateur arrivera toujours à te trouver le cas kivabien qui mettront tes protections en défaut. Et me cherche pas, je suis très fort à ça. grin
Donc pencil aussi.

71

Mouais, c'est pas faux... tester Temp en écriture et afficher un message s'il n'est pas possible d'y écrire, paraît un bon premier pas smile
Bon, ça n'est pas super pressé (à faire absolument ce soir, je veux dire grin), puisqu'il y a depuis longtemps un workaround efficace et bien documenté.

l'utilisateur arrivera toujours à te trouver le cas kivabien qui mettront tes protections en défaut. Et me cherche pas, je suis très fort à ça. grin

Ca m'arrive aussi, voir par exemple le bugfix qui a suivi mon report du bug qui se produisait quand on lançait ttstart avec lui-même grin
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

72

Ce que tu appelles "workaround" c'est désactiver l'UAC ? Si oui alors c'est une extrêmement mauvaise idée... ça implique d'annuler cette sécurité sur l'ensemble du système, je n'appelle pas ça une solution.

On peut aussi lancer l'IDE en mode administrateur mais ça a d'autres impacts, et ça permet potentiellement à l'IDE de toucher des fichiers auxquels elle n'est pas censée avoir accès, donc c'est également très moyen je trouve. Étant donné la simplicité du correctif, il me semble au contraire que ça fait partie des corrections qui pourraient être mises en place aussi tôt que possible.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

73

Nous sommes d'accord, le workaround n'est qu'un pis-aller en attendant une meilleure compatibilité avec l'UAC smile
Je voulais juste signifier juste que je ne vais pas coder la modif complète (dégager les deux "or (Length (Temp) > 30) ", je peux y arriver sans faire d'erreurs de syntaxe / sémantique; en revanche, pas ajouter un message d'erreur et refaire la chaîne d'exceptions pour faire en sorte qu'il y ait moins d'avalements silencieux d'erreurs), et releaser de build de test de l'IDE de GCC4TI, ce soir grin

(ça fait deux ou trois messages pas clairs de ma part en quelques heures dans le topic, c'est beaucoup ^^)
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

74

Ben dis donc , ça papote ici grin

Bon, l'est sympa cette lib, tout marche vraiment nickel, et c'est plutot fluide (considerant la taille des images du jeu) donc chuis plutot content grin
sinon j'ai un probleme justement du a la taille des GFX : ya t'il moyen de les stocker ailleurs que dans l'executable et de les charger quand on en a besoin ?





(Autre question qui n'a rien a voir: ya t'il moyen de lancer un prog compilé pour 89 sur une v200 ?)
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

75

sawamura (./74) :
ya t'il moyen de lancer un prog compilé pour 89 sur une v200 ?
Pour que le programme fonctionne ou non, ça va dépendre de comment il a été codé et de comment il a été compilé.
Si les options spécifient précisément TI89 uniquement, alors tu as de fortes chances qu'il ne marche que sur TI89.
Mais il est possible de faire des programmes qui tournent sur les deux modèles wink
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

76

GoldenCrystal (./75) :
sawamura (./74) :
ya t'il moyen de lancer un prog compilé pour 89 sur une v200 ?
Pour que le programme fonctionne ou non, ça va dépendre de comment il a été codé et de comment il a été compilé.
Si les options spécifient précisément TI89 uniquement, alors tu as de fortes chances qu'il ne marche que sur TI89.
Mais il est possible de faire des programmes qui tournent sur les deux modèles wink



ouioui, ca je sais smile
en fait j'ai retrouvé sur le net un jeu que j'avais codé ya un bout de temps sur 89, je voulais le lancer histoire de me remémorer le truc, mais j'vais faire ça via VTI wink
(http://www.ticalc.org/archives/files/authors/74/7410.html)
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

77

Oui, suffit que tu le définisse dans les options du projet, que la compilation doit se faire pour les deux machines. Mais c'est le cas par défaut.
ps -> si tu utilises genlib et son joypad, t'auras déjà pas de problème pour le clavier. Ensuite, pour l'écran, deux constantes font l'affaire (regarde le ramcall CALCULATOR, ou LCD_SIZE, je ne sais pas, il y a l'embaras du choix pour connaitre le matériel sur lequel tu tournes).

Et tu peux mettre tes sprites dans un fichier externe.
Deux possiblités :
Tu utilises un fichier de données quelconque, extension de ton cru. Pour obtenir un pointeur sur ton fichier, il faudra faire :
void* ptr = HLock(SymFindPtr(SYMSTR("monfichier", 0))->handle);
Bon, oublie pas de vérifier que le SymFindPtr a marché évidemment, je te laisse consulter la doc de vat.h. cheeky

Ma solution préférée : une librarie dynamique. Comme on met ce qu'on veut dedans, on peut mettre des données.
Avantage d'une librairie sur un fichier quelconque :
- tu peux exporter tout ce que tu veux comme données, genre malib__SpritesPerso etc... du coup dans ton programme, tu écris juste "malib__SpritePerso" comme si ça faisait partie du même binaire, le kernel s'occupe de te reconstituer le tout quand ton programme se lance
- pas besoin de vérifier où est ton fichier à la main, le kernel poussera une gueulante si ton fichier de donnée n'est pas là, et refusera de lancer ton programme

Ca, c'est que la partie supérieure du haut du sommet de la partie visible qui dépasse de l'iceberg, on peut faire des milliards de choses avec une librairie dynamique.

78

Si on a seulement le binaire, ce logiciel peut aider.
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é

79

Folco (./77) :
- tu peux exporter tout ce que tu veux comme données, genre malib__SpritesPerso etc... du coup dans ton programme, tu écris juste "malib__SpritePerso" comme si ça faisait partie du même binaire, le kernel s'occupe de te reconstituer le tout quand ton programme se lance

Avec à chaque fois un relogement de lib, 2 octets minimum (+ les 4 octets de l'adresse absolue). Plus 2 octets par export différent qu'on importe, plus 10 octets par lib. Et la lib a aussi besoin d'un header qu'il n'y a pas dans un simple fichier de données.
- pas besoin de vérifier où est ton fichier à la main, le kernel poussera une gueulante si ton fichier de donnée n'est pas là, et refusera de lancer ton programme

Bah, si SymFindPtr retourne NULL, pas la peine de chercher plus loin, le fichier n'existe pas. Ce n'est pas sorcier.
Ca, c'est que la partie supérieure du haut du sommet de la partie visible qui dépasse de l'iceberg, on peut faire des milliards de choses avec une librairie dynamique.

La preuve que ce n'est pas fait pour un simple fichier de données!
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é

80

81

Mouarf neutral
J'ai toujours ce foutu probleme du programme qui ne se lance qu'une seule fois :/
Apres j'ai juste droit a un "DONE" sad
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

82

Et si tu l'archives ? (juste pour tester)

83

toujours "done" grin
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

84

Archivé avant de le lancer la première fois ?
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

85

oué c'était ça la question en fait cheeky

86

là ca fonctionne grin
mais bon, je comprend pas...
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

87

Ça veut dire que quelque part ton programme modifie les données qui sont contenues à l'intérieur…
Donc quand tu l'exécutes la deuxième fois, ce n'est plus le même programme. (sauf si archivé puisque la mémoire archive conserve la version originale)
Après, pour ce qui est la cause de ce comportement, là faut regarder le code. ^^
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

88

#define USE_KERNEL #include <genlib.h> #include "sprites.h" JOYPAD j; char Temp[3000];//buffer pour le flip des sprites int done=0; //j=gl_read_joypad(); //if(!j.left_key) void gl_main() { while (done!=1) { j=gl_read_joypad(); if(!j.up_key) done=1; gl_cls(); gl_put_big_sprite (10, 60, &base1); //gl_put_big_sprite_flip_h (10, 10, &base1, (BGS *) Temp); glaux_swap (); glaux_synchro (1); } }

ya vraiment que ca pour l'instant smile

(chui surtout en mode rippage de sprites wink)
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

89

Ben là ton problème doit venir des variables globales. (Enfin surtout la variable « done »)
(C'est spécifique à TIGCC ça mais bon… Il me semblait que TIGCC bidouillait pour qu'on aie plus ce problème ?)
Pourquoi ne pas déclarer ces variables dans ta fonction main plutôt ?
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

90

ben done n'est pas réinitialisé à 0 tongue


int done; 
void gl_main() 
{ 
   done= 0 ;
   while ( done != 1 )