Salut a tous,
je veux écrire un nombre en exposant et je ne sais comment faire.
![]()
Salut a tous,
je veux écrire un nombre en exposant et je ne sais comment faire.
![]()
Bonjour !
Merci de préciser...
- quel compilateur ?
- quelle plateforme ?
- mode texte ou graphique ?
Règles du forum
Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
Mes tutoriels et sources Pascal
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]
J'utilise le compilateur TP7 et je veux faire un affichage comme ceci:
C : 1s2 2s2 2p6 3s2, avec les nombres (2,2,6,2) aprês les lettres en exposant.
Le lien proposé par Tuxico ne m'a pas apporté de satisfaction mais merci quand même.![]()
En mode texte, les chiffres 2 et 3 en exposant existent déjà dans la table ASCII mais pas les autres. Donc, il faut les dessiner toi-même, ce qui n'est pas très difficile :
1. L'affichage par défaut utilise généralement une matrice de caractères de 9 pixels de large sur 16 pixels de haut. Il faut créer, par caractère à redessiner, une matrice de bits. Par exemple, le 4 en exposant :
L'astuce est que 8 bits par ligne suffisent, le 9ème étant dessiné par le système par simple copie du 8ème. Donc, pour chaque caractère à redessiner, 16 octets suffisent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 ....XX.. ...X.X.. ..X..X.. .XXXXX.. .....X.. .....X.. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........
Pour les 7 caractères à redessiner, tu crées donc un tableau de 7 * 16 octets.
2. Il faut ensuite décider quels caractères de la table ASCII tu vas remplacer par les tiens (choisis 7 caractères qui se suivent).
Il faut exécuter la sous-fonction 10h de la fonction 11h de l'interruption vidéo 10h avec comme paramètres :
BH = nombre de lignes par caractère (16)
BL = 0
CX = nombre de caractères redessinés (7)
DX = code ASCII du 1er caractère redessiné
ES:BP = adresse de ton tableau
En cas de besoin, tu disposes d'un exemple ici (un jeu d'échecs dont les caractères ASCII ont été redessinés pour représenter les pièces).
Règles du forum
Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
Mes tutoriels et sources Pascal
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]
Ne pas oublier
1- sauver la table de caractère
2- effectuer les changements ci-dessus
3-de restituer la table de ceractère en fin d'execution
Remarque : ces redéfinissions sont en général à refaire si on change de mode graphique en cours d'execution
si on redéfini plusieurs caractères, il est preferable ( + rapide ) de les avoir contigus si cela est possible
Partager