Re: Rediriger l'invite de commande dans une zone de texte
Publié : ven. 26/févr./2016 22:46
Si si, il sait le faire!NY152 a écrit :Est-ce PureBasic sait le faire. Aucune idée.
Entraine-toi avec un EditorGadget().
Tu lui colles 3 lignes :
"lundi"
"mardi"
"mercredi"
Le tout est de savoir si tu vas juste modifier la dernière ligne ("mercredi") ou bien si tu auras besoin de modifier les autres lignes.
Mon avis porte sur un tableau de chaînes ou une liste chaînée de chaînes qui servira de mémoire à ton affichage.
La subtilité réside dans le code de fin de ligne qui peut être:
- chr(10)
- chr(13)
- chr(13) + chr(10)
- chr(10) + chr(13)
C'est à vérifier une bonne fois pour toute pour EditorGadget() d'abord. (Après tu regarderas le code de fin de ligne de ta sortie de console)
Tu fais une procédure qui copie le tableau vers l'EditorGadget()
Ex : RefreshList()
Ensuite tu fais 4 fonctions pour gérer ce tableau de chaîne à partir de ta sortie de console.
Ex:
Clear_List() ; vide le tableau
Add_List(a$) ; Ajoute une ligne en fin de liste
Modify_List(a$) ; Change la dernière ligne
Grow_List(a$) ; Ajoute quelquechose en fin de dernière ligne
Là, toute la partie "Tableau vers EditorGadget()" est pensée.
Reste la partie "Console vers Tableau".
Il s'agit d'une lecture caractère par caractère de chaque chaîne de sortie de console (la console est un exemple de programme).
Ça semble lourd mais ce n'est pas bien compliqué.
Chaque caractère est extrait avec Mid(), converti en valeur de code ASCII avec a = Asc().
Par défaut, l'on affiche les caractères donc :
a$ + chr(a)
C'est le cas quand a > 31.
Si c'est un caractère système (a < 32), on suit les quelques règles ASCII ancestrales:
7 émet un signal sonore
9 tabulation
10 va en ligne suivante
12 efface l'écran
13 va en début de ligne
Il reste 3 codes à chercher dans la table ASCII dispo dans l'éditeur PureBasic :
- Aller en ligne précédente
- Aller en colonne précédente (équivalent d'une touche gauche)
- Aller en colonne suivante.
Quelque soit le code ASCII, le résultat pourra être traité par l'une des quatres fonctions Blabla_List() créées plus haut!
Après ça... Rien de plus, tout marchera!