Case var of

amelrc Messages postés 41 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 29 août 2010 - 26 juin 2007 à 14:18
 Utilisateur anonyme - 27 juin 2007 à 11:46
salut tout le monde;
j'ai un pb au niveau de mon case var of losque mon var arrive à un chiffre de deux position 10 par exemplej'avais declaré var comme integer tout marchait bien de var 0 à var 9, une fois que mon var vaut 10,11,.... le pb se pose, j'ai pensé à refaire la  même chose en declarent var de type string et ça va devenir case var of  
                                         '0':
                                          .
                                           .
                                           '11':
mais malheureusement ça n'a pas marché
comment je peux regler mon problème????
je vous remercie d'avance.

13 réponses

dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 15:32
Bonjour,
Et du code ?
Cela serait peut être plus clair ....

Dom
0
amelrc Messages postés 41 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 29 août 2010
26 juin 2007 à 15:47
salut;
voilà une partie de mon code:

for i:=vldebres+2 to  vlfinres-1
    do
    begin
    append;
     fieldbyname('numrc').asstring:=edit1.text;
     fieldbyname('exec').asstring:=edit2.text;
     for j:=vcdebres to vcfinres
     do
      begin
        case j-vcdebres of
       0: fieldbyname('codec').asstring:=(ExCel.GetCell(i,j));
       1: fieldbyname('Actif').asstring:=(ExCel.GetCell(i,j));
        .
        .
        .
        .
        .
      10:fieldbyname('mdebit').asfloat:=modif_chiffre(ExCel.GetCell(i,j));
      11: fieldbyname('mcredit').asfloat:=modif_chiffre(ExCel.GetCell(i,j));


      end;                             //case
      end;                            //fin for j
       post;
   end;                                //fin for i 

merci.
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 16:06
je te conseille un showmessage de inttostr(j-vcdebres ) pour controler tes valeurs ...

Dom
0
amelrc Messages postés 41 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 29 août 2010
26 juin 2007 à 16:23
salut
C'est déja fait j'ai enlever tout les showmessage au moment ou j'alais mettre le code ici et mes valeurs sont bonnes elles varient de 0 à 11.
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 16:28
Au fait c'est quoi ton message d'erreur  ?

Case of c'est qu'avec des entiers .(cf ton 1er message)

si tu rajoutes un else , passe-t-il dedans  ? avec quelle valeur ?

Dom
0
amelrc Messages postés 41 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 29 août 2010
26 juin 2007 à 16:38
salut;
Au faite le programme ne se compile même pas correctement , il s'arrete au niveau ou mon var devient un chiffre de deux positions ,j'ai même essayé de mettre  sous forme de commentaire les instruction à partir de 10...... et là mon programme se deroule très bien.
                                                                                         merci
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 16:43
Si il ne se compile pas , je ne vois pas comment tu as pu l'essayer ... ? ... ?
Il faudrait peut être voir ce qu'il y a entre 0 et 10 ... ?

Dom
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
26 juin 2007 à 20:19
Salut,

Je constate qu'à partir du 10ème "case of" tu changes de propriété de champ (AsFloat) :
le problème ne viendrait-il pas plutôt de la function "modif_chiffre" ?

Bonne prog'
0
amelrc Messages postés 41 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 29 août 2010
26 juin 2007 à 21:49
salut,




pour dom:


je l'ai essayé de var =0 jusqu'à var =9 et ça se compile et s'excute très bien avec le bon résultat voulu biensur en mettant les instructions à partir de var=10 comme commentaire donc ils ne seront pas compilées.

pour japee:
mais non le pb ne se situe pas dans mon AsFloat parceque si je fais le Asfloat lorsque mon var vaut de 0 à 9 mon programme fonctionne normalement.
voilà je vous remercie.
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
26 juin 2007 à 22:17
Un truc me chiffone :
for j:=vcdebres to vcfinres
     do
      begin
        case j-vcdebres of
Si vcdebres est affecté à J à chaque tour de boucle, alors j-vcdebres vaut donc toujours zéro, non ?

Je suis tout à fait d'accord avec dominique.stock : si tu as pu exécuter ton programme, c'est qu'il a été compilé !!! Il faudrait employer les bons termes pour décrire ton problème faute de quoi ça va encore partir en vrille

Es-tu réellement sur que ta fonction modif_chiffre soit en mesure de renvoyer un résultat de type Float lorsque J atteint la valeur 10 ? Que contient la cellule dans ce cas ?

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
0
amelrc Messages postés 41 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 29 août 2010
27 juin 2007 à 09:38
salut;
si je vais ça :

for i:=vldebres+2 to  vlfinres-1
    do
    begin
    append;
     fieldbyname('numrc').asstring:=edit1.text;
     fieldbyname('exec').asstring:=edit2.text;
     for j:=vcdebres to vcfinres
     do
      begin
        case j-vcdebres of
       0: fieldbyname('codec').asstring:=(ExCel.GetCell(i,j));
       1: fieldbyname('Actif').asstring:=(ExCel.GetCell(i,j));
        .
        .
        .
        .
        .
       //  10:fieldbyname('mdebit').asfloat:=modif_chiffre(ExCel.GetCell(i,j));
       //11: fieldbyname('mcredit').asfloat:=modif_chiffre(ExCel.GetCell(i,j));
      end;                             //case
      end;                            //fin for j
       post;
   end;                                //fin for i 

les deux instructions ou mon var vaut 10 et 11 sont mise en commentaire .
Dans ce cas là mon programme tourne bien.
j'ai même essayer
0:fieldbyname('mdebit').asfloat:=modif_chiffre(ExCel.GetCell(i,j));
1:fieldbyname('mcredit').asfloat:=modif_chiffre(ExCel.GetCell(i,j));
2:fieldbyname('montant').asfloat:=modif_chiffre(ExCel.GetCell(i,j));
dans ce cas là aussi mon programme tourne bien.
Donc je n'arrive pas à situer le pb

merci
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
27 juin 2007 à 10:47
Bonjour

Le problème ne viendrait pas du ExCel.GetCell(i,j)ou plus exactement des valeurs qui se situe dans ta grille ?
Vérifie les valeurs de i et j, puis les valeurs qui se trouvent dans les cellules aux colonnes 10 et 11. Rien de particulier ?
Quel est la définition de ta fonction modif_chiffre. Utilises-tu un variant, un string comme paramètre ?
 
Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
Utilisateur anonyme
27 juin 2007 à 11:46
Salut,

Je ne suis pas intervenu jusqu'à maintenant :

Ca fait 12 messages ou les membres tournent en rond pour t'aider.

Tu sais pourquoi ? Car tu nous donnes rien du tout comme information .

Ton ptit bout de code ne sert à rien pour faire avance le schmilblik. Donnes le code dans son entier ou à la rigueur passe un lien ou on peut télécharger ton source : sinon on est pas sortie de l'auberge (Puis comme on l'a déjà dit : M'dame Irma, elle est en vacances du 1 juin au 1 septembre ).

Comme l'a dit (indirectement) WhiteHippo : ton problème ne vient pas  du "case ... of" à proprement parlé. Soit j-vcdebres=10 et le bloc d'instruction est executé, soit il ne l'est pas et rien ne se passe (ou a la rigueur un autre cas). Il n'y a aucune autre possibilité. Donc soit il y a une sucette dans l'une des boucles (et c'est fort probable) For ... Do suite à l'utilisation d'un mauvais type, soit   effectivement la procedure que t'a souligné Whitte Hippo fieldbyname('mdebit').asfloat:=modif_chiffre(ExCel.GetCell(i,j)) , merdouille. Si ca merdouille soit les valeurs de i et j ne sont pas correctes, soit ta procédure modif_chiffre est bringbalante.

Dans tous les cas si tu veux de l'aide va falloir filer tout le code .

@+
0
Rejoignez-nous