Posté le 29/04/2014 17:42
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 206 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 30/04/2014 12:35 | #
int main()
{
char *str = (char *)malloc(20);
return 0;
}
Si ceci ne fonctionne pas...
Citer : Posté le 30/04/2014 12:38 | #
Justement c'est ce que j'avais fait: "Violation d'accès à l'adresse 0x..." en essayant de modifier la chaîne une fois le programme lancé.
Citer : Posté le 30/04/2014 12:44 | #
#include <stdlib.h>
int main()
{
char *str = (char *)malloc(20);
sprintf(str,"Ceci est une chaine");
ch[3] = 65;
return 0;
}
Est-ce que ce code-ci fonctionne ?
Citer : Posté le 30/04/2014 12:57 | #
Bizarre, là ça a marché avec sur mon PC et avec le SDK casio, alors que
{
int i;
for(i=longueur-1;i+1;i--) ch[debut+dec+i] = ch[debut+i];
for(i=debut+longueur;i<debut+dec;i++) ch[i] = 32;
ch[debut+dec+1]='\0';
}
char* getInputChar(int maxChar, int pos, int size, int state){
char *text=(char*)malloc(maxChar);
int i;
for(i=0; i<maxChar; i++)text[i]=32;
text="test";
PrintXY(1,1,text,0);
decaler(text,1,maxChar,1);
PrintXY(1,10,text,0);
}
Ajouté le 30/04/2014 à 12:59 :
J'ai compris, c'est dût au text="test"; au lieu de "sprintf(text,"test");":
{
int i;
for(i=longueur-1;i+1;i--) ch[debut+dec+i] = ch[debut+i];
for(i=debut+longueur;i<debut+dec;i++) ch[i] = 32;
ch[debut+dec+1]='\0';
}
char* getInputChar(int maxChar, int pos, int size, int state){
char *text=(char*)malloc(maxChar);
int i;
for(i=0; i<maxChar; i++)text[i]=32;
sprintf(text,"test");
PrintXY(1,1,text,0);
decaler(text,1,maxChar,1);
PrintXY(1,10,text,0);
}
Citer : Posté le 30/04/2014 13:00 | #
Jamais d'allocation directe de texte, sauf à la déclaration !
sprintf(text,"test");
Parce que là tu modifiais ton pointeur.
Citer : Posté le 30/04/2014 13:00 | #
Je me disais aussi
Ok, merci
Citer : Posté le 30/04/2014 14:39 | #
Ca me fait penser qu'il faut que je poste une astuce pour les entrées de texte avec le GetKey et les syscalls, parce que le code des touches correspond au code ASCII du caractère
Du coup (je vous montre vite fait)
int i = 0;
Cursor_SetPosition(1, 1); // c'est des syscalls
Cursor_SetFlashMode(1);
Cursor_SetFlashStyle(2); // 2 = ALPHA
while(key != KEY_CTRL_EXE)
{
GetKey(&key);
if(key >= 'A' && key <= 'Z')
{
chaine[i ] = key;
i++;
}
locate(1,1);
Print(chaine);
}
Y'a pas le "delete", mais ça fonctionne bien (j'ai utilisé cette astuce pour mon Serial_DLFiles)
Citer : Posté le 30/04/2014 14:45 | #
Merci, je vais essayer de voir ça avec le code des touches.
EDIT: C'est bon, je vais pouvoir adapter ça! Par contre il faudra que je modifie la valeur de sortie si je suis en minuscules (key+32), par exemple, si j'appuie sur 'A' j'ai 65 et si je veux 'a' j'ai juste à ajouter 32
Citer : Posté le 30/04/2014 14:57 | #
@Dark Storm
Mon premier add-in ayant été le GetKey, j'ai également remarqué que la validation d'un entrée du catalogue générait d'autres nombres, ce qui intéréssant du point de vue de la composition de l'application PRGM.
Citer : Posté le 30/04/2014 15:01 | #
J'ai pas tout compris... Qu'est-ce que tu veux en faire ?
@Alpha: c'est ça.
Citer : Posté le 30/04/2014 17:31 | #
Ce que je veux en faire ? Rien de spécial.
Je remarque juste que le catalogue, comme la fonction Capture, fait partie de l'OS à un niveau plus bas que les applications habituelles puisqu'ils sont accessibles partout, y compris dans les applications ajoutées, et que les fonctions Basic Casio génèrent des codes qui leur sont propres au niveau du GetKey().
Du coup, il est à noter que l'on peut se servir à volonté des entrées du catalogue dans nos add-ins.
Mais bon, à part refaire un éditeur Basic (ce qui serait totalement inutile)...