Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Problèmes SDK divers et variés
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Problèmes SDK divers et variés

Posté le 26/10/2013 11:00

Salut j'ai fait un petit programme mais je comprends pas pourquoi la fonction Print ne veut pas afficher la chaine que je lui demande ...

Le code
Cliquer pour enrouler
#include "fxlib.h"
#include "stdio.h"

unsigned int key;
int caractere, caractere2;
char chaine[21];
char ident[21];
char domaine[30];
char mdp[30];
char destinataire[40];
char sujet[30];
char corps[50];


int AddIn_main(int isAppli, unsigned short OptionNum){
    Bdisp_AllClr_DDVRAM();
    demmarage();
    identif();
    
    return 1;
}

demmarage(){
    int key;
    Bdisp_AllClr_DDVRAM();
    PrintMini(80,58,"Version 1.0",0);
    Bdisp_DrawLineVRAM(10,10,10,50);
    Bdisp_DrawLineVRAM(10,50,117,50);
    Bdisp_DrawLineVRAM(117,50,117,10);
    Bdisp_DrawLineVRAM(10,10,117,10);
    Bdisp_DrawLineVRAM(10,10,63,25);
    Bdisp_DrawLineVRAM(117,10,63,25);
    locate(7,5);
    Print("Messagerie");
    do{
        GetKey(&key);
    } while(key != 30004);
    
    Bdisp_AllClr_DDVRAM();
}

identif(){
    Bdisp_AllClr_DDVRAM();
    locate(1,1);
    Print("Identifiant:");
    locate(1,2);
    Print("+------------------+");
    locate(1,3);
    Print("|                  |");
    locate(1,4);
    Print("+------------------+");
    remplichaine();
    
    caractere2=0;
    do{
        caractere2++;
        ident[caractere2] = chaine[caractere2];
    } while(caractere2+1 != caractere);
    ========================== > ICI < ========
    locate(2,3);
    Print(ident);
    do{
        GetKey(&key);
    } while(key != 30004);
    
}

remplichaine(){
    caractere=0;
    do{
        caractere++;
    ======================= > ET ICI < ========
        locate(2,3);
        Print(chaine);
        GetKey(&key);
        //==========Conversion==========
        if (key==48)key= 71;
        if (key==46)key= 61;
        if (key==15)key= 51;
        if (key==135)key= 41;
        if (key==30004)key= 31;
        if (key==49)key= 72;
        if (key==50)key= 62;
        if (key==51)key= 52;
        if (key==137)key= 42;
        if (key==153)key= 32;
        if (key==52)key= 73;
        if (key==53)key= 63;
        if (key==54)key= 53;
        if (key==169)key= 43;
        if (key==185)key= 33;
        if (key==55)key= 74;
        if (key==56)key= 64;
        if (key==57)key= 54;
        if (key==30025)key= 44;
        if (key==30015)key= 34;
        if (key==187)key= 75;
        if (key==30046)key= 65;
        if (key==40)key= 55;
        if (key==41)key= 45;
        if (key==44)key= 35;
        if (key==14)key= 25;
        if (key==30001)key= 76;
        if (key==149)key= 66;
        if (key==133)key= 56;
        if (key==129)key= 46;
        if (key==130)key= 36;
        if (key==131)key= 26;
        if (key==30007)key= 77;
        if (key==205)key= 67;
        if (key==168)key= 57;
        if (key==30002)key= 47;
        if (key==30023)key= 37;
        if (key==30021)key= 27;
        if (key==30006)key= 78;
        if (key==30008)key= 68;
        if (key==30016)key= 58;
        if (key==30020)key= 38;
        if (key==30018)key= 28;
        if (key==30009)key= 79;
        if (key==30010)key= 69;
        if (key==30011)key= 59;
        if (key==30012)key= 49;
        if (key==30013)key= 39;
        if (key==30014)key= 29;
        //==============================
        if(key==31)caractere=19;
        if(key==76)chaine[caractere]='a';
        if(key==66)chaine[caractere]='b';
        if(key==56)chaine[caractere]='c';
        if(key==46)chaine[caractere]='d';
        if(key==36)chaine[caractere]='e';
        if(key==26)chaine[caractere]='f';
        if(key==75)chaine[caractere]='g';
        if(key==65)chaine[caractere]='h';
        if(key==55)chaine[caractere]='i';
        if(key==45)chaine[caractere]='j';
        if(key==35)chaine[caractere]='k';
        if(key==25)chaine[caractere]='l';
        if(key==74)chaine[caractere]='m';
        if(key==64)chaine[caractere]='n';
        if(key==54)chaine[caractere]='o';
        if(key==73)chaine[caractere]='p';
        if(key==63)chaine[caractere]='q';
        if(key==53)chaine[caractere]='r';
        if(key==43)chaine[caractere]='s';
        if(key==33)chaine[caractere]='t';
        if(key==72)chaine[caractere]='u';
        if(key==62)chaine[caractere]='v';
        if(key==52)chaine[caractere]='w';
        if(key==42)chaine[caractere]='x';
        if(key==32)chaine[caractere]='y';
        if(key==71)chaine[caractere]='z';
        if(key==61)chaine[caractere]='.';
        if(key==57)chaine[caractere]='@';
    } while(caractere!=19);
    
    if(key==31)chaine[caractere]='\0';
    if(key!=31)chaine[caractere+1]='\0';
}


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section


la chaine ident fait 21 caracteres


Pages : Précédente1 ... , 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23Suivante
LephenixnoirHors ligneAdministrateurPoints: 15719 Défis: 136 Message

Citer : Posté le 23/03/2015 18:41 | #


char debug[200] = {0};

Ça sert à rien ça, tu sais ? Ça n'initialise que la première case.

Je trouve ton code pas clair, tu peux pas séparer l'interface et les contrôleurs ? C'est un peu le bordel dans ton affaire...
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 23/03/2015 18:50 | #


@lephen
char debug[200] = {0};


ça initialise tous le tableau à 0 (mais ça ne fonctionne que pour 0, pas pour 1 ou 8866)
LephenixnoirHors ligneAdministrateurPoints: 15719 Défis: 136 Message

Citer : Posté le 23/03/2015 18:53 | #


Je me souviens avoir essayé et constaté le contraire...
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 24/03/2015 07:50 | #


http://openclassrooms.com/courses/apprenez-a-programmer-en-c/les-tableaux-2 cherche "Une autre façon d'initialiser" et tu verras
Dark stormHors ligneMembre d'honneurPoints: 10825 Défis: 176 Message

Citer : Posté le 24/03/2015 08:10 | #


C'est en C99 ça non ? Parce que le SDK est en C89 il me semble...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 24/03/2015 08:12 | #


non, je l'utilise dans mon yugioh
Dark stormHors ligneMembre d'honneurPoints: 10825 Défis: 176 Message

Citer : Posté le 24/03/2015 10:32 | #


Et ça marche à tout les coups ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 24/03/2015 13:43 | #


oui
LephenixnoirHors ligneAdministrateurPoints: 15719 Défis: 136 Message

Citer : Posté le 24/03/2015 18:59 | #


Eh bien, au temps pour moi alors.
Comme quoi...
AclecHors ligneMembrePoints: 5 Défis: 0 Message

Citer : Posté le 19/04/2015 17:13 | #


Comment demande t'on a l’utilisateur de saisir une valeur avec le pave numérique, et pouvoir l’utiliser après ?
Faut il une librairie particulière ?
LephenixnoirHors ligneAdministrateurPoints: 15719 Défis: 136 Message

Citer : Posté le 19/04/2015 17:18 | #


C'est un peu compliqué parce qu'il n'y a pas d'interface pré-conçue.

Il existe une bibliothèque de Dark Storm qui fait ça, il s'agit d'[url=www.planet-casio.com/Fr/forums/topic12979-6-EaasyInput.html]EasyInput[/url]. C'est une interface basée sur les évènements claviers.
AclecHors ligneMembrePoints: 5 Défis: 0 Message

Citer : Posté le 19/04/2015 17:26 | #


Comment se servir de cette librairie pour faire comme en basic :" ?→A puis EXE pour entre "?
-florian66-Hors ligneAncien rédacteurPoints: 2300 Défis: 19 Message

Citer : Posté le 19/04/2015 17:26 | #


tout est marqué
In Arch, I trust ! And you ?
AclecHors ligneMembrePoints: 5 Défis: 0 Message

Citer : Posté le 19/04/2015 17:32 | #


Pourriez vous me donner un exemple ? SVP
LephenixnoirHors ligneAdministrateurPoints: 15719 Défis: 136 Message

Citer : Posté le 19/04/2015 17:34 | #


Il y en a sur la page du topic. Essaie de trouver un peu, tu comprends qu'à force on finit par se lasser de répondre toujours aux mêmes questions.
Tu dois te douter qu'il y a une doc, une référence et tout un tas de réponses sur le topic, non ? En plus c'est pas le bon endroit pour poser des questions spécifiquement relatives à cette lib.
Jeandu56
Statut : Invité

Citer : Posté le 19/04/2015 18:39 | #


Bonjour je n'arrive pas a afficher de variable aidez moi svp je cher et j 'y arrive pas.
LephenixnoirHors ligneAdministrateurPoints: 15719 Défis: 136 Message

Citer : Posté le 19/04/2015 18:45 | #


Utilise sprintf() pour écrire la variable dans une chaîne de caractères.

#include <stdio.h> // important, sinon System ERROR

// dans une fonction :
unsigned int key;
char ch[20];
sprintf(ch,format,variable); // ecriture de la variable
PopUpWin(1); // affichage d'une popup
locate(3,4);
Print((unsigned char *)ch); // affichage de la chaine
GetKey(&key); // attente d'un evenement clavier


format dépend de ta variable :
"%d"  : valeur entiere (int, short, char)
"%ld" : long
"%u"  : unsigned
"%c"  : char (en texte)
"%s"  : autre chaine (inutile dans ton cas)
"%f"  : float
"%lf" : double
"%p"  : pointeur
Jeandu56
Statut : Invité

Citer : Posté le 19/04/2015 21:06 | #


Avec ce que tu as dit au dessus peut-on utiliser le : sscanf("%d",variable);
?????
LephenixnoirHors ligneAdministrateurPoints: 15719 Défis: 136 Message

Citer : Posté le 19/04/2015 21:10 | #


Presque :
sscanf(str,"%d",&variable);

Il faut donner une chaîne à lire en premier argument (ben oui, pas d'entrée standard) et bien penser à utiliser l'adresse de la variable.

Pense aussi à bien inclure stdio.h sinon t'as de belles System ERRORs.

Mais sinon, c'est effectivement possible. Ceci dit, si tu veux juste un int je te conseille plutôt atoi() :

#include <stdlib.h>

char ch[] = "-06384";
int x = atoi(ch); // x = -6384
Jeandu56
Statut : Invité

Citer : Posté le 19/04/2015 21:13 | #


Je peux utiliser float avec ça ?
et merci pour la rapidité de ta réponse
LephenixnoirHors ligneAdministrateurPoints: 15719 Défis: 136 Message

Citer : Posté le 19/04/2015 21:17 | #


Si tu veux lire des float il faut utiliser le format approprié ("%f"), ou la fonction appropriée. Par ailleurs, je préconise toujours les double ("%lf") mais ce n'est pas un choix obligatoire.

#include <stdio.h>
#include <stdlib.h>

char ch[] = "-0835.8480";
double f1;
sscanf(ch,"%lf",&f1); // f1 = -835.848
double f2 = atof(ch); // f2 = -835.848
Pages : Précédente1 ... , 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 59 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