Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Problèmes SDK divers et variés
Theprog Hors ligne Membre Points: 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


Précédente 1, 2, 3 ··· 10 ··· 15, 16, 17, 18, 19, 20, 21, 22, 23 Suivante
Lephenixnoir Hors ligne Administrateur Points: 20990 Défis: 143 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...
Intelligide Hors ligne Membre de CreativeCalc Points: 49 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)
Lephenixnoir Hors ligne Administrateur Points: 20990 Défis: 143 Message

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


Je me souviens avoir essayé et constaté le contraire...
Intelligide Hors ligne Membre de CreativeCalc Points: 49 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 storm Hors ligne Labélisateur Points: 11541 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
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

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


non, je l'utilise dans mon yugioh
Dark storm Hors ligne Labélisateur Points: 11541 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
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

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


oui
Lephenixnoir Hors ligne Administrateur Points: 20990 Défis: 143 Message

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


Eh bien, au temps pour moi alors.
Comme quoi...


aclec Invité

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 ?
Lephenixnoir Hors ligne Administrateur Points: 20990 Défis: 143 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.


aclec Invité

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 ligne Ancien rédacteur Points: 2370 Défis: 20 Message

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


tout est marqué
In Arch, I trust ! And you ?


aclec Invité

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


Pourriez vous me donner un exemple ? SVP
Lephenixnoir Hors ligne Administrateur Points: 20990 Défis: 143 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 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.
Lephenixnoir Hors ligne Administrateur Points: 20990 Défis: 143 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 Invité

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


Avec ce que tu as dit au dessus peut-on utiliser le : sscanf("%d",variable);
?????
Lephenixnoir Hors ligne Administrateur Points: 20990 Défis: 143 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 Invité

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


Je peux utiliser float avec ça ?
et merci pour la rapidité de ta réponse
Lephenixnoir Hors ligne Administrateur Points: 20990 Défis: 143 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
Précédente 1, 2, 3 ··· 10 ··· 15, 16, 17, 18, 19, 20, 21, 22, 23 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

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