Newsgroup: it.comp.lang.c++
Titolo: Pulire lo schermo

In C come si fa a pulire lo schermo DOS?
Esiste una funzione tipo cls?
--
________________________________
Maurizio Arena
ia...@tin.it
mauriz...@tiscalinet.it
Home Page:
http://web.tiscalinet.it/maurizio_arena

 wrote in message
857g77$md4$1...@nslave1.tin.it...
: In C come si fa a pulire lo schermo DOS?
: Esiste una funzione tipo cls?
non ne conosco una portabile, ma puoi farne una semplice semplice:
void clear_screen(){
    _asm {
        push ax           ; salva i registri
        push bx
        push cx
        push dx
        mov  cx, 0        ; angolo in alto a sinistra
        mov  dx, 2479H    ; angolo in basso a destra
        mov  bh, 7        ; attributi normali
        mov  ax, 0600H    ; funzione da chiamare
        int  10h          ; chiamata all'interrupt
        pop  dx
        pop  cx
        pop  bx
        pop  ax           ; ripristina i registri
    }
}
ATTENZIONE! SOLO PER PROGRAMMI DOS 16 bit, compilatori MS/BORLAND
--
____ __         __,_      __  _____
\  _\_ \  ___ _/ / /\  /\/  \/ / _/ It is better to reign in Hell
 \  _ \ \/ _ '/ , |\ VV / / / / _/ Than serve in Heaven.- MILTON
  \_,_/\_\_,_/_/|_| \__/\__/_/_/
      -- the one and only --     e-mail : 
blak...@tiscalinet.it
                                ICQ    : 59394345
The UNIX Guru's View of Sex:
$unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

 Esiste una funzione tipo cls?
L'unico sistema portabile che mi viene in mente sfrutta le sequenze ANSI di
escape. In pratica ti dovrebbe bastare inviare su cout la sequenza di escape
per la pulizia (che dovrebbe essere ESC[2J o ESC[2H, non mi ricordo).
Prova con il programma qui sotto:
#include <iostream>
int main() { std::cout << "\033[2J"; }
Se non ti si compila, aggiungi un "return 0", ma č colpa del tuo
compilatore...
Se non funzionasse, prova a controllare di avere ANSI.SYS installato come
driver. Forse ho cannato la sequenza, se cerchi su Internet dovresti
trovarla subito.
Ciao
-----
Giovanni Bajo
Lead Programmer
Prograph Research S.r.l.
http://www.prograph.it

 wrote in message
857r7b$bts$1...@pinco.nettuno.it...
: > In C come si fa a pulire lo schermo DOS?
[zak]
: #include <iostream>
: int main() { std::cout << "\033[2J"; }
la domanda dice C, va bè che il group è c++...


 Esiste una funzione tipo cls?
No. Puoi inviare una serie di '\n' alla console, utilizzare librerie non
standard come le curses o funzioni non standard fornite da alcuni
compilatori come la clrscr() della Borland e del DJGPP.
EMG

 la domanda dice C, va bè che il group è c++...
Non c'ho neppure fatto caso, davo per scontato che parlasse di C++, visto il
nome del newsgroup


 wrote in message
85cngo$pt4$1...@pinco.nettuno.it...


...


 Scusate, ma il vecchio clrscr() non funziona più?
Veramente non è mai stata presente una funzione del genere né nelle
librerie C standard né in quelle C++.
EMG

Scusate, ma il vecchio clrscr() non funziona più?
Non é un' istruzione standard, é questo il punto. Per esempio quest'
istruzione,tanto comoda sui compilatori dos, su gcc per Linux non si
trova(cosi' come non esiste il file 'conio.h') e quindi bisogna
ricorrere ad altri metodi per la pulizia dello schermo. Uno di questi
potrebbe essere quello di inserire una serie di comandi di fine riga
in modo da cancellare tutto ciò che si trova sullo schermo e poi
riposizionare il cursore sulla prima riga.
Il Ghenio
-----
Proteggeremo il mondo della devastazione!
Uniremo tutti i popoli nella nostra nazione!
Denunceremo i mali della verità e dell'amore,
Estenderemo il nostro potere fino alle stelle.
Jesse!
James!
Team Rocket pronto a partire alla velocità della luce.
Arrendetevi subito oppure preparatevi a combattere.
Miaaaoooo, proprio cosi'!
(Team Rocket)
-----


E quale sarebbe sarebbe l'istruzione per riposizionare il cursore sulla
prima riga??



