2017-02-16 1 views

Répondre

1

Ajouter à la réponse précédente, vous pouvez essayer ce qui suit

print "\033[7mHello \033[0mWorld" 

\ 033 [7 m signifie pour imprimer en sens inverse. Et, \ 033 [0m signifie revenir à la norme.

1

Si vous voulez dire "est-il possible de le faire", la réponse est "oui". Si vous voulez dire «y a-t-il une bonne façon intégrée de le faire», la réponse est «non».

Qu'est-ce que vous devez faire est:

  1. déterminer la séquence de caractères qui passe à la vidéo « inverse » - stocker les caractères dans une variable chaîne brv (début vidéo inverse, choisissez votre nom si vous n'aime pas le mien).
  2. Déterminer la séquence de caractères qui passe en vidéo «normale» - stockez les caractères dans une variable de chaîne erv (fin de vidéo inverse).
  3. pour votre impression Réorganiser utiliser:

    PRINT COLUMN 1, first_lot_of_data, 
         COLUMN 37, brv, reverse_data, 
         COLUMN 52, erv, 
         COLUMN 56, next_lot_of_data 
    

Il y aura probablement 3 ou 4 caractères nécessaires pour passer. Ces caractères seront comptés par le code de comptage des colonnes dans le rapport.

Différents types de terminaux auront des séquences différentes. De nos jours, il y a de fortes chances que vous ne soyez pas confrontés à la grande variété de terminaux à écran vert qui prévalaient au milieu des années 80. Vous pourriez donc être en mesure de relier vos résultats pour les chaînes brv et erv. OTOH, vous devrez peut-être faire quelques pas de fantaisie pour trouver les séquences correctes pour les différents terminaux à l'exécution. Crier si vous avez besoin de plus d'informations à ce sujet.

Une façon simple qui pourrait vous permettre de découvrir les séquences pertinentes est d'exécuter un programme tel que (cela n'a pas été loin d'un compilateur I4GL - il y a des erreurs probablement syntaxe dans celui-ci):

MAIN 
    DISPLAY "HI" AT 1,1 
    DISPLAY "REVERSE" AT 1,4 ATTRIBUTE(REVERSE) 
    DISPLAY "LO" AT 1, 12 
    SLEEP 2 
END MAIN 

Compile que dans terminfo.4ge et exécuter:

./terminfo.4ge    # So you know what the screen looks like 
./terminfo.4ge > out.file 

Il y a une chance qui ne pas utiliser les attributs d'affichage. Vous verriez que si vous exécutez cat out.file et ne voyez pas le flash inverse, alors nous devons travailler plus fort.

Vous pouvez également regarder l'entrée du terminal dans le fichier termcap ou à partir de l'entrée terminfo. Utilisez infocmp $TERM (avec le type de terminal correct défini dans la variable d'environnement) et recherchez les fonctionnalités smso (entrez le mode Standout) et rmso (mode Standout Out). Déchiffrez-les (j'ai rmso=\E[27m et smso=\E[7m pour un terminal xterm-256color, le \E est ASCII ESC ou \033) et les utilise dans les chaînes brv et erv. Notez que rmso a une longueur de 5 caractères.