mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: operatore ->

Salve a tutti,
Diciamo che ho un operatore definito cosi':
T* operator-> () const
che agisce su un iteratore di una mappa hash
(
http://doc.trolltech.com/4.6/qhash-iterator.html
) e restituisce un 
puntatore al valore.
Supponiamo che il valore sia intero; questo funziona:
int* valPtr = i.operator->();
ma c'e' un modo piu' compatto di scriverlo, senza la parola "operator"?
Thx,
Pleg

 ma c'e' un modo piu' compatto di scriverlo, senza la parola "operator"?
No.
Ma non ha senso definire un operatore "->" che rende un puntatore a un 
oggetto non strutturato. A tale scopo, definisci l'operatore "&" o 
l'operatore "*", che rende un reference.
L'operatore "->" ha senso usarlo solamente per ottenere un puntatore a 
un oggetto strutturato (struct, union, o class), e contestualmente 
accedere a un campo di tale oggetto.
Nella libreria QT, tale operatore e' stato messo in quanto si tratta di 
un template, per cui il tipo puntato potrebbe essere strutturato.
Per esempio:
#include <iostream>
using namespace std;
struct S {
   pair<int, double> pid;
   pair<int, double>* operator-> () {
     cout << "operator->" << endl; return &pid;
   }
};
void main() {
   S s;
   s.pid.first = 234;
   s.pid.second = 3.456;
   cout << s->first << endl;
   cout << s->second << endl;
}
-- 
Carlo Milanesi
http://digilander.libero.it/carlmila

Ah ok grazie, ecco perche' mi sembrava strano :)
Pleg
Newsgroup: it.comp.lang.c++
Titolo: Inner class anonime in c++

Una persona di mia conoscenza mi ha chiesto se esistevano le classi 
anonime in c++.
Lui in java spesso fa cose del tipo:
Oggetto a = new Oggetto() { int getA() { return 1; } };
Gli ho detto che in c++ non esiste nulla di simile, ma non vorrei 
avergli detto una fesseria.

 Gli ho detto che in c++ non esiste nulla di simile, [...]
E' così. Con i template si può fare qualcosa (Boost.Lambda), ma i 
risultati non sono soddisfacenti (debugging difficoltoso, ecc...).
In futuro le cose potrebbero cambiare (C++0x).
Kiuhnm


Bisogna anche tenere presente che in Java non esistono i puntatori a
funzione (membro) e quindi per implementare meccanismi di callback e'
indispensabile avere oggetti per le mani.
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: Mail con VC++

Devo creare un applicazione che elabori dei dati che gli vengono mandati
attraverso un attach in un messaggio di posta elettronica e restituisca un
risultato all'utente sempre attraverso la posta elettronica.
Qualcuno sa dirmi come faccio a gestire la e-mail in VC++? Ci sono classi
standard o devo buttarmi su altre librerie?

...

Trovi del materiale intessante in
http://www.codeguru.com/internet/index.shtml
Ciao
Terenzio

Grazie, Ho trovato cose molto utili.
Newsgroup: it.comp.lang.c++
Titolo: Errore di linkaggio...

Salve,
non sono riuscito a capire dove sta l´errore...
Ho creato un file header con la seguente classe:
/* File vector.h */
class line
{
  public:
 static int lineType;
 line(void); /* costruttore */
/* altre dichiarazioni ... */
};
e poi in un file separato vector.cpp ho definito il costruttore, il quale va
ad agire sulla variabile statica della mia classe.
/* File vector.cpp */
#include "vector.h"
line::line(void)
{
    lineType = 1;
}
Quando vado a fare il build, ottengo il seguente errore:
vector.obj : error LNK2001: unresolved external symbol "public: static int
line::lineType".
Va bene...datemi pure della "capra", ma arrivo dal C e non ho capito,
perche´ lineType e´ un simbolo esterno per il linker C++, visto che ho
incluso l´header vector.h dove vi e´ definito il dato membro "colpevole".
La "capra" maurusPiKkIAtElLo

 wrote in message
8ast0h$1s5$1...@newstoo.ericsson.se...

Quando hai scritto "static int lineType" nel file vector.h, nella class
line,
non hai creato la variabile lineType, ma e' come se avessi usato extern.
In un altro file (vector.cpp) devi aggiungere :
int line::lineType;
Questa volta senza static davanti. In questo modo crei la variabile
lineType.
Questa istruzione deve ovviamente stare in un .cpp e NON in un .h
perche' altrimenti avresti l'errore del linker di definizione multipla,
perche' il file .h potrebbe essere incluso e quindi compilato piu' di una
volta.
Questo spiega anche perche' la dichiarazione di una variabile static
all'interno di
una dichiarazione di classe non costruisce la variabile
(si avrebbe errore di linker di simbolo ridefinito per ogni volta che
includi il .h)
Non sei una capra, ma neanche una volpe.

Grazie per l´esauriente risposta.
Il "muflone" MaurusPickiatello.



 incluso l´header vector.h dove vi e´ definito il dato membro "colpevole".
Perche` (giustamente!) nel tuo vector.h non hai DEFINITO questa
variabile (membro statico della class line), bensi` l'hai solamente
DICHIARATA.  Forse ti confonde il fatto che la DICHIARAZIONE del
dato e` parte della DEFINIZIONE di un tipo (la classe)?
A fronte di questa DICHIARAZIONE del dato, devi avere da qualche
parte nel tuo programma (in un file .cpp) UNA E UNA SOLA
*DEFINIZIONE*, ad esempio aggiungi in vector.cpp la riga:
    int line::lineType;
Alex
Newsgroup: it.comp.lang.c++
Titolo: Un dubbio sulla classe set

Salve a tutti,
non capisco quale dovrebbe essere il procedimento giusto per fare questa 
cosa:
eseguo una find() su un set di oggetti, questa mi ritorna un 
const_iterator; se io volessi cambiare alcune cose dell'oggetto trovato 
come dovrei fare? Forse devo prima fare la delete dell'oggetto dal set 
eppoi fare una insert di un nuovo oggetto? (che poi sarebbe quello 
vecchio modificato)
Grazie, Alberto


Esatto. Il problema e' che gli oggetti contenuti nel set fanno anche da
chiave e non c'e' modo di garantire che la tua modifica non alteri
l'ordinamento degli elementi, invalidando cosi' l'invariante del set.
Se e' una cosa che devi fare spesso valuta se non sostituire il tuo set
con una map. Questo ha pero' lo svantaggio che devi probabilmente
duplicare i membri che usi per chiave e ovviamente non serve se le tue
modifiche coinvolgono anche questi.
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: Msgbox in C++


***PRINCIPIANTE CON ESPERIENZE IN VB5***

Come faccio per visualizzare una Msgbox (così si chiama in VB
) in Visual C++?

                                                                   
Grazie.

                                                                   

fra.an...@ntt.it



...
    ***PRINCIPIANTE CON ESPERIENZE IN VB5***
    Come faccio per visualizzare una Msgbox (cosě si chiama in VB ) in Visual
C++?
    L'API che ti serve si chiama MessageBox, e prende tanti parametri, di
solito
    la chiamerai cosi`:
        ::MessageBox(0, "Testo", "Titolo", MB_OK);
    Se sei in MFC, hai vari modi "facilitati", tipo AfxMessageBox("Testo").
    Alex

Newsgroup: it.comp.lang.c++
Titolo: Problema con funzioni accept e recv nei socket

Ciao a tutti. Ormai è da un po' di tempo che sto lavorando ad un
programma che prevede l'utilizzo dei socket, e mi sono accorto di una
cosa: utilizzando le funzione accept() e recv() e lasciando poi
inattivo il programma per qualche secondo, l'applicazione viene
considerata bloccata (intendo che premendo CTRL+ALT+CANC viene
visualizzato il messaggio "nome_mio_prgr (Bloccato)").
Il problema stà nel fatto che il programma è completamente
funzionante!?!?!?
A qualcuno è già successo?
Come posso evitare questo problema?
tnks

Per il sistema operativo il tuo programma e' bloccato perche' non risponde a
nessun messaggio. Cio' semplicemente significa che non chiami le funzioni
della coda dei messaggi (GetMessage, PeekMessage) ma che sei in un ciclo di
elaborazione o simili.
Nel tuo caso sei in una recv o accept usate probabilmente in modalita'
sincrona.
Ciao
Antonio Donatiello
Newsgroup: it.comp.lang.c++
Titolo: cattura video

salve,
vorrei sapere come si fa ad acquisire una carattere che e' presente in una
data zona dello schermo.
esiste un sistema per cui io possa catturare un parte di video e leggerla
come carattereri ?
uso il Borland 3.0 (dos).C/C++
grazie per l'attenzione

Se il programma sta girando in modalità grafica, è praticamente impossibile,
se invece sta girando in modalità testo, e sufficente leggere il contenuto
della memoria video dall'indirizzo del testo 0xB800.
Attenzione un byte è il carattere e uno l'attributo (o vice versa)
byebyte
Newsgroup: it.comp.lang.c++
Titolo: Decomposizione Modulare

Sono ore che cerco di sviluppare una piccola applicazione attraverso una
decomposizione modulare del codice.
Fino ad ora infatti avevo sempre utilizzato un unico modulo perchè per i
miei fini non nè erano necessari di più.
Ho pensato che per decomporre in moduli dovevo creare un progetto in cui
inserirli e così ho fatto: in un modulo ho messo la classe che ho
definito con tutti i metodi relativi e il codice riguardante la definizione
di tali metodi, in un altro ho messo la procedura principale.
MAIN.CPP       Primo mod.
MODULO1.CPP   Secondo mod.
Premetto che MODULO1.CPP compila perfettamente.
Ora ciò che accade è la seguente cosa: avendo def. nel mod. una classe che
ho chiamato Timer quando nel main.cpp definisco un oggetto appartenente a
tale classe il compilatore mi dà il seguente errore:
----Undefinite Symbol 'Timer'-----
Ho provato a definire la classe Timer come extern ma non ha funzionato,poi
ho pensato che dovevo includere il modulo attraverso la direttiva
include,però riflettendoci ho concluso che se avessi avuto 100 moduli avrei
dovuto INCLUDERE 100 MODULI, il che non mi sembrava propio la cosa giusta,
da
fare.
Tuttavia ci ho provato e stavolta il tutto compilava bene così mi sono
"azzardato" ad eseguirlo ed allora mi e stato presentato un nuovo messaggio
d'errore:
void Timer::Start() defined in module MAIN.CPP is duplicate in module
MODULO1.CPP
Il messaggio ,se ho capito bene, mi dice che se includo nel MAIN.cpp il
modulo le definizioni della classe e dei metodi diventano rindondanti,perciò
non devo includere il modulo nel MAIN.CPP.
MA ALLORA COSA DEVO FARE PER SPIEGARE A STO' C.... DI Complitatore che deve
cercare la casse Timer nel modulo ?
Il compilatore che uso è il Borland  C++  ver. 3.0.
Grazie a tutti quelli che risponderanno.
Fixxxer
...despite of my rage I'm still just a rat in a cage.....
Reply at:
 
dias...@hotmail.com
 
unde...@yahoo.com

...
    [snip]
per le classi come per qualsiasi altra cosa, devi tenere le
*dichiarazioni* in un file .h, che viene incluso da tutti e
soli i moduli a cui serve (o perche` _implementano_ quelle
dichiarazioni, o perche` ne _fanno uso_); le *definizioni*
devono normalmente essere "in un solo posto in tutto il
progetto" ("One-Definition Rule" -- ci sono eccezioni, per
cose come gli inline), che e` normalmente un sorgente .CPP.
Quindi ad esempio:
-> pippo.h
class pippo {
public:
    void buh();
};
-> main.cpp
#include "pippo.h"
int main()
{
    pippo pippone;
    pippone.buh();
    return 0;
}
-> pippo.cpp
#include <iostream>
#include "pippo.h"
void pippo::buh() {
    cout << "BUH!]n";
}
Alex
Newsgroup: it.comp.lang.c++
Titolo: aiuto

sto provando a imparare sul serio il c++ con app learn c++ pro
(solo learning)
sono arrivato a buon punto (polimorfismo)
mi sono un po rotto i coglioni è il caso di non mollare e ottenere 
certificato?


Il gruppo e' praticamente morto ma improvvisamente
arriva il contributo di un fine umorista.
 
Se i coglioni sono tanto rotti rinuncia, se poco continua.


Ma come? Se ti rompi di cog***oni ed insisti ti danno un certificato?
 
tipo:
Si certifica che jak si è veramente rotto di cog***oni.
 
Fico!

On 10/05/2017 09:01, jak wrote:
 > Ma come? Se ti rompi di cog***oni ed insisti ti danno un certificato?
 > tipo:
 > Si certifica che jak si è veramente rotto di cog***oni.
 > Fico!
 
Forse, se lo fa presente, alla fine nel certificato
ci scrivono "...nonostante si sia rotto i coglioni"
come nota di merito.
 
Se valesse sempre credo che io sarei un pluridecorato.
 

Molla.
Newsgroup: it.comp.lang.c++
Titolo: Come si cancella una parte di un file?

Prima di tutto mi presento, sono Lorenzo ho 20 anni e
studio Ingegneria a Firenze.
Mi sto avvicinando al C++ in vista dell'esame di informatica,
al quale dovro' portare un programma.
Ne sto scrivendo uno che cataloga dei prodotti salvando
nome e prezzo in un file con la seguente procedura:
    FILE *dati;
    dati = fopen("DATI.DAT", "a");
    fprintf(dati, "%40s\t%5d\n",p0,p1);
dove p0 e' il nome e p1 il prezzo.
Il risultato e' questo:
                                 primo!!     1111
 secondo secondo secondo secondo secondo     2222
                                     tre     3000
Per quanto riguarda l'inserimento di prodotti nel file tutto OK,
il problema sorge quando voglio eliminare uno di questi :-((
Sui libri che ho letto si parla solo di modifica (write e append)
ma non riesco a trovare ninte che mi elimini una intera linea
del file :-((
Spero che qualcuno abbia qualcosa da dirmi in riguardo, perche'
sono 2 giorni che ci perdo la testa!!!
Ciao e grazie.
Lorenzo - Firenze
ICQ 25093807
www.geocities.com/SunsetStrip/Backstage/9818/

 del file :-((
In generale non si elimina fisicamente il record dal file, ogni
record ha associato un flag che ne indica la validita` oppure
uno stato di cancellazione logica.
Quando si deve fare una nuova inserzione si puo` riutilizzare
lo spazio di un record cancellato logicamente (ma ancora presente
sul file) oppure mettere il record in una nuova parte del file.
La cancellazione fisica viene eseguita solo in caso di riorganizzazione
del file.
Paolo
-- 
------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
 
http://www.cli.di.unipi.it/~marotta
------------------------------------------------

 del file :-((
Perche' non c'e' niente (di standard).  Una possibilita' e' quella di
usare records di lunghezza costante, di leggere in memoria i records
dopo quello da distruggere, di riposizionarsi con fseek, scrivere e
troncare.  Un'altra e' quella di usare un byte nel record che dica
"record distrutto", e riscrivere solo quel byte (quel record).  Come
dice la FAQ list di comp.lang.c (rtfm.mit.edu:/pub/usenet/comp.lang.c/*):
19.14:  How can I insert or delete a line (or record) in the middle of a
        file?
A:      Short of rewriting the file, you probably can't.  The usual
        solution is simply to rewrite the file.  (Instead of deleting
        records, you might consider simply marking them as deleted, to
        avoid rewriting.)  Another possibility, of course, is to use a
        database instead of a flat file.  See also questions 12.30 and
        19.13.
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

 del file :-((
Ti conviene copiare tutti i record che ti interessa mantenere su di un
altro file, cancellare il primo e infine rinominare il secondo come il
primo. Oppure potresti fare come fa il DBIII: marchi in qualche modo il
record come cancellato e quindi lo ignori in tutte le operazioni.
EMG
Newsgroup: it.comp.lang.c++
Titolo: DEV-C++ utilizzo della CPU

Salve a tutti!
Ho iniziato ad usare da poco DEV-C++ ed ho notato che anche con la sola 
applicazione attiva (senza compilazione, debug, ecc .in corso) l'utilizzo 
della cpu rasenta sempre il 50%! Come mai? Avete qualche idea?
P.S. Ho un pc con PIV a 3.2 gz e 1gb di ram.
Grazie
Maximix 

Maximix ha scritto:

Ho l'impressione che dev-c++ dia problemi (da post precedenti) perche' 
non provi mingw-developer-studio?


il mio devcpp (4.9.9.2) non da questo problema, non so che versione tu abbia o cosa ci faccia.
Uso devcpp da parecchi anni e non ho mai avuto questo problema.
Prova a reinstallarlo :-)
Controlla che non ti dia questo problema il tuo sistema anche con altre applicazioni, ciao

della cpu rasenta sempre il 50%! Come mai? Avete qualche idea?
Il processore è HyperThreading?
In ogni caso, il DevC++ ha diversi problemi ed uno di questi (che ho
riscontrato anch'io) è che in determinate circostanze manda la CPU a
palla.  Purtroppo questo sistema ha diversi problemi (specialmente con
il debug) che andrebbero risolti.

 il debug) che andrebbero risolti.
Ho capito, grazie a tutti!
Maximix 

 provi mingw-developer-studio?
Ho provato ma mi succede una cosa strana....non compila ne debugga! Intendo 
dire che i menų che permettono di compilare, ad esempio, rimangono sempre 
inattivi anche con un sorgente in c presente nell'editor! Ho scaricato e 
installato la versione da 126mb, quindi la pių completa...non capisco!
Cosa ne pensate?
Saluti
Maximix 


Quoto in pieno!
Con il debugger è spesso facile che vada in panne... ed è lento!
  ciao, rz
-- 
http://mrzac.altervista.org

Newsgroup: it.comp.lang.c++
Titolo: override del tipo enum

io ho una classe del genere:
class CA
{
    class CError
    {
        enum Error_ID{FILE_ERROR, MEMORY_ERROR};
    }
};
la classe errore è il tipo delle eccezioni lanciate dalla classe CA.
quello che volgio fare è poter aggiungere elementi a CError nelle
sottoclassi di CA per gestire nuovi errori, ovvero:
class CB : CA
{
    enum CError::Error_ID{FILE_ERROR, MEMORY_ERROR, YET_ANOTHER_ERROR};
}
Anche se può sembrare strano "questo" codice funziona con il compilatore di
VC++,
ma g++ mi dice:":-P", insomma non ne vuole sapere e sono stato costretto a
dichiarare in CD una sottoclasse di CError (CBError), so che adesso tutti i
catch(CError) non mi catturano gli errori generati da CB perchè sono di tipo
CBError.
suggerimenti per evitare di aggiungere CBError e di cabiare i try/catch ??
grazie
claudio.
solo che adesso
PS.
ora che si penso non sono sivuro di aver provato a fare CError:Error_ID, man
non credo che funzioni con g++, con microsoft funziona u po' tutto, o per lo
meno compila a modo suo.
--
---------------------------------------------------------------------------
Looking for someone
I guess I'm doing that
--------------------------------------------------------------------------
genesis - trespass

 ha scritto nel messaggio
news:JzZ38.1154$761....@twister1.libero.it...
: io ho una classe del genere:

: --------------------------------------------------------------------------
-
: Looking for someone

:
:
:
:
:
Newsgroup: it.comp.lang.c++
Titolo: void *

Ho visto molte variabili (x es. HWND) che sono puntatori a void. Che senso
ha dire "puntatore a nulla"? Grazie per i chiarimenti


"Il puntatore void*, chiamato anche puntatore generico, permette al
programmatore di assegnare ad esso l'indirizzo di un oggetto di qualsiasi
tipo.
In altre parole, il puntatore di tipo void rappresenta un tipo di puntatore
che porta con se' *solamente* l'informazione relativa al valore di un
indirizzo *senza* quella associata al tipo puntato.
Non e' possibile assegnare ad un puntatore non di tipo void* l'indirizzo
contenuto in un puntatore di tipo void* senza passare attraverso
un'operazione di casting esplicito, che indichi al compilatore il modo in
cui tale indirizzo deve essere interpretato."
--
Leo-Panda
email: 
leo-...@libero.it
ICQ#: 105550412

Ok, grazie di avermi chiarito il dubbio. Ciao
"Leo-Panda" <leo-...@ANTI.libero.punto.it.SPAM> ha scritto nel messaggio
news:ga9r6.3392$Z%1.6...@news.infostrada.it...


 cui tale indirizzo deve essere interpretato."
Credo che un cast esplicito sia richiesto solo in C. In C++ dovrebbe esserci
un cast implicito da void a qualunque altro tipo.
Bob Rock


 Bob Rock
Scusa, in C avviene un cast implicito, mentre in C++ č necessario forzare il
tipo.



Semmai e' piu' probabile il contrario!
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556
Newsgroup: it.comp.lang.c++
Titolo: c++ builder

è per caso uscita di recente qualche rivista con dentro la versione
1.0 del builder c++ ?
tnks

Ciao,
    di recente proprio no (almeno che io sappia ma visto che le seguo quasi
tutte....).
La 1.0 è stata distribuita mesi fa ed ultimamente si trovava C++Builder 4
trial in giro.
A presto :-)
Marco Abis
http://www.programmazione.it
  il sito Italiano di riferimento per IT
ab...@programmazione.it



uno dei tanti ... ma di parecchi mesi fa e':
Computer Programming n. 76 - Gennaio 1999
con la versione 1 standard ...

 wrote in message
378f5df...@194.243.154.18...


1.0 del builder c++ ?
inter.net
 (2 CD - 8000)
di Luglio/Agosto 1999
-- 
Roberto Gerola
Email: 
robert...@penguinpowered.com
WWW: 
http://www.penguinpowered.com/~The_Cpp_Compass

1.0 del builder c++ ?
Inter.net di Luglio/Agosto 1999
Ciao

 tnks



Ciao a tutti.
Qualcuno di voi sa mica dirmi dove posso trovare una o piu'
classi per gestire i socket in C++ che non si appoggino ad
altre librerie (MFC o altro) ?
Vorrei evitare di utilizzare le MFC o le VCL in modo da
mantenere il codice il piu' standard e portabile possibile.
Ho trovato la libreria SFL della iMatix (
http://www.imatix.com/
)
con sorgenti ma e' in puro C mentre io vorrei qualcosa
nella filosofia OOP.
Grazie.
Buona giornata a tutti.
        Andrea

 altre librerie (MFC o altro) ?
Io tempo fa avevo downloadato una libreria (per ambiente Unix)
chiamata "libsocket++", su richiesta di uno dei miei utenti.
Personalmente non l'ho mai adoperata, e non posso quindi dare
giudizi.
Apri la URL 
http://www.desy.de/user/projects/C++/Projects.html
 , e
segui il link SOCKET++.
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it


Si, Inter.net luglio-agosto 1999 (N.48).

Anche Computer Magazine di Aprile '99
Newsgroup: it.comp.lang.c++
Titolo: Conversione numeri in stringa

Ciao, mi sapreste consigliare qualche buon metodo per convertire
interi o float in std::string?
E' possibile ottenere una stringa con tanto di separatori delle
migliaia?
float f = 100000000.4547;
std::string str;
...Funzione_magica...
ora str.c_str() == "100.000.000.4547"
Uso Visual C++ 6 ed MFC, ma preferirei fare il tutto con le
std::string.
Grazie, ciao e buon lavoro, Davide.

 ha scritto nel messaggio
news:a2bdc23f.01071...@posting.google.com...


 ha scritto nel messaggio
news:a2bdc23f.01071...@posting.google.com...

Piccolo esempio:
#include <sstream>
#include <iostream>
#include <locale>
class My_punct : public std::numpunct<char>
{
  public:
    typedef char char_type;
    typedef std::string string_type;
    explicit My_punct(std::size_t r = 0)
    : std::numpunct<char>(r) { }
  protected:
    char do_decimal_point() const { return '.'; }
    char do_thousands_sep() const { return ','; }
    std::string do_grouping() const { return "\003"; }
};
main()
{
  std::locale my_loc(std::locale(), new My_punct);
  std::ostringstream os;
  os.imbue(my_loc);
  long f = 10043454547;
  os << f;
  std::cout << "f = " << os.str() << '\n';
}
N.B. per un reference sul locale puoi cercare sulla homepage di Stroustrup.
Saluti   Manlio Perillo

Newsgroup: it.comp.lang.c++
Titolo: HelpMe!

Come e' possibile nascondere l'input sullo schermo?
Cioe' dovrei fare un programma che 
scrive login:
prende l'input normalmente
scrive password:
prende l'input senza mostrare su video cio' che viene scritto.
Grazie, :-)

Anche se mi sembra un quesito OT
non saprei su che forum indirizzarti;
quindi ti rispondo:
***********************************************
Header File
conio.h
Category
Console I/O Routines
Syntax
#include <conio.h>
char *getpass(const char *prompt);
Description
Reads a password.
getpass reads a password from the system console after prompting with the
null-terminated string prompt and disabling the echo. A pointer is returned
to a null-terminated string of up to eight characters (not counting the
null-terminator).

char *getpass(const char *prompt);
Sotto linux, bisogna includere <pwd.h>
Newsgroup: it.comp.lang.c++
Titolo: Ho fatto tutte le delete?

Salve,
il mio programma C++ gira per parecchie ore mantenendo uno spazio di 
occupazione della memoria accettabile, dopo di che ad un certo punto 
comincia a lievitare troppo.
Mi chiedevo se c'era qualche metodo per verificare che a tutte le new 
corrispondano delle delete e che questo metodo  sia diverso da 
controllare tutto il codice.
Questo perche' l'ho gia' fatto e mi sembra che le delete ci siano tutte.
Non so se qualche programma di debug possa fornire informazioni: del 
tipo "all'uscita di questa funzione sono rimasti allocati questi spazi 
di memoria".
Grazie,
   M.

Massimo Canonico wrote:

č piuttosto semplice, l'ho fatto una volta.
Fai un override delle funzioni globali new e delete. Alla chiamata di 
new, memorizzi l'indirizzo di memoria allocata da qualche parte, e alla 
chiamata di delete lo rimuovi. Al termine dell'esecuzione del programma, 
fai un dump degli indirizzi che ti sono rimasti. Altrimenti, se sei in 
ambiente Linux, c'č valgrind.
-- 
... dimostrando che o non aveva capito di cosa si stava parlando o per 
qualche astruso motivo ce l'aveva con me e ne ha approfittato per 
sfoderare la sua spada. ...

Newsgroup: it.comp.lang.c++
Titolo: AIUTO!!! Connessione DB ACCESS

Qualcuno sà come posso creare una connessione a un database access in c++
(Console Application) senza usare MFC???
Grazie Mille,
Marco

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:	it.comp.os.linux.development
Per C++Builder:	i gruppi borland.public.cppbuilder.*, disponibili sul
		server 
newsgroups.borland.com
 (prevalentemente in 
		inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti

Scusa, grazie!!
"Nicola Musatti" <Nicola....@ObjectWay.it> ha scritto nel messaggio
news:a327cf48.03101...@posting.google.com...

Newsgroup: it.comp.lang.c++
Titolo: Come scrivere stringhe lunghe?

Come posso fare per scrivere una stringa molto lunga su piu' righe ma come
se fosse sempre una?
Ho provato cosi' ma non funziona:
    op->pFrom = "albo.db\0albo.px\0albo.xg0\0albo.yg0"
"farmacie.db\0farmacie.px\0farmacie.xg0\0farmacie.yg0\0farmacie.xg1\0farmaci
e.yg1"
        "turni.db\0turni.px\0turni.xg0\0turni.yg0\0turni.xg1\0turni.yg1"
        "turnifar.db\0turnifar.px\0turnifar.xg0\0turnifar.yg0"
        "localita.db\0localita.px\0localita.xg0\0localita.yg0"
        "festivita.db\0festivita.px\0qrturni.db\0system.db\0\0";
--
Byez.
Stefano Tempesta
temp...@tin.it
http://tempesta.freeweb.org
--------------------------------
(-: In a world without walls and fences
who needs Windows and Gates? :-)

Devi digitare un backslash dopo ogni stringa; esempio:
pch =	"stringa1"\
	"stringa2"\
	"stringa3"\
	"stringa4";
equivalente a:
pch =	"stringa1stringa2stringa3stringa4";
Stefano.

se fosse sempre una?
In C++, esattamente come in C, due letterali-stringa
sono "congiunti" in uno se separati solo da spazio bianco
(spazi, tab, fine-riga).  Quindi, ad esempio:
    const char *che_stringona = "puoi, praticamente, "
        "scrivere stringhe di lunghezza del tutto "
        "arbitraria (NON vengono inseriti spazi alla "
        "congiunzione, ne`, tampoco, fine-riga, o che "
        "altro; mettili tu dove ti servono!).";
Alex

pch = "stringa1stringa2stringa3stringa4";
Si`, ma l'equivalenza vale anche se non metti tutti
quei backslash -- fine-riga equivale, dal punto di
vista lessicale del _compilatore_ (il preprocessore
e` diverso, ma qui, per fortuna, non gioca), a un
qualsiasi altro spazio bianco -- eccetto, naturalmente,
che se si trova _entro_ le virgolette (forse e` questo
il caso che hai in mente -- per scrivere una stringa
sola, senza ripetere le virgolette com'e` piu` comodo
fare, su piu` righe, occorre in effetti usare i bslash
ad ogni fine riga; sconsigliabile, come alternativa,
ad esempio perche` in questo modo "invisibili" spazi
bianchi a fine-riga, dopo il bslash, "rompono" il codice).
Alex
Newsgroup: it.comp.lang.c++
Titolo: disegnare in c++ builder

avrei un problema, devo disegnare una serie di punti (pixels) ma sembra che
la VCL non offra la possibilità di disegnare singoli pixel ma solo solo
forme complesse tipo linee, cerchi, rettangoli ecc. Se avete qualche
suggerimento scrivetemi anche in privato. Grazie

 ha scritto nel messaggio
news:8qsse3$r9a$1...@serv1.albacom.net...


Newsgroup: it.comp.lang.c++
Titolo: visual c++ applicazioni a console

salve,
come faccio a creare un'applicazione eseguibile da dos
 senza le win32 del visual c++ 6.0 ??
ciao
                        daniele

 wrote in message 7g213m$1id$1...@nslave1.tin.it...


metti il nome nella casella apposita e il gioco è fatto


                        daniele
Non puoi, perchč il VC++ 6.0 compila solo a 32bit. La modalitą console serve
solo per lavorare con le finestre DOS in Windows. Per programmare per dos
devi procurarti un vecchio compilatore a 16 bit...
Al massimo puoi attaccare un file eseguibile DOS (STUB) al programma per
farlo funzionare SIA in dos che in Windows (come il Regedit).
Spero di esserti stato utile, ciao

Newsgroup: it.comp.lang.c++
Titolo: AIUTO !!! codice assembly utlizzando turbo c 16 bit

Ciao ragazzi, vi chiedevo come è possibile inserire del codice assmbler 
utilizzando turbo c della borland a 16 bit ( scopo puramente didattico ).
esempio
#include <stdio.h>
main()
{
int a=10;
int b;
asm {
mov ax,a
mov b,ax
}
printf (b);
}
alla fine mi dà questo errore ... in-line assembly not allowed in function 
main.
Mi sapete aiutare ?
Oppure vi chiedo è possivbile scrivere codice asm puro con turbo c per forza 
ci vuole turbo assembler... grazie mille a tutti 


ho provato col il turboC 3.00 e lo accetta senza problemi...
prova a vedere tra le opzioni della linea di comando ( un tc dato senza 
parametri ) dovrebbe esserci un "Compila tramite l'assemblatore" o 
similare che magari va abilitato.
si ti serve il TASM per il passaggio intermedio

JG ha scritto:

Saranno eoni che non lo uso, ma mi sembra di ricordare che ci fosse una
opzione da dargli, qualcosa del tipo:
#pragma inline
non so se era solo per il bc o anche per il tc.
ciao
p.s. il turbo assembler comunque mi sembra sia disponibile, gratuito,
dal loro sito

 }
Puoi provare con la funzione geninterrupt() e gli pseudoregistri
(es: _AX = a)
Le ho utilizzate con il borland 3.1 anni addietro...

 utilizzando turbo c della borland a 16 bit ( scopo puramente didattico ).
ma questo cosa c'entra col c++?  anche in un gruppo di c, penso
sarebbe ugualmente ot...  prova a chiedere in un newsgroup dedicato al
tuo compilatore/ambiente operativo.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy              ROT13: 
ybe...@cq.vasa.vg
Newsgroup: it.comp.lang.c++
Titolo: linux e c++

Quale e' il comando per compilare un programma in c++ sotto linux?
Ho utilizzato:
g++ nomeprog.cpp -o nomeout
ma poi il file nomeout non e' eseguibile oppure ottengo errori assurdi.
Non e'che ho sbagliato l'installazione?
Marco.


Io ti consiglio di usare una sintassi del tipo:
 g++ -o nomeout nomesource.cc
Ti faccio notare che anziche' usare  .cpp  ho messo  .cc .
Ciao, U D A.
-- 
<><><><><><><><><><><><><><><><><><><><><><><><
UDA'Software
mailto:
u...@freemail.it
mailto:
uda.so...@iol.it
http://www.GeoCities.com/SiliconValley/Bay/2165

 Non e'che ho sbagliato l'installazione?
Puo' darsi, pero' se non ci dici che errori ottieni come facciamo
a saperlo?
	Mauro

 Marco.
io userei
gcc   etc etc etc.....
Ciao


A me il  gcc  ha dato dei problemi nel compilare codice c++, sei sicuro
che sia meglio ?


 che sia meglio ?
Il compilatore e' lo stesso.  Se lo chiami con gcc sceglie il
front-end (C,C++,...) in base al suffisso (.c  .cc .C .cpp),
se lo chiami come g++ compila sempre come C++.
Se il file ha una estensione tipica del C++ non si dovrebbe
notare nessuna differenza.
	Mauro
Newsgroup: it.comp.lang.c++
Titolo: Help, CComBSTR ??

/**/
 char bytes[] = {
  '\x04','\x7F', '\x80','\x00','\x00','\x81','\x01'
 };
 CComBSTR combstr( sizeof(bytes), bytes  );
 int len = combstr.Length();
/**/
eseguendo questo codice in len ci finisce 7
 ma se vado a vedere con il debugger la porzione di memoria
 puntata dal membro m_str di combstr
 trovo la sequenza
 04 00 7F 00 80 00 00 00 0C FE 12 00 0C FE
che assomiglia assai poco a quella che mi aspettavo
 04 00 7F 00 80 00 00 00 00 00 81 00 01 00
devo considerarlo in baco o mi sfugge qualcosa ?
Davide
d...@menhir-informatica.com

devo considerarlo in baco o mi sfugge qualcosa ?
E` un po' come strncpy: il parametro che passi da`
la _massima_ lunghezza da copiare (e, nel caso di
CComBSTR, anche la lunghezza da allocare), ma
uno zero nel corso della copia comunque la termina.
Ci sono passaggi della documentazione di BSTR che
suggeriscono comportamento diverso, ma secondo
me e` la doc che e` ambigua, poco chiara, ecc.
La doc del ctor che hai usato dice, traducendo, "solo
nSize caratteri saranno copiati, seguiti da uno zero di
terminazione", e secondo me anche questo non e`
ben espresso (sono copiati _al massimo_ nSize-1
caratteri, mi pare).
Alex
Newsgroup: it.comp.lang.c++
Titolo: ridefinire bool

Ciao a tutti,
una domanda da incompetente come al solito.
Ho un codice scritto da altra gente che in vari punti esegue operazioni
considerando che un bool occupi quanto un char.
Il mio problema è che con il gcc sul mac che devo usare io un bool
occupa come un int e non come un char.
Mi chiedevo se fosse possibile "ridefinire" il tipo bool in modo che
occupi come un char o se dovrò necessariamente mettere mano all'interno
del codice per aggiustare le varie cose.
Grazie a tutti in anticipo
Marco

Marco Dalai wrote:

hai provato a passare -mone-byte-bool da riga di comando?
-- 
"E' solo dopo aver perso tutto che siamo liberi di fare qualsiasi cosa."
"buuuhhhhhhhhhhrrrrrrr"

 
No, non avevo neanche la più pallida idea, provo e faccio sapere!
grazie
marco

 
Provato, ma non posso dire se funziona o meno, perchè il programma si 
blocca ancora prima di arrivare a uno dei punti incriminati.
Per il momento ho risolto modificando un pezo di codice, ma lascio 
aperta la richiesta d'aiuto perchè scommetto che salta fuori ancora tra 
poco in altri punti.
Grazie,
ciao
marco

Marco Dalai wrote:

ti basta questo programmillo:
#include <cassert>
int
main()
{ assert(sizeof(bool) == sizeof(char)); }
lo lanci e vedi cosa fa


 
ahem è vero :)
Ho provato ed effettivamente assegna un byte ai bool! Grazie mille!
Ora dovrei capire perchè il sw si imballa se compilo con quel parametro; 
per caso hai idea di cosa potrebbe causare?
Grazie,
ciao
marco

>>
tra l'altro scusa, portesti darmi qualche link per capire il comando che 
mi hai dato?
grazie
marco

 mi hai dato?
Trovato :)
"
-mone-byte-bool
Override the defaults for bool so that sizeof(bool)==1.
By default sizeof(bool) is 4 when compiling for Darwin/PowerPC and 1 
when compiling for Darwin/x86, so this option has no effect on x86.
"
e probabilmente anche il perchè il programma non funziona comunque
"
Warning: The -mone-byte-bool switch causes GCC to generate code
that is not binary compatible with code generated without that switch. 
Using this switch may require recompiling all other modules in a 
program, including system libraries.  Use this switch to conform to a 
non-default data model.
"
mannaggia.
Grazie mille,
ciao
marco
Newsgroup: it.comp.lang.c++
Titolo: ordine operazioni e stream

se ho una cosa del genere:
int f(int &a)
{
    a = -1;
    return 10;
}
int main()
{
    int x = 0;
    cout << f(x) << x;
}
perche' scrive 10 0, cioe' non modifica il valore di x e invece se
faccio cosi':
int main()
{
    int x = 0;
    int temp = f(x);
    cout << temp << x;
}
scrive correttamente 10 -1 ?

 perche' scrive 10 0, cioe' non modifica il valore di x
Perche' manca un sequence point.  Lo standard assicura che tutti i
side effects sono completi al prossimo sequence point (qui, alla fine
dello statement).
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy              ROT13: 
ybe...@cq.vasa.vg

 perche' scrive 10 0, cioe' non modifica il valore di x 
solo per gli operatori , (virgola), && e || hai la garanzia che il 
membro di sinistra sia valutato prima di quello di destra, per tutti gli 
altri, l'ordine di valutazione all'interno dell'espressione e' indefinito.
Ciao,
Zeppe
Newsgroup: it.comp.lang.c++
Titolo: inner class e operatore <<

Salve,
forse e' un idioma cretino, ma,
se io ho una classe nestata:
class nest{
    struct bird{
        int a;
    };
    bird k;
public:
    void feed_bird(int aa) { k.a =aa;}
    void dump();
};
e adesso voglio fare
void nest::dump()
{
    cout << k;
}
come posso fare? Un operatore<< esterno non vede il bird. E' possibile
dichiarare operator<< come una funzione membro. E se si, come si usa?

Salve,
non importa, risolto.
Ho scoperto che l'incapsulamento e' sui membri, e non sulle definizioni
dei membri. In effetti bird puo' essere un argomento di una funzione con
scope esterno, con il nome nest::bird.
Ho tante cose da scoprire...

 dichiarare operator<< come una funzione membro. E se si, come si usa?
No, operator<< se e` membro deve esserlo del suo operando di
sinistra.  Puoi invece (ab?)-usare di friend...:
class nest{
    struct bird{
        int a;
    };
    friend ostream& operator<<(ostream& o, const bird& b) {
        return o << "Bird: " << b.a << "\n";
    }
    // ecc ecc
Alex

Newsgroup: it.comp.lang.c++
Titolo: File di Setup!

Devo creare un file di setup per un progetto Visual C++. Qualcuno saprebbe
aiutarmi?
Grazie

 Qualcuno saprebbe aiutarmi?
Non qui.
Chiedi su it.comp.programmazione.win32
-- 
Gerolamo
Newsgroup: it.comp.lang.c++
Titolo: Decompilatore

Salve, cerco disperatamente un decompilatore per c++ , se conoscete un sito
dove poterne scaricare uno, o ne avete uno da potermi mandare, vi prego :
non esitate.
Ciao 
VANUR


Se per decompilatore per C++ intendi un programma che da un eseguibile
ti tiri fuori il sorgente in C++, be', mi sa che te lo puoi scordare,
perche' non esiste. Hai ben capito cosa significa 'compilare'?
Al massimo quello che potrai trovare e' un disassembler, cioe' un
programma che dal codice eseguibile (codice macchina) ti tiri fuori il
linguaggio mnemonico dell'assembly.
Ciao
Lorenzo

VANUR

Lascia perdere questo link :
http://newdata.box.sk/neworder/debuggers/w32dsm89.zip
 (ho dato un'occhiata
ed e' solo spazzatura)
il file originale (shareware) puoi cercarlo in rete utilizzando la
chiave="W32Dasm v8.9 for Win95"
Ciao - Roberto

Lorenzo
Non e' vero, esiste dcc che tira fuori da un eseguibile un programma
c (ovviamente tutti i nomi delle funzioni e delle variabili non si 
possono recuperare).
Inoltre era in produzione una nuova versione che doveva produrre
codice c++ (non ricordo pero' i link).
Bonf

 Bonf
Buono a sapersi che esiste un qualche decompilatore in grado di
"tradurre" il codice macchina e di farlo vedere in codice C, ma il fatto
cambia poco la mia risposta. Il codice che otterrai non potra' mai
essere uguale a quello che ha generato l'eseguibile che stai osservando,
perche' si tratta sempre di una reinterpretazione di un codice macchina!
Difficilmente il codice che otterrai sara' uguale o simile al codice di
partenza, a meno che non ci sia qualcuno che ha molto tempo da perdere e
non si sia studiato il modo di compilare dei diversi compilatori che ci
sono in giro (forse sono un po' troppi!) per poi di volta in volta
ottimizzare la traduzione inversa del codice...
Certo, avere un codice C invece dell'Assembly, per quanto non fedele
all'originale, e' sempre un gran vantaggio. Su questo non si discute.
Saluti
Lorenzo

Lorenzo
Infatti lo scopo e' proprio quello, facilitare la lettura di un
disassemblaggio, che per molti non e' cosa facile. 
Bonf
Newsgroup: it.comp.lang.c++
Titolo: Puntatori a oggetti dealloccati.

Arieccomi con le mie domande assurde :-p
C'e' un modo per capire se un puntatore sta puntando ad un oggetto
dealloccato senza
fare in modo che il programma non faccia errore??
Spiego meglio.
// Segmento di codice semplificato
bool Inserisci( Oggetto * ogg){
    if(!ogg) return false;
    Push(ogg);     // In questa funzione, se si trova un oggetto uguale
nella lista, ogg viene
                         // dealloccato e 'fuso' insieme all'altro gia'
presente
  //Qui ogg punta ancora alla vecchia locazione di memoria.
  // Questo if e' inutile. Se l'oggetto non viene fuso, tutto ok, Ma se
viene fuso, andando a
  //rilavorare su LocalList( e' una list <>), genera errore, perche' e'
dealloccato.
   if( ogg ) LocalList.push_back(ogg);
}
C'e' un modo per capire se ogg e' dealloccato o no, magari con qualcosa come
un exception handler?
Grazie a tutti!
----------------------------------------------------
                                   Joshi
                       JoshiLg[pd] on B.Net
----------------------------------------------------
               "...And then there was silence
             just a voice from the otherworld
                  like a leaf in a icy world
                     memories will fade..."
----------------------------------------------------

 fare in modo che il programma non faccia errore??
Non e' possibile esaminare un puntatore e scoprire se punta ad un'area
deallocata. L'unica speranza e' tenere traccia di allocazioni e
deallocazioni.
Ciao,
Nicola

    if( ogg ) LocalList.push_back(ogg);
Si possono trovare molte soluzioni. Se ci si trova nella situazione di non
sapere più se un certo puntatore è valido o meno, vuol dire che c'è un errore
di progetto da qualche parte. Ogni qual volta un oggetto viene creato
dinamicamente e passato a qualche altro agente deve essere sempre chiaro chi
detiene la responsabiltà del controllo del suo lifetime e come eventualmente
tale responsabilità viene ceduta o restituita.
In questo caso, se non vuoi stravolgere le cose completamente, potresti
semplicemente fare in modo che il codice chiamante di Push() (e, direi, anche
quello di Inserisci()) sappia a che destino è andato incontro l'oggetto in
questione:
  - è stato deallocato?
  - è stato inserito da qualche parte e qualcuno che si
     preoccuperà di deallocarlo? (e quando?)
  - il controllo è rimasto al codice client?
Oppure: usi degli smart pointer con reference counting (vedi 
www.boost.org
) e
lasci siano loro a occuparsi di tutto.
Max


 un exception handler?
Un buon modo e' fare questo:
delete p; p = NULL;
Almeno il puntatore sara' a zero e quindi potrai fare test tipo
if (!p)
	return;
-- 
Andrea Bergia - studente
Linux Registred User #281550

 return;
No, dovrei farlo all'interno di Push...
HM!!  mi hai dato un idea.
Posso overloaddare la funzione Push per passargli un puntatore di puntatore
bool Push ( Oggetto **);
cosi' che  inserendo l'oggetto a questo modo (nel codice che ho mandato)
 Push ( &ogg);
All'interno della funzione posso settare l' r-value di ogg a NULL,
e sapere se inserirlo nella LocalList o no!
Grazie a tutti!
Joshi
Newsgroup: it.comp.lang.c++
Titolo: Semplice grafica con c++

Devo fare un programma nel quale è mio intento visualizzare grafici.
Mi chiedevo se tra le librerie standard del c++ o comunque quelle 
supportate dal gcc ce ne fosse una per eseguire piccole operazioni 
grafiche, come il tracciamento di punti,linee e rettangoli.
Ciao, Skyjacker. 
 
-- 
Gioca anche tu al nuovo gioco che sta imperversando nel paese.  E'
chiamato "Burocrazia".  Tutti i giocatori stanno in circolo.  La prima
persona che fa qualcosa ha perso.

Dipende dalla piattaforma, se lavori in windows puoi usare le GDI
e al limite anche OpenGL
Però devi dirci che piattaforma usi e su quali piattaforme deve girare
"Skyjacker" <skyj...@NOinwind.it> ha scritto nel messaggio
news:DPae9.11710$AW6.2...@twister2.libero.it...



plplot ;)
Newsgroup: it.comp.lang.c++
Titolo: Preview di stampa: Riduci e Pagina precedente disabilitati

Saluti a tutto il NG.
Vorrei cortesemente chiedervi il motivo per cui nella finestra di
preview di stampa i bottoni Pagina precedente e Riduci sono
disabilitati, e se qualcuno sa come abilitarli.
Uso Visual C++ versione 5.0
Grazie anticipatamente.

...

Non conosco bene le dizioni italiane, ma "Prev Page", se non
fai cose strane, e` abilitata se e solo se di pagine precedenti
ce ne sono -- e, analogamente, "Zoom In" e` abilitato se sono
possibili ingrandimenti maggiori, "Zoom Out" se lo sono quelli
minori.  Controprova: genera un progettucolo MFC tipico, MDI
e con Print/Print Preview e tutto; unica modifica prima di
compilarlo, naturalmente, nella OnPreparePrinting della tua
CQualcosaView (che ti viene generata dal Wizard), aggiungi
un'informazione (fittizia) sul "numero di pagine", ad esempio
una singola riga:
    pInfo->SetMaxPage(5);
per simulare che il tuo documento abbia 5 pagine, cosi` che
le funzioni multipagina del print preview funzionino.  Adesso
costruisci e fai girare -- chiedendo print preview ("anteprima
di stampa" in italiano, giusto?) vedrai i bottoni funzionanti.
Se nella tua applicazione questo non ti funzia, avrai fatto
qualcosa di strano in una delle tante funzioni relative alla
stampa nella tua classe view -- e` facile sbagliare su questo
tipo di cose, se non si e` padroni al 100% dell'architettura
del framework MFC e specificamente delle sue ricche
funzionalita` di print e print preview; ma e` difficile dirti
cosa esattamente hai sbagliato (mantenere le discussioni
sul gruppo, per favore -- a volte la gente mi manda in mail
pacconi di software che non gli funziona con la preghiera
di esaminarlo, e vi assicuro che non e` per nulla simpatico).
Alex


Infatti, non so come tu faccia a gestire tutte le pressanti richieste
di aiuto che ti arrivano......
che ci sia piu' di un Alex Martelli? ;-)))

...
    [snip dei dettagli di implementazione print preview]
Non vedo errori nel codice che hai postato, e non ho mai
osservato i sintomi che descrivi.  Mannaggia... certe volte
le cose sono toste!-(
Alex

 wrote:

Mah, chissa' se magari c'e' qualche flag nella classe CPrintPreview
che disabilita i tasti Zoom out e Next Page del preview di stampa.
Confrontando il mio codice con una applicazione Doc-View generata dal
Wizard, l'unica differenza e' nella InitInstance che usa l'istruzione
AddDocTemplate con il template del documento.
Che possa dipendere da questo?
Newsgroup: it.comp.lang.c++
Titolo: librerie

ciao a tutti sono all'inizio dell' apprendimento del c++. qualcosina la so
fare pero'.
Mi dite cmq come faccio a creare una mia libreria per metterci le funzioni
che di solito uso? come faccio a renderla funzionante?  basta che metto dopo
solo #include " mialib" . grazie a tutti coloro che mi risponderanno in
particolare a coloro che lo faranno STEP BY STEP.

bia wrote:

Non credo che ti sia necessario creare una libreria (visto che dici di essere
all'inizio dell'apprendimento), probabilmente ti basta fare dei file oggetto:
Ti crei il tuo file  mylib.c con tutte le funzioni che vuoi avere disponibili,
quindi crei il file
mylib.h con tutti i "prototipi" delle funzioni definite in mylib.c che vuoi
rendere disponibili.
A questo punto compili mylib.c senza pero' creare l'eseguibile (che non puo'
essere fatto, non essendoci il main()):
su unix:      gcc -c mylib.c
su borland e simili:   Compile| Make Object
Quindi in un programma prog.c che deve usare le funzioni di mylib.c devi
aggiungere all'inizio:
#include "mylib.h"
Il programma prog.c puo' essere compilato senza aver bisogno di mylib.c, solo
il processo di linking ha bisogno di mylib.o (il risultato della compilazione
di mylib)
Su unix:    gcc -c prog.c
                   gcc prog.o mylib.o -o prog
Su borland e simili devi creare un file "project" in cui metti sia il file
prog.c che il file mylib.c quindi
           Compile|Make Executable
bye,
?manu*

Nel Borland C++ per Dos :
Compili il  modulo oggetto che vuoi inserire nella libreria ( attento ai
modelli
di memoria ) -
Ottenuto il file "obj" esegui il programma a riga di comando "TLIB" per
inserirlo nella libreria  -
       esempio :
Compilo il file "miofile.cpp" ed ottengo "miofile.obj"
Eseguo : tlib filelibreria +miofile.obj (dove "filelibreria" e' il nome
del file
di libreria che voglio creare)
Questa riga inserisce il modulo miofile.obj nel file di libreria
"filelibreria.lib" o lo crea se questi non esiste .
Per estrarre un modulo si usa il segno * (asterisco) al posto del +
,mentre per
eliminarlo il segno - (meno) .
A questo punto nel tuo progetto basta includere il relativo "file.h" in
cui sono
contenuti i prototipi delle funzioni e il file libreria corrispondente .
Tutto
qui .
Ciao
