FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Autre tentative de mise en forme des nombres Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Autre tentative de mise en forme des nombres Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Autre tentative de mise en forme des nombres Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Autre tentative de mise en forme des nombres Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Autre tentative de mise en forme des nombres Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Autre tentative de mise en forme des nombres Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Autre tentative de mise en forme des nombres Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Autre tentative de mise en forme des nombres Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Autre tentative de mise en forme des nombres Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Autre tentative de mise en forme des nombres Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Autre tentative de mise en forme des nombres Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Autre tentative de mise en forme des nombres Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Autre tentative de mise en forme des nombres Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Autre tentative de mise en forme des nombres Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Autre tentative de mise en forme des nombres Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
LEGO Icons 10331 – Le martin-pêcheur
Voir le deal
35 €

 

 Autre tentative de mise en forme des nombres

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyJeu 28 Jan 2010 - 15:28

Bonjour,

Dans la série des outils pour mettre des nombres en forme, je voudrais aussi apporter ma modeste contribution. J'ai fait un sous-programme appelé format-nombre qui prend entrée 3 variables:
format_nbr type float nombre à formatter
format_maxdec% nombre maxi de décimales (5 semble raisonnable)
format_frm$ type string format à utiliser

Dans le format, on peut mettre n'importe quel texte. Seuls 4 caractères spéciaux sont remplacés:
# est remplacé par un chiffre
° est remplacé par un chiffre ou un espace pour des zéros DEVANT le premier chiffre significatif
µ est remplacé par un espace pour des nombres positifs ou un tiret "-" pour des nombres négatifs
, (la virgule) représente obligatoirement la virgule décimale

Je mets le source complet ci-après. Dans les commentaires, il y a une documentation complète et des indications comment intégrer cette routine dans un programme existant. Il s'agit d'un programme complet pour tester la routine avec une form pour saisir les infos et voir le résultat.

Désolé pour le résultat: ne n'ai pas réussi à préserver des indentations du code lors de l'insertion, ni la mise en forme des commentaires. C'est pourqui j'ai inséré des "..........." entre le format et le résultat dans les exemples - cela devrait être des espaces. Mais au moins, c'est lisible.

Voilà:


Citation :

rem -------------------------------------------------------
rem Test de la routine FORMAT_nombre
rem
rem Seuls les labels et variables avec le préfixe format_
rem font partie du code utile et doivent être inclus dans
rem un programme utilisant cette routine. Voir la routine
rem format_nombre pour le mode d emploi.
rem

label execute_format, window, objets, execute_test
dim test_st$, test_n%, test_err%

label format_nombre
dim format_nbr, format_frm$, format_out$, format_in$
dim format_maxdec%, format_nbr_virg%, format_frm_virg%, format_neg$
dim format_i%, format_j%, format_car$
rem On peut modifier ne nombre maximales de décimales à volonté:
format_maxdec% = 5

gosub window
gosub objets

end

window:
left 0,223
top 0,182
width 0,380
height 0,250
caption 0,"Function FORMAT"
return

objets:
alpha 11
left 11,31
top 11,20
width 11,80
height 11,20
caption 11,"Nombre:"
edit 1
left 1,131
top 1,20

alpha 12
left 12,31
top 12,50
width 12,80
height 12,20
caption 12,"Décimales maxi:"
edit 2
left 2,131
top 2,50
width 2,40

alpha 13
left 13,31
top 13,80
width 13,80
height 13,20
caption 13,"Format:"
edit 3
left 3,131
top 3,80
width 3,220

button 4
left 4,131
top 4,120
caption 4,"Appliquer"
on_click 4,execute_format

alpha 15
left 15,31
top 15,160
width 15,80
height 15,20
caption 15,"Résultat:"
alpha 5
left 5,131
top 5,160
width 5,220
height 5,20
return

rem ------------------------------------------------------------------------
rem Cette routine effectue la mise en forme de un nombre
rem Le première partie ne sert que à contrôler les paramètres
rem ------------------------------------------------------------------------
execute_format:
gosub execute_test
if test_err%=0 then gosub format_nombre
return

rem -----------------------------------------------------------------------
rem ici on a la partie de vérification des paramètres
rem à la sortie, les variables suivantes sont chargées:
rem format_nbr nombre réel à convertir
rem format_dec% nombre de décimales (entre 0 et 5)
rem format_frm$ masque de formattage
rem -----------------------------------------------------------------------
execute_test:
test_err% = 1
test_st$ = text$(1)
test_n% = instr(test_st$,",")
if test_n%>0 then test_st$ = left$(test_st$,test_n%-1)+"."+right$(test_st$,len(test_st$)-test_n%)
if numeric(test_st$)=0
message "Le nombre est invalide !"
return
end_if
format_nbr = val(test_st$)
test_st$ = text$(2)
if numeric(test_st$)=0
message "Le nombre de décimales maxi doit être numérique !"
return
end_if
format_maxdec% = val(test_st$)
format_frm$ = text$(3)
test_err% = 0
return

rem ----------------------------------------------------------------------
rem ici on a la partie utile du code
rem en entrée, les variables suivantes doivent être chargées:
rem format_nbr nombre réel à convertir
rem format_maxdec% nombre de décimales maxi (5 est raisonnable)
rem format_frm$ masque de formattage
rem Le masque de formattage peut contenir n importe quelle chaîne de
rem caractères. Les caractères #, °, µ et la virgule sont réservés:
rem # est remplacé par un chiffre
rem ° est remplacé par un chiffre ou un espace
rem µ est remplacé par "-" si le nombre est négatif, sinon espace
rem , représente l emplacement da la virgule décimale
rem
rem Exemples: (le signe ^ représente un espace)
rem Nombre: -12,3456
rem Format.................................Résultat
rem ---------------------------------------------------------------
rem ###,##...............................012,34
rem °°°#,####...........................^^12,3400
rem Avant:^°°#^Après:^###...... Avant:^^12^Après:^340
rem µ###,##..............................-012,34
rem °#,##^µ..............................12,34^-
rem #......................................... 2
rem
rem Nombre: 12072009 (12 Juillet 2009)
rem Format..............................Résultat
rem ---------------------------------------------------------------
rem °#/##/####....................12/07/2010
rem ##-^#-####...................12-^7-2010
rem
rem ----------------------------------------------------------------------
format_nombre:
format_out$ = ""
format_neg$ = " "
if format_nbr<0 then format_neg$ = "-"
format_in$ = string$(20,"°")+str$(format_nbr)
format_nbr_virg% = instr(format_in$,".")
if format_nbr_virg%=0
format_in$ = format_in$ + ","
format_nbr_virg% = len(format_in$)
end_if
format_in$ = format_in$ + string$(format_maxdec%,"0")
format_frm_virg% = instr(format_frm$,",")
if format_frm_virg%=0
format_frm$ = format_frm$ + ","
format_frm_virg% = len(format_frm$)
end_if
format_j% = format_nbr_virg%
for format_i%=format_frm_virg%-1 to 1 step -1
format_car$ = mid$(format_frm$,format_i%,1)
if format_car$="#"
format_j% = format_j% - 1
format_car$ = mid$(format_in$,format_j%,1)
if format_car$="°" then format_car$ = "0"
format_out$ = format_car$ + format_out$
else
if format_car$="°"
format_j% = format_j% - 1
format_car$ = mid$(format_in$,format_j%,1)
if numeric(format_car$)=0 then format_car$ = " "
format_out$ = format_car$ + format_out$
else
if format_car$="µ"
format_out$ = format_neg$ + format_out$
else
format_out$ = format_car$ + format_out$
end_if
end_if
end_if
next format_i%
if format_frm_virg%<len(format_frm$)
format_out$ = format_out$ + ","
format_j% = format_nbr_virg%
for format_i%=format_frm_virg%+1 to len(format_frm$)
format_car$ = mid$(format_frm$,format_i%,1)
if format_car$="#"
format_j% = format_j% + 1
format_car$ = mid$(format_in$,format_j%,1)
if format_car$="°" then format_car$ = "0"
format_out$ = format_out$+ format_car$
else
if format_car$="°"
format_j% = format_j% + 1
format_car$ = mid$(format_in$,format_j%,1)
if numeric(format_car$)=0 then format_car$ = " "
format_out$ = format_out$ + format_car$
else
if format_car$="µ"
format_out$ = format_out$ + format_neg$
else
format_out$ = format_out$ + format_car$
end_if
end_if
end_if
next format_i%
end_if
caption 5,format_out$
return
J'espère que cela pourra aider quelqu'un...
[
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyJeu 28 Jan 2010 - 15:48

Merci pour ta participation sur le forum, et les efforts que tu fais. Comme pour Jean Claude, je ne regarderai que plus tard. Trop de chose à la fois.
@+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyJeu 28 Jan 2010 - 21:05

Une autre façon de faire, Merci Klaus pour ta participation.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyJeu 28 Jan 2010 - 22:25

Belle et intéressante contribution ! c'est toujours enrichissant de voir la façon de faire des autres. Merci.
Pour les indentations, bizarre qu'elles aient disparu si elles ont été faites avec des espaces ? (avec des tab ça ne marche pas je crois).
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyJeu 28 Jan 2010 - 23:51

Merci pour vos encouragements. Ca fai plaisir.

Pour les indentations, j'ai fait un copier/coller à partir de l'éditeur Panoramic; au moment de la constitution du post, tout semblait bon, mais dès la visualisation, les indentations sont perdues. Sous l'éditeur, elles sont faites par des espaces, car TAB ne marche pas sour l'éditeur (on sort du champs de texte source...). Donc, je ne sais pas comment faire.

Je me suis aperçu que j'ai oubllié un petit élément important dans la "documentation": à la fin de la routine, le nombre converti se trouve dans la variable format_out (je sais, pas très original); c'est d'ailleurs cette variable qui pour les besoins des tests charge la caption de mon alpha numéro 5 (cette ligne ne fait bien sûr pas partie du code à reprendre dans une autre application).

Bonne nuit à tous Klaus
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyVen 29 Jan 2010 - 8:54

Question: c'est quoi indentation ?
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyVen 29 Jan 2010 - 9:07

J'ai encore écris trop vite, j'ai pas suffisamment le réflexe Wikipédia.

Citation :
L'indentation est l'action qui permet d'ajouter des caractères de tabulations ou d'espaces dans un fichier texte.

Très souvent utilisée en programmation, elle rend le code source plus clair et plus lisible. Il existe plusieurs styles d'indentation et des outils comme la commande Unix indent qui permettent d'automatiser cette tâche de refactoring. La plupart des éditeurs de texte pour programmeurs prennent également en charge cette opération. Par exemple, avec l'éditeur de texte Vim, on se rendra à la première ligne à indenter, tapera « = » et se rendra à la dernière ligne à indenter, par exemple, on tapera 1G=G pour indenter tout le document.

Extrait du code de Linux avec son indentation originale

if (unlikely(prev->policy == SCHED_RR)) {
if (!prev->counter) {
prev->counter = NICE_TO_TICKS(prev->nice);
move_last_runqueue(prev);
}
}
switch (prev->state) {
case TASK_INTERRUPTIBLE:
if (signal_pending(prev)) {
prev->state = TASK_RUNNING;
break;
}
default:
del_from_runqueue(prev);
case TASK_RUNNING:;
}
prev->need_resched = 0;



Le même code après suppression de son indentation

if (unlikely(prev->policy == SCHED_RR))
if (!prev->counter) {
prev->counter = NICE_TO_TICKS(prev->nice);
move_last_runqueue(prev);
}
switch (prev->state) {
case TASK_INTERRUPTIBLE:
if (signal_pending(prev)) {
prev->state = TASK_RUNNING;
break;
}
default:
del_from_runqueue(prev);
case TASK_RUNNING:;
}
prev->need_resched = 0;

Dans certains langages de programmation (Haskell, Python…), l'indentation a un sens spécifique (p.ex. la délimitation des blocs, rôle tenu par les accolades dans l'exemple en C ci-dessus), alors que dans les autres elle est ignorée et n'a d'utilité que pour les programmeurs humains.

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyVen 29 Jan 2010 - 9:19

J'étais en train de rédiger une petite sxplication sur l'indentation, et j'ai vu ton post complémentaire. Mais tu vous, tu n'arrives pas non plus à préserver l'indentation... Alors, comment on fait ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyVen 29 Jan 2010 - 9:53

Petit complément: j'ai ajouté ce programme dans mon stockage en ligne sur www.box.net où tout le monde peut le télécharger (gratuitement bien sûr). L'indentation y est préservé et on peut ouvrir le fichier directement dans l'éditeur. Si vous êtes intéressés, envoyez-moi un message et je vous enverrai le lien.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyVen 29 Jan 2010 - 15:08

Finalement, c'est tout simple pourquoi tu as perdu les indentations: tu as utilisé la balise 'Citer' au lieu de la balise 'Code' !
Et Jean-Claude aussi, enfin, Jean-Claude, un vieux routier comme toi !
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyVen 29 Jan 2010 - 15:25

MERCI ! J'aurais dû faire plus d'essais ! Donc, voici le source en format "joli":

Code:

rem -------------------------------------------------------
rem    Test de la routine FORMAT_nombre
rem
rem    Seuls les labels et variables avec le préfixe format_
rem    font partie du code utile et doivent être inclus dans
rem    un programme utilisant cette routine. Voir la routine
rem    format_nombre pour le mode d emploi.
rem

label execute_format, window, objets, execute_test
dim test_st$, test_n%, test_err%

label format_nombre
dim format_nbr, format_frm$, format_out$, format_in$
dim format_maxdec%, format_nbr_virg%, format_frm_virg%, format_neg$
dim format_i%, format_j%, format_car$
rem On peut modifier ne nombre maximales de décimales à volonté:
format_maxdec% = 5

gosub window
gosub objets

end

window:
    left 0,223
    top 0,182
    width 0,380
    height 0,250
    caption 0,"Function FORMAT"
    return

objets:
    alpha 11
    left 11,31
    top 11,20
    width 11,80
    height 11,20
    caption 11,"Nombre:"
    edit 1
    left 1,131
    top 1,20

    alpha 12
    left 12,31
    top 12,50
    width 12,80
    height 12,20
    caption 12,"Décimales maxi:"
    edit 2
    left 2,131
    top 2,50
    width 2,40
   
    alpha 13
    left 13,31
    top 13,80
    width 13,80
    height 13,20
    caption 13,"Format:"
    edit 3
    left 3,131
    top 3,80
    width 3,220
   
    button 4
    left 4,131
    top 4,120
    caption 4,"Appliquer"
    on_click 4,execute_format

    alpha 15
    left 15,31
    top 15,160
    width 15,80
    height 15,20
    caption 15,"Résultat:"
    alpha 5
    left 5,131
    top 5,160
    width 5,220
    height 5,20
    return

rem ------------------------------------------------------------------------
rem            Cette routine effectue la mise en forme de un nombre
rem            Le première partie ne sert que à contrôler les paramètres
rem ------------------------------------------------------------------------
execute_format:
    gosub execute_test
    if test_err%=0
        gosub format_nombre
        caption 5,format_out$
        return
    end_if
   
rem -----------------------------------------------------------------------
rem    ici on a la partie de vérification des paramètres
rem    à la sortie, les variables suivantes sont chargées:
rem          format_nbr        nombre réel à convertir
rem          format_dec%      nombre de décimales (entre 0 et 5)
rem          format_frm$      masque de formattage
rem -----------------------------------------------------------------------
execute_test:
    test_err% = 1
    test_st$ = text$(1)
    test_n% = instr(test_st$,",")
    if test_n%>0 then test_st$ = left$(test_st$,test_n%-1)+"."+right$(test_st$,len(test_st$)-test_n%)
    if numeric(test_st$)=0
        message "Le nombre est invalide !"
        return
    end_if
    format_nbr = val(test_st$)
    test_st$ = text$(2)
    if numeric(test_st$)=0
        message "Le nombre de décimales maxi doit être numérique !"
        return
    end_if
    format_maxdec% = val(test_st$)
    format_frm$ = text$(3)
    test_err% = 0
return

rem ----------------------------------------------------------------------
rem    ici on a la partie utile du code
rem    en entrée, les variables suivantes doivent être chargées:
rem          format_nbr        nombre réel à convertir
rem          format_maxdec%    nombre de décimales maxi (5 est raisonnable)
rem          format_frm$      masque de formattage
rem    Le masque de formattage peut contenir n importe quelle chaîne de
rem    caractères. Les caractères #, °, µ et la virgule sont réservés:
rem          #    est remplacé par un chiffre
rem          °    est remplacé par un chiffre ou un espace
rem          µ    est remplacé par "-" si le nombre est négatif, sinon espace
rem          ,    représente l emplacement da la virgule décimale
rem
rem    Exemples:  (le signe ^ représente un espace)
rem        Nombre: -12,3456
rem        Format                          Résultat
rem        ---------------------------------------------------------------
rem        ###,##                          012,34
rem        °°°#,####                      ^^12,3400
rem        Avant:^°°#^Après:^###          Avant:^^12^Après:^340
rem        µ###,##                        -012,34
rem        °#,##^µ                        12,34^-
rem        #                              2
rem
rem        Nombre: 12072009 (12 Juillet 2009)
rem        Format                          Résultat
rem        ---------------------------------------------------------------
rem        °#/##/####                      12/07/2010
rem        ##-^#-####                      12-^7-2010
rem
rem    Au retour, le nombre formatté est dans la variable format_out$
rem
rem ----------------------------------------------------------------------
format_nombre:
    format_out$ = ""
    format_neg$ = " "
    if format_nbr<0 then format_neg$ = "-"
    format_in$ = string$(20,"°")+str$(format_nbr)
    format_nbr_virg% = instr(format_in$,".")
    if format_nbr_virg%=0
        format_in$ = format_in$ + ","
        format_nbr_virg% = len(format_in$)
    end_if
    format_in$ = format_in$ + string$(format_maxdec%,"0")
    format_frm_virg% = instr(format_frm$,",")
    if format_frm_virg%=0
        format_frm$ = format_frm$ + ","
        format_frm_virg% = len(format_frm$)
    end_if
    format_j% = format_nbr_virg%
    for format_i%=format_frm_virg%-1 to 1 step -1
        format_car$ = mid$(format_frm$,format_i%,1)
        if format_car$="#"
                format_j% = format_j% - 1
                format_car$ = mid$(format_in$,format_j%,1)
                if format_car$="°" then format_car$ = "0"
                format_out$ = format_car$ + format_out$
        else
            if format_car$="°"
                format_j% = format_j% - 1
                format_car$ = mid$(format_in$,format_j%,1)
                if numeric(format_car$)=0 then format_car$ = " "
                format_out$ = format_car$ + format_out$
            else
                if format_car$="µ"
                    format_out$ = format_neg$ + format_out$
                else
                    format_out$ = format_car$ + format_out$
                end_if
            end_if
        end_if
    next format_i%
    if format_frm_virg%<len(format_frm$)
        format_out$ = format_out$ + ","
        format_j% = format_nbr_virg%
        for format_i%=format_frm_virg%+1 to len(format_frm$)
            format_car$ = mid$(format_frm$,format_i%,1)
            if format_car$="#"
                format_j% = format_j% + 1
                format_car$ = mid$(format_in$,format_j%,1)
                if format_car$="°" then format_car$ = "0"
                format_out$ = format_out$+ format_car$
            else
                if format_car$="°"
                    format_j% = format_j% + 1
                    format_car$ = mid$(format_in$,format_j%,1)
                    if numeric(format_car$)=0 then format_car$ = " "
                    format_out$ = format_out$ + format_car$
                else
                    if format_car$="µ"
                        format_out$ = format_out$ + format_neg$
                    else
                        format_out$ = format_out$ + format_car$
                    end_if
                end_if
            end_if
        next format_i%
    end_if
return

Merci pour ton aide ! Je retiendrai la leçon !


Dernière édition par Klaus le Sam 30 Jan 2010 - 8:38, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyVen 29 Jan 2010 - 21:01

D' abord JL35 je suis pas vieux, je suis dans la catégorie ancien jeune, NA !

Merci Klaus, davoir rectifié ton programme, mais ne te laisse pas entraîner par le vieux machin de JL35.

A+ Nananerre !
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyVen 29 Jan 2010 - 21:04

à Klaus, il y a une erreur dans ton nouveau code.
A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptyVen 29 Jan 2010 - 21:26

le vieux machin il te dit... bien le bonsoir (il est poli, lui).
Y'a plus de respect. Quel exemple déplorable pour les nouveaux !
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptySam 30 Jan 2010 - 0:05

A Jean-Claude:

Une erreur est toujours possible. Peux-tu m'en dire plus ? Je corrigerai bien sûr ! Une erreur de compil ? Un cas de nombre qui ne passe pas ? Un plantage en exécution ? Toute anomalie sera corrigée.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptySam 30 Jan 2010 - 7:27

Il manque END IF à la ligne 95.

JL35, je plaisante. Bien sur que je te respecte.

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptySam 30 Jan 2010 - 8:44

MERCI ! J'ai corrigé. Voilà ce que c'est que de vouloir apporter une dernière touche au programme et de ne pas tout retester après... En fait, j'ai déplacé l'affichage caption 5,format_out$ du sous-programme format_nombre (où il n'avait rien à faire); donc, moon if then s'est transformé en if tout court et jai oublié le end_if. Ca m'apprendra à être plus rigoureux.

Le source est mis à jour dans le post et sur www.box.net.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: +   Autre tentative de mise en forme des nombres EmptySam 30 Jan 2010 - 12:06

A mon avis, l'erreur est dans le « Résultat » qui est curieux.
scratch
PS : Ah non, il n'y a pas d'erreur, c'est parce que je n'avais pas lu les commentaires internes au programme et que j'avais mis un chiffre à Format. Avec #####,## ça marche.
C'est vrai que c'est un joli travail (j'avoue que je ne suis pas un fana de comptabilité) !
jocolor
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptySam 30 Jan 2010 - 13:01

Il y a une chose qui est super dans ce code, c'est que le formatage du nombre peut-être une date. C'est bien fait, çà mérite un Bravo.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptySam 30 Jan 2010 - 14:56

Jean-Claude, je le sais bien que tu plaisantais, et j'espère bien que tu me connais assez pour savoir que je le sais.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres EmptySam 30 Jan 2010 - 15:00

Oui, une date, ou toute autre information nécessitant un formattage particulier, comme par exemple:

Code:

un numéro de téléphone:        0123456789    format "tél. ##.##.##.##.##"
ce qui produira:      tél. 01.23.45.67.89

un numéro de sécurité sociale: 149059912345678  format "SS. #.##.##.##.###.###.##'
ce qui produira:    SS. 1.49.05.99.123.456.78

Vous noterez que j'ai inclus un libéllé dans le format - moins d'instructions d'affichage ou d'impression.

Regardez le post de Jack de ce jour, dans la rubrique des souhaits pour PANORAMIC, série INCLUDE. Pour montrer l'usage de cette directive #INCLUDE et pour rendre l'utilisation de ma routine de formattage plus facile, voici le contenu de mon fichier INCLUDE_FORMAT_nombre.bas qui peut être ajouté à tout programme par la directive
Code:

    #INCLUDE "INCLUDE_FORMAT_nombre.bas"
Voici le source complet:
Code:

label format_nombre
dim format_nbr, format_frm$, format_out$, format_in$
dim format_maxdec%, format_nbr_virg%, format_frm_virg%, format_neg$
dim format_i%, format_j%, format_car$

rem On peut modifier ne nombre maximales de décimales à volonté:
format_maxdec% = 5


rem ----------------------------------------------------------------------
rem    ici on a la partie utile du code
rem    en entrée, les variables suivantes doivent être chargées:
rem          format_nbr        nombre réel à convertir
rem          format_maxdec%    nombre de décimales maxi (5 est raisonnable)
rem          format_frm$      masque de formattage
rem    Le masque de formattage peut contenir n importe quelle chaîne de
rem    caractères. Les caractères #, °, µ et la virgule sont réservés:
rem          #    est remplacé par un chiffre
rem          °    est remplacé par un chiffre ou un espace
rem          µ    est remplacé par "-" si le nombre est négatif, sinon espace
rem          ,    représente l emplacement da la virgule décimale
rem
rem    Exemples:  (le signe ^ représente un espace)
rem        Nombre: -12,3456
rem        Format                          Résultat
rem        ---------------------------------------------------------------
rem        ###,##                          012,34
rem        °°°#,####                      ^^12,3400
rem        Avant:^°°#^Après:^###          Avant:^^12^Après:^340
rem        µ###,##                        -012,34
rem        °#,##^µ                        12,34^-
rem        #                              2
rem
rem        Nombre: 12072009 (12 Juillet 2009)
rem        Format                          Résultat
rem        ---------------------------------------------------------------
rem        °#/##/####                      12/07/2010
rem        ##-^#-####                      12-^7-2010
rem
rem    Au retour, le nombre formatté est dans la variable format_out$
rem
rem ----------------------------------------------------------------------
format_nombre:
    format_out$ = ""
    format_neg$ = " "
    if format_nbr<0 then format_neg$ = "-"
    format_in$ = string$(20,"°")+str$(format_nbr)
    format_nbr_virg% = instr(format_in$,".")
    if format_nbr_virg%=0
        format_in$ = format_in$ + ","
        format_nbr_virg% = len(format_in$)
    end_if
    format_in$ = format_in$ + string$(format_maxdec%,"0")
    format_frm_virg% = instr(format_frm$,",")
    if format_frm_virg%=0
        format_frm$ = format_frm$ + ","
        format_frm_virg% = len(format_frm$)
    end_if
    format_j% = format_nbr_virg%
    for format_i%=format_frm_virg%-1 to 1 step -1
        format_car$ = mid$(format_frm$,format_i%,1)
        if format_car$="#"
                format_j% = format_j% - 1
                format_car$ = mid$(format_in$,format_j%,1)
                if format_car$="°" then format_car$ = "0"
                format_out$ = format_car$ + format_out$
        else
            if format_car$="°"
                format_j% = format_j% - 1
                format_car$ = mid$(format_in$,format_j%,1)
                if numeric(format_car$)=0 then format_car$ = " "
                format_out$ = format_car$ + format_out$
            else
                if format_car$="µ"
                    format_out$ = format_neg$ + format_out$
                else
                    format_out$ = format_car$ + format_out$
                end_if
            end_if
        end_if
    next format_i%
    if format_frm_virg%<len(format_frm$)
        format_out$ = format_out$ + ","
        format_j% = format_nbr_virg%
        for format_i%=format_frm_virg%+1 to len(format_frm$)
            format_car$ = mid$(format_frm$,format_i%,1)
            if format_car$="#"
                format_j% = format_j% + 1
                format_car$ = mid$(format_in$,format_j%,1)
                if format_car$="°" then format_car$ = "0"
                format_out$ = format_out$+ format_car$
            else
                if format_car$="°"
                    format_j% = format_j% + 1
                    format_car$ = mid$(format_in$,format_j%,1)
                    if numeric(format_car$)=0 then format_car$ = " "
                    format_out$ = format_out$ + format_car$
                else
                    if format_car$="µ"
                        format_out$ = format_out$ + format_neg$
                    else
                        format_out$ = format_out$ + format_car$
                    end_if
                end_if
            end_if
        next format_i%
    end_if
return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Autre tentative de mise en forme des nombres Empty
MessageSujet: Re: Autre tentative de mise en forme des nombres   Autre tentative de mise en forme des nombres Empty

Revenir en haut Aller en bas
 
Autre tentative de mise en forme des nombres
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Les nombres narcissiques (ou nombres d’Armstrong)
» Mise en forme de source Panoramic
» Analyse/Mise en forme de sources
» Mise en forme de sources Panoramic (bis)
» Mise en forme de fichier source Panoramic (nième version)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: