60

EvaSDK
a écrit : je suis en train de modifier tout ca et de rajouter 2-3 test histoire que a plante pas pour un rien...

top Bonne initiative.
[edit] petite correction, le prog ne trouve le fichier de sauvegarde que dans le dossier actif

C'est normal, c'est dit dans la doc des fonctions SymFind et SymFindPtr.
EvaSDK
a écrit : au fait mon prog fait deja plus de 8500 octets et je ne fais pas encore de manipulation des données c normal ?

Ben je ne sais pas, il fait quoi exactement, ton prog ?

61

EvaSDK a écrit :
'pouvez m'expliquer mon erreur dans la ligne:
HSym hs=SymFind(SYMSTR((char *)("mainaglm")));


Il faut 2 "\", sinon GCC comprend "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)

var est-il déjà au format SYM_STR (c'est-à-dire qu'il y a déjà un '' au début, d'où la longueur 0)? Dans ce cas, essaye SymFind(var+1+strlen(var+1)); (c'est la méthode pour avoir un SYM_STR à partir sur d'un pointeur sur le début d'une chaîne au format SYM_STR).
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é

62

Kevin>
Réponse 1, ben en mettant \ ca marchait pas quand même

Réponse 2, var était au format 'string' sans le à cause d'une erreur que j'avais réintroduit dans le code, maintenant, ca marche bien.

jackiechan>
Réponse 1, oui c sur... grin

Réponse 2, je sais, j'avais lu la doc mais est-ce qu'il existe une manière de le faire sans avoir au préalable à connaitre la liste des dossiers? Est-ce que SymFindFirst peut le faire ?

Réponse 3, ben c un carnet d'adresse.
Il parcourt une matrice (cf définition TI-basic) de chaines, il affiche les détails de l'adresse et des emails si ils dépassent de l'écran, avec menu graphique, panneau d'information, affichage de la liste des contacts avec un ascenceur (à corriger d'ailleurs), extinction de la calculatrice, et sortie du programme grin. en nostub (enfin il me semble...)

Ce qu'il faut que j'ajoute, affichage de la date d'anniversaire (avec ou sans AMS >=2.07), triage, modification des données (ajout, suppression,...), support multi-fichier (accès à environ 6 fichiers sans quitter le programme) et peut-être fonction d'échange entre calculatrice.
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

63

Je ne crois pas que ce soit possible de trouver un fichier quelque soit le dossier dans lequel il se trouve.
En tout cas, moi je regarde dans chaque dossier pour trouver un fichier.

64

Regarde les sources de TI-Chess 4.00.
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é

65

Voilà:
/*===========================================================================*/
/* Find and open a list of TIC-Files (traverses the complete VAT)            */
/*                                                                           */
/* returns number of found files (up to maxfiles)                            */
/*===========================================================================*/
short FindAndOpenTICFiles(ticfile_t* f,short maxfiles,unsigned long magic) {
    SYM_ENTRY*      symptr;
    unsigned char*  start;
    unsigned char*  tmp;
    short           found = 0;

    //-------------------------------------------------------------------------
    // traverse complete VAT to find specified files
    //-------------------------------------------------------------------------
    symptr = SymFindFirst(NULL,2);
    while (symptr) {
        if (symptr->handle) {
            start = HeapDeref(symptr->handle);
            if (start) {
                tmp = start + *(unsigned short*)(start) + 1;
                // check for OTH-Type and extension 'tict'
                if (*tmp     == 0xF8 &&
                    *(tmp-5) == 't'  &&
                    *(tmp-4) == 'i'  &&
                    *(tmp-3) == 'c'  &&
                    *(tmp-2) == 't')
                {
                    // check magic if wanted
                    if (magic != MAGIC_NOMAGIC) {
                        if (*(unsigned long*)(start+2) != magic) {
                            symptr = SymFindNext();
                            continue;
                        }
                    }

                    // set flags and open
                    f->flags = TICFILE_OPEN;
                    f->handle = symptr->handle;
                    f->magic  = magic;

                    if (symptr->flags.bits.archived) f->flags |= TICFILE_ISARCHIVED;

                    if (HeapGetLock(f->handle)) {
                        f->start = HeapDeref(f->handle);
                    }
                    else {
                        f->start = HLock(f->handle);
                        f->flags |= TICFILE_LOCKEDBYME;
                    }

                    strncpy(f->name,symptr->name,8);
                    strncpy(f->folder,SymFindFolderName(),8);
                    f->name[8]   = 0;
                    f->folder[8] = 0;
                    found++;
                    f++;
                    if (found == maxfiles) return found;
                }
            }
        }
        symptr = SymFindNext();
    }

    return found;
}

(extrait de TI-Chess 4.00. © Thomas Nussbaumer.)
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é

66

Kevin Kofler a écrit :
Il faut 2 "\", sinon GCC comprend "mainaglm".


var est-il déjà au format SYM_STR (c'est-à-dire qu'il y a déjà un '' au début, d'où la longueur 0)? Dans ce cas, essaye SymFind(var+1+strlen(var+1)); (c'est la méthode pour avoir un SYM_STR à partir sur d'un pointeur sur le début d'une chaîne au format SYM_STR).


d'ailleurs il ne faut pas oublier de preciser que les programmes en kernel ne pourront pas tourner sur une calc n'ayant pas de kernel d'installé
Les cartes !!!!
Je dois les retrouver ! :D:D:D

67

médor
a écrit : d'ailleurs il ne faut pas oublier de preciser que les programmes en kernel ne pourront pas tourner sur une calc n'ayant pas de kernel d'installé

Ça n'a aucun rapport avec sa question.
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é

68

oui médor c pas le peine de dire ca sachant que ca va générer une série de posts indésiré.

Merci pour la source Kevin, donc si je comprend bien, il n'y a pas de fonction dans tigcc pour le faire. Je crois que je vais me faire ma propre fonction...
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

69

J'aimerais savoir s'il est possible de faire un programme de chat avec les fonctions de link.h
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

70

Oui.
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é

71

Et même que ca existe déja ...

72

ah bon ? je peux avoir le lien plz
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

73

ben y'a deja remote de G.Diesche (pour l'utilisation de link.h , pas un chat ...), pis il me semble que Thibaut en a fait un avec qqn.

sinon, sur ticalc, tout se trouve smile

74

oui mais kes seules choses que j'ai jamais trouvé étaient en basic c pou ca que je pose la question
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

75

ah! ca m'etonne roll

76

bon je viens de vérifier que je disais pas de conneries, et dans la section 92+/asm/misc/ il n'y a que remote control (qui n'est le genre de programme que je veux faire), j'envoie un minimess à Thibault.
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

77

Je ne connais pas Thibault ! C'est qui ?
grin
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

78

arf, c pke dans une autre langue smile ca existe comme ca :P

79

donc je ne trouve rien de ce genre qui soit en ASM ou C.
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

80

Ayé, j'ai fait la fonction de recherche du fichiers de sauvegarde.
HANDLE FindAgdrg(){ SYM_ENTRY *SE_rg; HANDLE     HA_rg; ESQ type; ptr_uc p; int size; SE_rg = SymFindFirst (NULL, FO_RECURSE); HA_rg = SE_rg->handle; while(SE_rg) {      if(HA_rg)      {           type = *(HToESI (HA_rg));           if(type==OTH_TAG)           {                p=HeapDeref(HA_rg)+2;                size = ((MULTI_EXPR*) HeapDeref (HA_rg))->Size + 2;                if('A'==*(p-8+size) && 'g'==*(p-7+size) && 'd'==*(p-6+size) && 'D'==*(p-5+size)) return HA_rg;                }      }      SE_rg=SymFindNext();      HA_rg = SE_rg->handle; } return H_NULL; }

Je me suis inspiré de l'exemple de Kevin mais comme j'avais pas envie de me taper toute la source de Ti-Chess, j'ai gardé que ce que je voulais et ca marche parfaitement.
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

81

Bon maintenant, il faut passer à la manipulation des fichiers, ca va pas être de la pizza (non, de la tarte)...
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

82

bon archivage /désarchivage, c ok, redimensionnement du handle, c ok, mais alors écriture, c la merde...

cry pkoi j'y arrive pas...
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

83

Bon, jai essayé diverses choses mais ca ne marche pas.
Créer un fichier ne pose pas de problèmes, mais le modifier pour lui ajouter des choses (pour le moment c'est ce que je veux faire), ca je n'y arrive pas.

Dans la source ci-jointe, il y a une ligne que je ne comprends pas. Si quelqu'un pouvait m'expliquer... HANDLE CreateFile (SYM_STR Nom) {   HANDLE                HA;   SYM_ENTRY  *SE;   if (!(HA = HeapAlloc(HeapMax ()))) return H_NULL;   if (!(SE = DerefSym (SymAdd (Nom))))     {       HeapFree (HA);       return H_NULL;     }   *(long*)HeapDeref (SE->handle = HA) = 0x00010000;  //// <<== Ici je comprends pas !!!   return HA; } void AppendCharToFile (HANDLE h, unsigned char c) {   char *base = HeapDeref(h);   unsigned short len = *(unsigned short*)base;   if (len > HeapSize(h) - 10) return;   *(unsigned short*)base = len + 1;   base[len+2] = c; } void AppendStringToFile (HANDLE h, void *addr, unsigned short len) {   unsigned short i;   AppendCharToFile (h,0x00);     //NULL_TAG   for (i = len; i; i--)        AppendCharToFile (h, *((char*)addr)++);   AppendCharToFile (h,0x00);     //NULL_TAG   AppendCharToFile (h,0x2D);     //STR_TAG } void CloseFile (HANDLE h) {   AppendCharToFile (h,0xD9);     //LIST_TAG   AppendCharToFile (h,0xD9);     //LIST_TAG   HeapUnlock (h);   HeapRealloc (h, *(unsigned short*)HeapDeref(h) + 3); } void _main(void) {   HANDLE h;   h = CreateFile (SYMSTR("example"));   AppendCharToFile (h,0xE5);     //END_TAG   AppendCharToFile (h,0xE5);     //END_TAG   AppendStringToFile (h, (char *)"Coucou", 6);   AppendStringToFile (h, (char *)"C moi ", 6);   CloseFile (h); }                      Extrait modifié de la documentation de TIGCC 0.94
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

84

Oula... Etrange ton code smile

Pour créer une variable qui s'appelle "var", de type "STR" qui contient "Hello World", essaye ça :
SYM_ENTRY *sym; unsigned char *var; unsigned short size; unsigned short datas[14]={0,72,101,108,108,111,32,87,111,114,108,100,0,45}; // De quoi faire une variable STR contenant "Hello World" sym=DerefSym(SymAdd(SYMSTR("var"))); // Création de la variable // P.S : La coloration syntaxique rajoute des antislash devant les guillemets, n'en tiens pas compte... size=16; // La var fera 16 octets *(unsigned short*)HeapDeref(sym->handle=HeapRealloc(sym->handle,size))=size-2; // Allocation mémoire pour la variable créée, et definition des 2 premiers octets var=HeapDeref(sym->handle); // On obtient l'adresse du début de la variable memcpy(var+2,datas,14); // On copie les données après les 2 octets de taille

P.S : Je n'ai pas mits tous les tests nécessaires ( if(sym) et autres), et je n'ai même pas vérifié que ça marchait smile

Edit : Coloration syntaxique buggée...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

85

J'ai dis que pour créer la variable, j'avais pas de problème... L'exemple que j'ai mis est un extrait de la doc de TIGCC 0.94 que j'ai un peu modifié pour avoir une matrice. J'aimerais qu'on m'explique la ligne que j'ai déigné dans la source...
Et je regarderais si je peux y arriver avec ta source
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

86

Cette ligne initialise la variable à une variable contenant un seul octet: 00. Le 0001 est la taille du fichier, et le 00 final est juste du remplissage pour compléter le long.
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é

87

ok
Vertyos> ton exemple ne marche pas, il faut que le tableau soit en unsigned char et je suis pas sur du dernier élément.
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

88

Bah tu adapte, je t'ai pas donné une source à copier-coller roll
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

89

je sais, mais j'ai trouvé et corrigé le bug, donc j'ai compris grin
J'ai pas encore essayer de modifier les données...
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

90

ca y est j'y arrive. Bon reste plus qu'appliquer l'exemple au cas proposé...
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti