Newsgroup: it.comp.lang.c++
Titolo: Cancellare schermo?

Ciao una domanda banale... ma non per me!
come si fa a cancellare lo schermo in un programma dos?

 come si fa a cancellare lo schermo in un programma dos?
[...]
system("cls"); // Includi <stdlib.h> o <cstdlib>
[...]
--
/* C Ya!
 * TIMWorld: Flash News senza confini per utenti TIM,
 * scrivi a 
TIMWorld-...@yahoogroups.com
 o 
www.timworld.tk
 * Cut "DO NOT DISTURB" to reply */

 ha scritto nel messaggio
news:E1lN9.19766$R45.8...@news2.tin.it...


Sono parzialmente d'accordo.
Chiamare CLS è in effetti assai poco elegante e inefficiente.
Tuttavia, stampare 25 New Lines non è la soluzione adatta, intendi forse
stampare per tutte le 25 righe 80 caratteri spazio (ovviamente
sovrascrivendo) per ognuna: ma anche questa è a mio parere una soluzione
poco praticabile, poco elegante e inefficiente, soprattutto se si ha una
finestra più grande.
Per quanto riguarda gli Interrupt, chiamarli da Windows è una cosa quasi
impossibile, ci ho provato per diverso tempo ma senza successo, ho anche
postato in questo e in altri newsgroup e la risposta è stata sempre la
stessa: impossibile, Windows non te lo permette.
E circa conio.h, il comando C clrscr() è stato introdotto, per quanto ne
sappia io, dalla Borland ai tempi del TurboC e non è presente nelle librerie
conio fornite con gli odierni compilatori C++ non Borland (e forse neanche
più col Borland, ma non ne ho idea).
Non rimane quindi che usare CLS oppure prelevare da un compilatore C la
libreria tcconio (nella quale sono presenti le estensioni introdotte dalla
Borland come il sopra citato clrscr() o gotoxy()) con relativo header e
importarla nei propri sorgenti C++ come unità esterna compilata in C.
Ho provato, e funziona.
Saluti,
Sergio

 stessa: impossibile, Windows non te lo permette.
Sicuro? Era un bel po' di tempo che volevo riprendere l'asm: me ne hai
dato occasione. Purtroppo adesso sto un po' impegnato con l'uni. Se ne
riparla tra qualche anno. Opps, volevo dire "giorno". ^_-
Non vedo pero' perché non dovrebbe funzionare: l'unica cosa che mi
preoccupa e' windows NT: con windows 9x dovrebbe funzionare tutto. Con
WinNT/2k/xp non lo so... con che sistema operativo hai provato?
Ciao,
Salvattore

Se vuoi riprendere con l'asm vuol dire che ti è piaciuto ... :-) ... sono
contento, anche a me è piaciuto molto; l'ho studiato abbastanza bene l'anno
scorso ma l'ho dovuto abbandonare anch'io in favore di altri studi
universitari (sono iscritto al secondo in Informatica); l'ho ripreso un paio
di settimane fa perchè mi andava :-) e perchè volevo scrivere delle
funzioni, da chiamare in C++, per pulire lo schermo e posizionare il cursore
(tipo gotoxy) ma non c'è stato modo di far funzionare gli interrupt
relativi; ho provato con Win2k e XP e ho utilizzato, come compilatore C++,
il VisualC++ 6.
Allora ho postato su questo NG e su quello relativo alla programmazione
sotto Win32, e mi è stato detto appunto che Windows non permette chiamate
dirette agli interrupt, suppongo per motivi di protezione dello spazio di
ogni processo; esiste l'assembler Win32, ma questa è un'altra
storia...leggendo qualcosa e guardando qualche sorgente non mi sembra abbia
molto da spartire con l'assembler "puro".
Quando programmavo in assembler (quello puro, appunto) lo facevo anche sotto
Windows, utilizzando l'Edit ed il mitico masm sotto finestra DOS, e
funzionava tutto a meraviglia ma perchè il masm compilava un vero e proprio
programma DOS a 16 bit, che sotto DOS puro non faceva una grinza, poteva
anzi fare ciò che voleva grazie all'incomparabile potenza dell'assembler,
mentre sotto console DOS di Windows girava tranquillamente (e con
L'ILLUSIONE di poter fare ciò che voleva) in quanto Windows gli emulava
l'ambiente DOS e gli faceva la sua bella copia della Tabella degli Interrupt
che poteva chiamare e modificare senza dare fastidio a nessuno.
Il Visual compila invece un programma Win32, sebbene funzionante sotto
console DOS (e non sotto DOS puro!); il che è totalmente diverso: essendo un
ambiente multi-processo, se permettesse ad ogni processo di giocare a suo
piacimento con gli Interrupt, immaginati che casino succederebbe!
Penso sia questo il problema.
Dovrei compilare il sorgente C++ anch'esso come programma DOS a 16 bit (e
non con Visual perchè non lo permette) solo per far funzionare le istruzioni
assembler, ma ciò mi darebbe tutta una serie di ovvi problemi relativi
soprattutto alla riduzione della WORD di macchina (da 32, appunto, a 16).
Dovrei fare tutta una serie di modifiche, revisioni....ciò mi prenderebbe un
sacco di tempo.....e i miei studi purtroppo non me lo permettono!!!
Beh, ho fatto una discussione veramente lunga e spero di non averti annoiato
(o di non averti costretto ad abbandonare a metà)!
Fammi sapere che ne pensi, magari.....
Buone feste e alla prossima,
saluti,
Sergio B.

 ha scritto nel messaggio
news:3uWN9.26898$R45.1...@news2.tin.it...


Interessante....mi documenterò e chissà, magari butterò giù un altro post...
Intanto grazie e auguri anche a te!!!
Sergio B.

 
ciao magari prova con un semplice clrscr();
includi conio.h poi dipende dal comp che usi se non è in conio includi 
stdlib.h o stdio.h
ciao