Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Impression d'un fichier txt | |
| | Auteur | Message |
---|
lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Impression d'un fichier txt Lun 28 Déc 2020 - 17:08 | |
| Bonjour à tous.
Je dois faire une impression d'un fichier txt.
Comme tout le monde le sait, dans un fichier txt, les caractères ne sont pas égaux en largeur avec les espaces.
Cela fait que dans mon fichier c'est de cette manière, et cela me va très bien pour relire.
Loyer du mois 150.00 electricite 40.00 salaire 9200.00
Donc si j'imprime (je passe par KGF.DLL) cela fait la même chose sur le papier.
Je pense que quelqu'un a déjà imprimé ce genre de fichier, et je voudrais savoir comment faire pour aligner les chiffres par exemple.
J'ai essayé en faisant de trim$ pour supprimer les blancs, mais rien n'y fait.
je demande donc de l'aide, mais pas urgent bien entendu.
Bonne soirée à tous | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Impression d'un fichier txt Lun 28 Déc 2020 - 17:34 | |
| C'est tout simple. Cela ne dépend pas des blancs. Ne tente pas de positionner le texte avec des espaces. Utilise plutôt une police de caractères à pas fixe, comme par exemple:
BatangChe Consolas Courier Courier New DFKai-SB DotunChe GulimChe GungSahChe KaiTi Lucida Console MingLiU MS Gothic MS MinChe NSimSun SimHei Simplified Arabic Fixed SimSun SimSun-ExtB Il y en a plein d'autres. | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: Impression d'un fichier txt Lun 28 Déc 2020 - 22:53 | |
| Bonsoir à tous. @Klaus. Merci beaucoup pour ton intervention. J'ai pris une des polices et l'impression est propre. Bonne nuit | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Impression d'un fichier txt Mar 29 Déc 2020 - 14:31 | |
| bonjour Le mieux encore au lieu d'utilisé des espace tu peut utilisé la flèche de ton clavier ce sera mieu mais bon c'est comme tu veut | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Impression d'un fichier txt Mar 29 Déc 2020 - 17:36 | |
| - Citation :
- tu peut utilisé la flèche de ton clavier
Il s'agit de la touche de tabulation. Là, ça dépend du driver. Souvent, le caractère TAB (ctrl/I ou chr$(9)) est traduit en un nombre d'espaces nécessaire pour passer au prochain multiple de 8 caractères. Et avec une police proportionnelle, on est marron quand-même. En plus, en fonction de la longueur du texte à gauche avant le TAB, il faut mettre 1 TAB, 2 TABs ou plus pour atteindre la colonne souhaitée, comme ici: - Code:
-
123456789012<TAB>12 34<TAB>56 Tu verras que le 56 n'est pas en-dessous du 12... | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Impression d'un fichier txt Mar 29 Déc 2020 - 18:40 | |
| bsr ok klaus je ne savais pas malgré cela dans son exemple les chiffres s'aligne bien | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Impression d'un fichier txt Mer 30 Déc 2020 - 0:32 | |
| - Citation :
- malgré cela dans son exemple les chiffres s'aligne bien
Ah bon, tu crois ça ? Regarde le code suivant: - Code:
-
memo 1 : full_space 1 : bar_both 1 print_target_is 1 print "Loyer du mois"+chr$(9)+"150.00" print "electricité"+chr$(9)+"40.00" print "salaire"+chr$(9)+"9200.00"
et le résultat: Tu vois bien que cela dépend de la longueur du texte qui précède la tabulation. | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Impression d'un fichier txt Mer 30 Déc 2020 - 3:30 | |
| oui tu as raison je retire ce que j'ai dit parce que j'ai directement utilisé blocknote au lieu de prendre un objet panoramic | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Impression d'un fichier txt Mer 30 Déc 2020 - 12:43 | |
| Selon la cible d'impression, le TAB est même ignoré: - Code:
-
picture 1 : full_space 1 print_target_is 1 print "Loyer du mois"+chr$(9)+"150.00" print "electricité"+chr$(9)+"40.00" print "salaire"+chr$(9)+"9200.00" produit: La bonne façon consiste à utiliser une police à pas fixe, la commande PRINT_LOCATE pour le positionnement direct en pixels, et de faire précéder du nombre d'espaces necessaires pour ma justification à droite (des montants, par exemple), et idem pour le cadrage à gauche, de la manière suivante: - Code:
-
memo 1 : full_space 1 : bar_both 1 ' picture 1 : full_space 1 print_target_is 1 font_name 1,"Courier" print "Loyer du mois"+chr$(9)+"150.00" print "electricité"+chr$(9)+"40.00" print "salaire"+chr$(9)+"9200.00"
print "|"+CadrerAGauche$("Loyer du mois",15)+"|"+CadrerADroite$(150,15)+"|" print "|"+CadrerAGauche$("electricité",15)+"|"+CadrerADroite$(40,15)+"|" print "|"+CadrerAGauche$("salaire",15)+"|"+CadrerADroite$(9200,15)+"|"
end
fnc CadrerADroite$(valeur,LargeurColonne%) result right$(string$(LargeurColonne%," ") + str$(valeur),LargeurColonne%) end_fnc fnc CadrerAGauche$(txt$,LargeurColonne%) result left$(txt$+string$(LargeurColonne%," "),LargeurColonne%) end_fnc
Voici le résultat: De la même manière, on peut forcer l'affichage avec 2 décimales, 3 décimales ou un nombre choisi quelconque, en reformattant le nombre par une fonction à laquelle on passe la valeur et le nombre de décimales voulues. EDITLe même raisonnement s'applique bien sûr lors de l'impression sur une imprimante physique ou dans in fichier PDF (via KGF.dll), ou pour l'écriture dans un fichier texte, sauf que dans ce dernier cas, la police est ignorée. Cela devient plus complexe pour l'impression dans un fichier RTF. Pour imprimer du texte avec des attributs graphiques, polices et couleurs variées, le plus simple est d'utiliser un objet PICTURE, imprimer dans ce picture selon les méthodes décrites ci-dessus, puis enregistrer le picture sur disque par la commande FILE_SAVE. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Impression d'un fichier txt Mer 30 Déc 2020 - 15:47 | |
| Et voici une version de la démo précédente, avec une représentation des valeurs numériques à deux décimales, quelque soit le nombre de décimales présentes dans la valeur initiale, le tout cadré à droite: - Code:
-
memo 1 : full_space 1 : bar_both 1 ' picture 1 : full_space 1 print_target_is 1 font_name 1,"Courier" print "Loyer du mois"+chr$(9)+"150.00" print "electricité"+chr$(9)+"40.00" print "salaire"+chr$(9)+"9200.00"
print "|"+CadrerAGauche$("Loyer du mois",15)+"|"+CadrerADroite$(ForcerDecimales$(150,2),15)+"|" print "|"+CadrerAGauche$("electricité",15)+"|"+CadrerADroite$(ForcerDecimales$(40.2,2),15)+"|" print "|"+CadrerAGauche$("salaire",15)+"|"+CadrerADroite$(ForcerDecimales$(9200.123,2),15)+"|"
end
fnc CadrerADroite$(txt$,LargeurColonne%) result right$(string$(LargeurColonne%," ") + txt$,LargeurColonne%) end_fnc
fnc CadrerAGauche$(txt$,LargeurColonne%) result left$(txt$+string$(LargeurColonne%," "),LargeurColonne%) end_fnc
fnc ForcerDecimales$(valeur,NombreDecimales%) dim_local v$, p% v$ = str$(valeur) p% = instr(v$,".") if p%>0 then v$ = left$(v$,p%-1)+","+mid$(v$,p%+1,len(v$)) if instr(v$,",")=0 then v$ = v$ + "," v$ = v$ + string$(NombreDecimales%,"0") p% = instr(v$,",") result left$(v$,p%+NombreDecimales%) end_fnc
Résultat d'impression dans un mémo: et: - Code:
-
' memo 1 : full_space 1 : bar_both 1 picture 1 : full_space 1 print_target_is 1 font_name 1,"Courier" print "Loyer du mois"+chr$(9)+"150.00" print "electricité"+chr$(9)+"40.00" print "salaire"+chr$(9)+"9200.00"
print "|"+CadrerAGauche$("Loyer du mois",15)+"|"+CadrerADroite$(ForcerDecimales$(150,2),15)+"|" print "|"+CadrerAGauche$("electricité",15)+"|"+CadrerADroite$(ForcerDecimales$(40.2,2),15)+"|" print "|"+CadrerAGauche$("salaire",15)+"|"+CadrerADroite$(ForcerDecimales$(9200.123,2),15)+"|"
end
fnc CadrerADroite$(txt$,LargeurColonne%) result right$(string$(LargeurColonne%," ") + txt$,LargeurColonne%) end_fnc
fnc CadrerAGauche$(txt$,LargeurColonne%) result left$(txt$+string$(LargeurColonne%," "),LargeurColonne%) end_fnc
fnc ForcerDecimales$(valeur,NombreDecimales%) dim_local v$, p% v$ = str$(valeur) p% = instr(v$,".") if p%>0 then v$ = left$(v$,p%-1)+","+mid$(v$,p%+1,len(v$)) if instr(v$,",")=0 then v$ = v$ + "," v$ = v$ + string$(NombreDecimales%,"0") p% = instr(v$,",") result left$(v$,p%+NombreDecimales%) end_fnc
Résultat d'impression dans un picture: Je pense que c'est complet, non ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Impression d'un fichier txt Jeu 31 Déc 2020 - 0:39 | |
| Et voici une fonction supplémentaire effectuant l'arrondi sur le nombre de déccimales voulus. Cette fonction est appliquée sur la valeur à 3 dimensions, pour montrer la différence par rapport à la fonction "simple" sans arrondi: - Code:
-
' memo 1 : full_space 1 : bar_both 1 picture 1 : full_space 1 print_target_is 1 font_name 1,"Courier" print "Loyer du mois"+chr$(9)+"150.00" print "electricité"+chr$(9)+"40.00" print "salaire"+chr$(9)+"9200.125"
print "|"+CadrerAGauche$("Loyer du mois",15)+"|"+CadrerADroite$(ForcerDecimales$(150,2),15)+"|" print "|"+CadrerAGauche$("electricité",15)+"|"+CadrerADroite$(ForcerDecimales$(40.2,2),15)+"|" print "|"+CadrerAGauche$("salaire",15)+"|"+CadrerADroite$(ForcerDecimales$(9200.125,2),15)+"|" print "|"+CadrerAGauche$("salaire arrondi",15)+"|"+CadrerADroite$(ForcerDecimalesAvecArrondi$(9200.125,2),15)+"|"
end
fnc CadrerADroite$(txt$,LargeurColonne%) result right$(string$(LargeurColonne%," ") + txt$,LargeurColonne%) end_fnc
fnc CadrerAGauche$(txt$,LargeurColonne%) result left$(txt$+string$(LargeurColonne%," "),LargeurColonne%) end_fnc
fnc ForcerDecimales$(valeur,NombreDecimales%) dim_local v$, p% v$ = str$(valeur) p% = instr(v$,".") if p%>0 then v$ = left$(v$,p%-1)+","+mid$(v$,p%+1,len(v$)) if instr(v$,",")=0 then v$ = v$ + "," v$ = v$ + string$(NombreDecimales%,"0") p% = instr(v$,",") result left$(v$,p%+NombreDecimales%) end_fnc
fnc ForcerDecimalesAvecArrondi$(valeur,NombreDecimales%) dim_local v$, p% v$ = str$(valeur+val("0."+string$(NombreDecimales%,"0")+"5")) p% = instr(v$,".") if p%>0 then v$ = left$(v$,p%-1)+","+mid$(v$,p%+1,len(v$)) if instr(v$,",")=0 then v$ = v$ + "," v$ = v$ + string$(NombreDecimales%,"0") p% = instr(v$,",") result left$(v$,p%+NombreDecimales%) end_fnc
Et ça donne ceci: | |
| | | Contenu sponsorisé
| Sujet: Re: Impression d'un fichier txt | |
| |
| | | | Impression d'un fichier txt | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |