Newsgroup: it.comp.lang.c++
Titolo: aiuto programmazione Linux mandrake

Non so se questo è il ng corretto ma chiedevo se qualcuno sa darmi lumi
sull'istruzione linux per cancellare lo schermo.
grazie in anticipo e  mi scuso dell'intrusione.
rob...@tin.it

 sull'istruzione linux per cancellare lo schermo.
#include <iostream>
void ClearScreen( void ) {
        for( int i=0; i<50; ++i ) std::cout << endl;
}
-- 
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.

 ha scritto nel messaggio
news:IrkJb.19774$Jw2...@tornado.fastwebnet.it...


 ha scritto nel messaggio
news:IrkJb.19774$Jw2...@tornado.fastwebnet.it...


roccia67 wrote:
[ cut ]
Scusate, non sarebbe std::endl ?

 E se lo skermo è + di 50 righe?
Incrementi il valor massimo del ciclo for( ).
Ciao.


 Scusate, non sarebbe std::endl ?
Sì, hai ragione.
Grazie.


A sto punto meglio
void ClearScreen( int num ) {
        for( int i=0; i<num; ++i )
            std::cout << endl;
}
-- 


 }
Pessima idea, perché presupponi che il cliente di ClearScreen sappia quante 
sono le linee sullo schermo (perchè dovrebbe saperlo?). Meglio non far 
trasparire questi dettagli al chiamante.
Meglio:
void ClearScreen( void ) {
 
         for( int i=0; i<TERMINAL_LINES; ++i )
             std::cout << endl;
 
}
e il simbolo "TERMINAL_LINES" lo inizializzi da qualche parte a compile-tme 
(const int TERMINAL_LINES = 50) o a runtime.


 
linux... la funzione va bene, però è brutto iniziare un programma
con il testo in alto e vederselo mandare giù al colpo successivo.
io avevo risolto con un banale system("clear"); anche se non è c++
era una soluzione "pulita".

 Pessima idea, ....
Pessima idee in generale tutte quelle che sono uscite da questo thread.
La domanda diceva: "su linux", quindi e' OT e l'OP dovrebbe rivolgersi a NG
specifici dove sapranno (e vorranno) dargli una risposta molto piu' valida.
Il for che cancella 50 righe e' stata tirata fuori in quanto apparentemente
portabile, ma... nemmeno molto in quanto non si puo' sapere di quante righe
e' lo schermo e/o se... c'e' un buffer con scrolling o altro...  piu' altri
problemi.
Ogni sistema, shell, o altro avra' modi diversi per ottenere il risultato
voluto nei migliori dei modi. Consiglio all'OP di postare la domanda su di
un NG di programmazione per linux.
Tommy

 altri problemi.
Scusa, ma la soluzione è portabile. Il numero di righe è un dettaglio del 
porting. Se uno sta programmando in C++ "standard" e non vuole impelagarsi 
nella gestione della console/shell del sistema operativo ospite, utilizzerà 
questa soluzione.
In ogni caso, abbiamo mantenuto il topic. ;-)


 In ogni caso, abbiamo mantenuto il topic. ;-)
ok, se a te piace come soluzione allora siamo contenti tutti....
se ad esempio hai una "console" che puoi ridimensionare?
che prima puo' essere 10 righe, poi 30 poi la allunghi ancora 80 e poi la
rimetti a 30 perche' vuoi avere anche un'altra finestra...?!?
Cosa cancelli 500 righe sempre per sicurezza? E' una soluzione... a mio
avviso non ottimale pero'!
E' se la finestra avesse scrolling e volessi svuotare anche quello? (ad
esempio)....
Volevo solo alzare il punto su queste questioni.
A parte questo, come ti ho detto e' portabile.
Tommy

 Volevo solo alzare il punto su queste questioni.
Non sono questioni di cui si deve occupare l'applicazione, ragion per cui è 
errato esporre questi dettagli al livello del client della funzione. Se poi 
vuoi farlo, fallo pure...
Ciao.


// Console.hpp
#ifndef CONSOLE_HPP_
#define CONSOLE_HPP_
#include "Define.hpp"
N_BEG
class Console
{
 public:
  Console(){};
  ~Console(){};
  void clear();
 private:
}
void Console::clear()
{
 #ifdef WIN32
  system("cls");
 #elifdef __GNU__
 #endif
}
Che ne dite???
Cosi una basta che richiami il metodo clear() :)


 }
FAT-TI PA-GA-RE


????????


 Cosi una basta che richiami il metodo clear() :)
Console::clear() vorrai dire.
Comunque hai centrato il problema, con il piccolo particolare che, a questo 
punto, avresti potuto usare tranquillamente le api console di Win32 (ma qui 
sfioriamo l'OT).


Tin Toy wrote:

IN-QUESTO-CASO-IL-GRADIENTE-DI-CONOSCENZA-È-TROPPO-BASSO
PER-ESSER-PAGATO-IN-MANIERA-REMUNERATIVA. CONVIENE-FARSI
PAGARE-SOLO-LADDOVE-LA-DIFFERENZA-DI-COMPETENZE-È-MOLTO-
ELEVATA-E-SUFFICIENTE-A-NON-POTER-CRITICARE-IL-PROPRIO-
LAVORO.
;-)


 LAVORO.
Tu ci scherzi, ma io dico sul serio...
non è questione di gradienti, è proprio questione
di principio: se ti chiedono "che cos'è questo qui"
è giusto rispondere e spiegare, ma se ti chiedono
"voglio una cosa che faccia questo e questo" allora
non ci sono cazzi: ti han chiesto di lavorare per
loro (qualche volta, paraculamente, AL POSTO LORO...)
e quindi prima passare alla cassa, prego.
Non importa che sia una cosa semplice o complicata,
importa che te l'abbiano chiesta già pronta.
E il gradiente di conoscenza, quando c'è, VA SFRUTTATO
SEMPRE :-)
O non crederai mica che il commercialista che fa
un 740 lo faccia gratis perchè "tanto è una cazzata
e lo saprebbe fare chiunque..."? ;-)

 e quindi prima passare alla cassa, prego.
P.S: ovviamente mi rendo conto che non è possibile
farsi pagare in un newsgroup, ci mancherebbe...
però il punto resta: dare risposte (gratis) a domande
simili io lo vedo come uno "svendere" una competenza,
bene o male acquisita con tempo e fatica, che invece
potrebbe (e dovrebbe) essere messa a frutto. A vantaggio
di gente che nel migliore dei casi non ne farà niente
e nel peggiore la spaccerà per propria. :-(
Insomma diffondere la conoscenza mi sta bene, ma
lavorare gratis NO... e pure vederlo fare mi gusta poco.
Forse perchè l'ho fatto anch'io in passato e ora che mi
servirebbe di farmi pagare per quello che faccio me ne pento.

 SEMPRE :-)
Sei un po' troppo attaccato al soldo, amico mio. ;-)
Ciao.


 simili io lo vedo come uno "svendere" una competenza,
Hai una percezione utilitaristica della realtà. 
Che non è detto che corrisponda alla realtà così come è.
Mi spiace solo che nasca da una brutta esperienza.


 ospite.
su, questo possiamo anche essere d'accordo....
Tommy

 Sei un po' troppo attaccato al soldo, amico mio. ;-)
Attaccato al soldo? Forse, ma aspetta di andare a
vivere da solo prima di giudicarmi :-)

 vivere da solo prima di giudicarmi :-)
Veramente vivo da solo da diversi anni. ;-)


 su, questo possiamo anche essere d'accordo....
Ecco, quindi a che pro il tuo messaggio?
Senza offesa.


 Senza offesa.
Ci mancherebbe altro.
Tommy

 che almeno capisca cosa volevo dire ..... 
Ti sto per dire una cosa che ti stupirà: la comprensibilità è a carico del 
mittente del messaggio. ;-)


 mittente del messaggio. ;-)
...o del numero di neuroni del ricevitore.
Vediamo di finirla qui.... e' inulte proseguire e francamente mi hai
annoiato.
Tommy

 ...o del numero di neuroni del ricevitore.
Scommetto che una biopsia dimostrerebbe la tua vicinanza genetica con i 
parameci... però siccome sono un animalista convinto, evito di effettuare 
questo tipo di verifica, demandando al folto pubblico la verifica puntuale 
di quanto affermato. <g>


 verifica puntuale di quanto affermato
Credo tu sia l'unico interessato a questa stuppidaggine e.... oramai anche a
questo thread inutile ed a questo dibattito sentito.
Tommy

 sull'istruzione linux per cancellare lo schermo.
Usa la forza, Luke.
Guarda i sorgenti di "clear".

 system("dir C:");
Tommy, io capisco che tu cerchi di usare qualsiasi cosa per giustificare i 
tuoi autoerotismi verbali, ma confrontare "system" (che, per inteso, è 
specifica del C e non del C++) con la semantica di "std::cout << std::endl" 
mi sembra una forzatura alquanto bislacca.
Ripeto: secondo me hai le idee perlomeno approssimate su concetti come 
"porting" o anche sulla semplice progettazione di software. Il che di per 
sé non è un problema, se almeno tu lo riconoscessi.
Chiudo qui e ti lascio alle tue "soluzioni specifiche".
Bye.


 Quindi il codice è portabile.
Guarda che compilabile ovunque != portabile.
Cmq tommy è una delle persone + esperte che conosca e nn parla a vanvera


 Cmq tommy è una delle persone + esperte che conosca e nn parla a vanvera
Su questo non posso pronunciarmi. Posso solo far riflettere sul fatto che ha 
emesso un giudizio ridondante rispetto alla mia risposta. Se il buon giorno 
si vede dal mattino...
Ciao.


 Chiudo qui e ti lascio alle tue "soluzioni specifiche".
magari.... speriamo questa sia la volta buona che *chiudi" e non dici piu'
eresie o insulti.
Se poi vuoi continuare continua pure in privato dove non annoiamo gli altri
e dovo potro' anche io, come te, essere piu' "esplicito" in tutti i
sensi....
Tommy

E quello che ho cercato di spiegargli prima.
Cmq meglio chiudere qui!
