mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Date::operator <<(ostream &, Date &)' must take exactly one argument

Questa classe mi da il seguente errore:
18 date.h `Date::operator <<(ostream &, Date &)' must take exactly one
argument
18 date.h `Date::operator <<(ostream &, Date &)' must take exactly one
argument
22 date.h `Date::operator >>(istream &, Date &)' must take exactly one
argument
22 date.h `Date::operator >>(istream &, Date &)' must take exactly one
argument
a me sembra tutto corretto.. non riesco a trovare l'errore.. qualche idea?
segue il codice della classe!
Grazie
Giulio
//date.h
#ifndef DATE_H
#define DATE_H
#include <stream.h>
#include <math.h>
#include <stdlib.h>
class Date{
  private:
    int mese, giorno, anno;
    int maxi(int a, int b){ if (a>b) return(a); else return (b); };
    int mini (int a, int b){ if (a>b) return(b); else return (a); };
  public:
    //I/O
    ostream& operator<<(ostream& os, Date& d){
        return os << d.getGiorno() << d.getMese() << d.getAnno();
    };//end <<
    istream& operator>>(istream& os, Date& d){
        int g, m, a;
        os >> g >> m >> a;
        d.setGiorno(g);
        d.setMese(m);
        d.setAnno(a);
        return os;
    };//end <<
    int getGiorno(){return giorno;};
    int getMese(){return mese;};
    int getAnno(){return anno;};
    void setGiorno(int a){giorno=a;};
    void setMese(int a){ mese=a;};
    void setAnno(int a){ anno=a;};
    Date(){mese = 1; giorno = 1; anno = 1;} ;
    Date::Date (int mn, int dy, int yr){
       static int length[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
30, 31 };
       mese = maxi(1, mn);
       mese = mini(mese, 12);
       giorno=maxi(1,dy);
       giorno=mini(giorno, length[mese]);
       anno = maxi(1, yr);
    };
};//end class
#endif

 argument
Che dice il messaggio di errore...?
L'overload degli operatori >> e << all'interno classe Date deve avere solo 
un argomento. Ricorda che stai facendo l'overload degli operatori per la 
classe Date. 

     };//end <<
se vuoi utilizzarla in questo modo devi dichiararla friend:
friend  ostream& operator<<(ostream& os, Date& d){ }
Quello che tu hai scritto è l'overloading dell'operator << dichiarato come
metodo della classe, quindi il compilatore si aspetta, giustamente un solo
argomento, in quanto il secondo è "this"
-.--
Ciao.
Maurizio
P.S.: eliminare _!NO$PAM! per rispodere in privato

 argomento, in quanto il secondo č "this"
Non ho capito quale sia il problema, potresti spiegarmi meglio?
Sto facendo questa funzione per poter salvare alcuni dati su file, 
quindi vorrei usarla per esempio cosě:
file << data << int << int ... ; 
se data la faccio friend funzionerebbe cosě?
grazie
Giulio

 se data la faccio friend funzionerebbe così?
Devi rendere l'operatore friend, non la classe.
--
Lupin85©
Azzurranet IRC: @#afiad, @#fils, @#pokegalaxy - ICQ: 91528290
Mail: Remove PAN to contact me
- "It is not important what you believe, only that you believe." -
Newsgroup: it.comp.lang.c++
Titolo: Lettura e scrittura su porte hardware del PC

Per questi ultimi penso che tu debba scrivere un virtual device (VxD se non sbaglio).
Se non sbaglio anch'io i VXD si costruiscono solo per Win95/98. O no?
Bye.
Joseph Parrello - OWL/C++ Programmer
SourceNet Italia (
http://SourceNet.freeweb.org
)
Le patch di OE (
http://www.freeweb.org/computer/SourceNet/Outlook.htm
)

Se non sbaglio anch'io i VXD si costruiscono solo per Win95/98. O no?
In effetti si chiamano "Windows NT Device Driver". Ho letto su MSDN che nel DDK ci dovrebbe essere un esempio che si chiama  GENPORT.
Antonio Donatiello

Newsgroup: it.comp.lang.c++
Titolo: Leggere dati sound card

Ho appena fatto una piccola applicazione che manda in play i cd audio.
Adesso volevo aggiungere la visualizzazione dei livelli audio...
nessuno sa dirmi che devo fare per sapere i sample data del suono del cd??
grazie Sean



Newsgroup: it.comp.lang.c++
Titolo: differenze fra variabili

Linguaggio di programmazione: Visual C++ 6.0
S.O. Windows 98 SE
-------------------------------------------------------
Che differenze ci sono fra una variabile dichiarata CString ed una const
char* ????

 ha scritto nel messaggio
news:3a2cf103.0@inetnews...

Molte.
Molte davvero.
Massimo



potresti anche essere piu' esauriente ;-)
-- 
Beh, naturalmente katamail non e' una caata!
E' un espediante contro sgraditi bot arraffa-indirizzi,
se volete contattarmi fate l'ovvia sostituzione.

 potresti anche essere piu' esauriente ;-)
Per saperne di piu' chiedi su it.comp.programmare.win32
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: OpenGL

Salve a tutti,
č da pochissimo tempo che mi occupo di programmazione in c++, dovrei
creare un controllo activex che mi plotti una superficie 3d con le
opengl, ma non riesco a fargli fare nulla, il problema credo sia nel
settaggio del viewport all'interno del controllo.
Qualcuno potrebbe consigliarmi dove documentarmi?
Grazie a Tutti.
->Andrea

 è da pochissimo tempo che mi occupo di programmazione in c++, dovrei

meglio che chiedi su it.comp.programmare.win32, qui si parla solo di C++ 
standard
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://www.cs.unibo.it/~mbellett
Linux registered user 299762 @ Linux registered machine 213003

Newsgroup: it.comp.lang.c++
Titolo: Controllo della porta parallela con Borland C++ su windows 98

C'e' qualcuno che sa dirmi come controllare i registri della porta
paralla con funzioni del Borland C++ sotto windows 98?
Con il turbo c si usano le funzioni inp e outp fatte ad opportuni
indirizzi (ad esempio 378, 379 etc). 
Con il Borland c++ invece non so quali funzioni usare. 
-----
Tra le altre cose windows 98 rimappa in qualche modo questi indirizzi,
il risultato č che un'applicazione fatta girare con sotto windows 95
controlla bene la porta,  una fatta girare con windows98 no.
Probabilmente perchč il win98 non si appoggia piů su dos come il 95.
Marco 

 wrote in message
6mmbnsg524nm688pi...@4ax.com...

Newsgroup: it.comp.lang.c++
Titolo: msgget

Usando questa call, come faccio ad accedere alla struttura msqid_ds, in
particolare al campo msg_qnum, cioè in pratica come faccio a conoscere il
numero di messaggi in coda?
Ciao e grazie

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


Di cosa stai parlando???
Newsgroup: it.comp.lang.c++
Titolo: CR, come?

Ciao a tutti,
una domandina rapida rapida: come si "scrive" il carriage return in c++?
Quello con codifica ascii 13, per intenderci... so che il newline (ascii
10) si rappresenta con '\n', ma il CR mi sfugge proprio :(
Grazie
-- 
Ciao,
Andrea (99 104 97 115 101 114 64 101 109 97 105 108 46 105 116)
"Chi si sposa, almeno sa chi e' il suo avversario."
Peter Ustinov

 Grazie
prova /r
---
Pela


wrote:

\r magari :P
char a=0x0d;
char a='\r';
std::cout << "Uno\r\n";
std::cout << "Due\x0d\x0a";
ciao
 sbirish
Newsgroup: it.comp.lang.c++
Titolo: scanf

Ho un problema con la scanf!!
Mi serva che legga una serie di caratteri finche non viene inserito il
carattere$
ma quello che succede è che invece di catturare un carattere alla volta va
avanti fino a che non premo INVIO..
la uso cosi
char frase[256];
int i=0;
do
{
scanf("%c", &frase[i]);
i++;
}
while (frase[i-1]1='$')
Mi sapete aiutare?

 ha scritto nel messaggio
news:a804o5$vj0$1...@lacerta.tiscalinet.it...

1-Manca il punto&virgola alla fine del while:
    }while(frase[i-1]!='$');
2-La scanf (che è una funzione di libreria del C, quindi in questo NG
saresti OT) legge tutta la stringa immessa, non ritorna ad ogni carattere e,
cosa pericolosa, non controlla un eventuale overflow.
#include <iostream>
const int DIM=255+1;
char frase[DIM];
cin.get(frase, DIM, '\$');
get() inserirà nell'array non più di DIM-1 caratteri, oltre al terminatore
nullo, salvo il simbolo '$'.
Saluti
Newsgroup: it.comp.lang.c++
Titolo: Dev-c++.

Ho scaricato il Dev-c++.5.0 beta 8 (4.9.8.0)
 Qualcuno puo'consigliarmi un sito dove imparare il C++?
Grazie

>  Qualcuno puo'consigliarmi un sito dove imparare il C++?
http://www.bruceeckel.com/
 scaricati i suoi libri, è tra quanto meglio si
possa trovare in rete!

Newsgroup: it.comp.lang.c++
Titolo: funzioni

premesso che sono all'inizio vorrei capire perche' il mio compilatore devc++ 
mi da errore
in questo programma
//Scambia x e y,sicche' l'uno assume il valore dell'altro
#include <iostream>
void swap (float &x,float &y)
{
     float temp=x;
     x=y;
     y=temp;
}
void swap (float &,float &);
int main()
{
    float a,b;
    cout << "Inserisci due numeri:" << endl;  //////////Qui mi da errore 
dicendo:`cout' undeclared (first use this function)   (Each undeclared 
identifier is reported only once for each function it appears in.)  (che 
significa??)  // altro errore `endl' undeclared (first use this function)
    cin >> a,b;   //idem `cin' undeclared (first use this function)
    cout << "a="<<a<<" "<<"b="<<b<<endl;
    swap (a,b);
    cout << "a=" << a << " " << "b=" << b << endl;
    system("pause");
    return 0;
}
Qualcuno mi sa spiegare?
Ne approfitto per chiedervi un sito dove posso trovare degli esercizi gia' 
svolti per principianti per fare pratica
Grazie a tutti 

 Qualcuno mi sa spiegare?
Studia i "namespace".
Kiuhnm

 oppure il no consigliato "using namespace std;"
perche' il no consigliato "using namespace std" ?
poi quando scrivo cout<<"inserisci 2 numeri:"<<endl;
cin>> a,b;
accade che su video se scrivo ad esempio 2 (spazio) 3 mi esce
2 ed un numero a caso e sono costretta a scrivere
cout<<"dammi il primo numero:"<<endl;
cin>>a;
cout<<"dammi il secondo numero:"<<endl;
cin>>b;
e tutto va 
bene.no
 so come scrivere due numeri sulla stessa linea?
Grazie per il vostro tempo ma come ho detto sono all'inizio.
PS ho gia' un libro ma e' del 1997 ,pensavo di sfruttare quello altrimenti? 

 cin>> a,b;
std::cin >> a >> b;

> vedi discussioni passate su 
groups.google.it
Scusa ma in che gruppo devo guardare? 

 Scusa ma in che gruppo devo guardare?
http://groups.google.it/group/it.comp.lang.c++/browse_frm/thread/6b7d937cd4b7b2ba/
Newsgroup: it.comp.lang.c++
Titolo: static const e ereditarietà

Salve a tutti, devo realizzare un progetto nel quale utilizzo una classe
base astratta principalmente per incapsulare delle costanti globali,
dichiarate, come da oggetto, static const.
Il problema è per alcune di queste costanti che non hanno senso nella classe
base e che vorrei invece ridefinire nelle classi derivate ( proprio come le
funzioni virtuali ).
E' possibile farlo senza "incidenti" ? Non è che come creo un oggetto di una
classe derivata il valore static const che ho ridefinito cambia per tutte la
altre classi derivate ?
Aiutatemi per favore , perchè è una cosa che vorrei sapere prima di iniziare
a lavorare. Grazie.

 altre classi derivate ?
Non esiste l'override eccetto che per le funzioni virtuali.  Il riferimento
implicito od esplicito a base::lacostante oppure derivata::lacostante e`
risolto a compile-time e quindi indipendente dal fatto che tu abbia o
meno gia` creato un oggetto di classe derivata.
Alex

 altre classi derivate ?
No, i membri static sono, appunto, membri di una classe e quindi valgono
solo per quella classe. E per di più, essendo static, non sono legati ad
una particolare istanza ma si accede ad essi anche direttamente con il
nome della classe.
EMG
Newsgroup: it.comp.lang.c++
Titolo: Controllo validita' puntatori

Ciao a tutti,
ho una domanda teorica che comunque si presenta spesso nello sviluppo
pratico di software.
In generale e' sempre buona norma controllare all'inizio di ogni metodo o
funzione che i parametri di tipo puntatore, che si useranno siano diversi da
NULL?
Mi spiego con un esempio:
Se ho tre funzioni con chiamate concatenate
 int f(int *p)
{
    if (!p) return -1;
    int ret = 0;
    // uso di p
    ret = g(p);
    return ret;
}
 int g(int *p)
{
    if (!p) return -1;
    int ret = 0;
    // uso di p
    ret = h(p);
    return ret;
}
 int h(int *p)
{
    if (!p) return -1;
    int ret = 0;
    // uso di p
    return ret;
}
In generale e' sempre necessario fare il controllo if(!p) all'inizio delle
funzioni anche se so che la funzione f lo ha gia' fatto per conto di g e di
h ?
Chiedo questo perche' mi trovo spesso con codice che fa uso di piu' chiamate
concatenate a funzioni a cui vengono passati dei parametri puntatore che
devono essere controllati ogni volta, anche se so che questi sono stati gia'
controllati dalla prima funzione.
Grazie
Maurus

 NULL?
Se la tua funzione chiamata non ha senso se un puntatore è NULL ti 
conviene usare un ASSERT...
-- 
Luc.

"Luc" <XXX...@katamail.comXXX> a écrit dans le message news:
MPG.170908f49...@tornado.fastwebnet.it...

Si' , posso anche usare ASSERT, ma la domanda resta.
Devo usare ASSERT(p) (o fare altri controlli) all'inizio di f, g e h anche
se so che f chiama g che chiama h propagando il puntatore?
Oppure in generale metto l'ASSERT solo all'inizio di f, sapendo che per g e
h il puntatore e'stato propagato e gia' controllato?
In sostanza la mia domanda in generale e' se voi nello sviluppo del software
mettete sempre ASSERT (o fate sempre controlli) all'inizio di funzioni con
parametri puntatore per evitare uso di puntatori nulli.
Arigrazie
Maurus

 questi sono stati gia' controllati dalla prima funzione.
se tu sei sicuro che g non sara' mai chiamata con p=0 (metodo privato di 
una classe, ad esempio), si. altrimenti no

 ha scritto nel messaggio
news:a7mp5v$md5ao$1...@ID-125555.news.dfncis.de...

Se non sbaglio mi sembra che il KAI C++ era in grado di ottimizzare questa
situazione
evitando di effettuare test ridondanti (almeno per funzioni inline).
Saluti  Manlio Perillo

h ?
Si'.  Anche perche' i programmatori si sbagliano facilmente
e nel codice e' facile che si scriva f() laddove si voleva
scrivere g().
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]
Newsgroup: it.comp.lang.c++
Titolo: Anch'io!!!

Quanto ci avete messo voi a imparare il linguaggio?
Please, su 
kaz...@iol.it

Please, su 
kaz...@iol.it
L' apprendimento e` un cammino non un punto di arrivo,
ossia non si smette mai di imparare.
-- 
Roberto Gerola
Email: 
robert...@penguinpowered.com
WWW: 
http://www.penguinpowered.com/~The_Cpp_Compass

 wrote in message
7lb5t3$2kl$1...@hermes.iol.it...


ossia non si smette mai di imparare.
Direi che questa č la risposta zen del mese! Complimenti Roberto!
Andrea

Newsgroup: it.comp.lang.c++
Titolo: Aiuto principante

Salve ho iniziato da poco ad usare il visual C++ ed ho qualche problema:
1)Vorrei usare delle matrici però vorrei far inserire dall'utente le
dimensioni, qualcuno mi ha parlato dell'allocazione dinamica della memoria
(istruzioni new e delete) però sono riuscito solo a creare dei vettori
unidimensionali.
2)Quali sono le istruzioni per cancellare lo schermo il comando in C++ che
in pascal era repeat until keypressed.
Grazie mille per le risposte.
Potete rispondermi sul newsgroup oppure all'indirizzo 
aloi...@tin.it

 unidimensionali.
Lascia perdere new[] e delete[] (mi riferisco a new e delete quando usati
per allocare _array_ di oggetti).
Usa std::vector<T>, invece.
Esempio di matrice di interi bidimensionale 10x10 preallocata e
inizializzata:
 #include <vector>
 std::vector< std::vector<int> > m( 10, std::vector<int>(10,0) );
 m[1][2] = 10;
Volendo puoi incapsulare il tutto una classe template di questo tipo:
 template< class T >
 class matrix2
 {
    std::vector< std::vector<T> > data;
    public:
    matrix2( int x, int y, const T& val = T() ) : 
           data( x, std::vector<T>( y,val ) ) { };
    std::vector<T>& operator[](int i) { return data[ i ]; }
 };
E quindi...
 matrix2<int> m(10,10,8); // matrice 10x10 popolata di 8
 cerr <<  m[10][10] << endl;
Max

Grazie mille per le risposte.
Su 
www.programmazione.it
 trovi le faq del NG con molti
esempi.
Paolo

Newsgroup: it.comp.lang.c++
Titolo: Classi static

Ho una questione da proporvi:
In Java è possibile dichiarare un classe static e utilizzare quindi le sue
funzioni membro senza instanziare alcun oggetto.
Ciò è possibile in C++?
Grazie in anticipo a chi mi aiuterà, Giuseppe

Ciò è possibile in C++?
Basta avere classi con soli membri static.
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

 Ciò è possibile in C++?
No, ma è possibile creare una classe con metodi statici richiamabili
senza istanze.
EMG


ICQ #34602650

Vi ringrazio per l'aiuto
Giuseppe
Newsgroup: it.comp.lang.c++
Titolo: Implementazione delle eccezioni

Salve,
C'e' qualcuno che gentilmente puo' spiegarmi come vengono implementate
le eccezioni in C++?
Ho visto che usando le eccezioni si hanno grandi penalita' nelle
prestazioni; ad esempio dato questo codice:
  const int LIMIT = 100000;
  int f1(int i)
  {
      if (i == LIMIT)
          throw -1;
      else
          return f1(i + 1);
  }
 
  int f2(int i)
  {
      int ris;
 
      if (i == LIMIT)
          return -1;
      else {
          ris = f2(i + 1);
          if (ris == -1)
              return -1;
          else
              // qui ci andrebbero le istruzioni "utili"
              return ris;
      }
  }
ho misurato che f1 e' circa 12 volte piu' lenta di f2.  
Specificando che f1 puo' ritornare un int come eccezione (usando la
clausola throw(int)), l'esecuzione e' addirittura 130 volte piu'
lenta!!
Come si spiega tutta questa lentezza?
+++
So che f2 potrebbe essere scritta in maniera piu' efficiente
sostituendo
  return f2(i + 1);
al corpo del primo "else"; l'ho scritta cosi' perche' volevo simulare
una situazione un po' piu' simile alla realta'.
+++
Per completezza, sto usando Debian GNU/Linux con l'egcs e libstdc++
versione 2.91.60.
Ciao,
-- 
Diego Dainese
-> Per le repliche elimina dal mio indirizzo le cifre e le `x'.

const int LIMIT = 100000;
int f1(int i)
{
    if (i == LIMIT)
        throw -1;
   return f1(i + 1);
}
int f2(int i)
{
    int ris;
     if (i == LIMIT)
         return -1;
     else {
         ris = f2(i + 1);
         if (ris == -1)
             return -1;
         else
             // qui ci andrebbero le istruzioni "utili"
             return ris;
     }
}
#include <windows.h>
#include <TCHAR.h>
#include <stdio.h>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine, int nCmdShow )
{
 Sleep(1000);
 DWORD count1, count2;
 count1 = GetTickCount();
 try
 {
  f1(0);
 }
 catch (...) {}
 count1 = GetTickCount() - count1;
 count2 = GetTickCount();
 f2(0);
 count2 = GetTickCount() - count2;
 TCHAR lpText[200];
 _stprintf(lpText, _T("f1 takes %d ms\nf2 takes %d ms"), count1, count2);
 return MessageBox(NULL, lpText, _T("Exception Speed"), MB_OK);
}
Sotto Windows NT 4.0 con il VC++ 5.0 f1 ci mette 50ms e f2 80ms compilato
con l'opzione debug e f1 0ms e f2 40ms compilato in modo release; quindi
con le eccezioni è più veloce ;->

 
Ecco dov'era il trucco, mi ero scordato delle ottimizzazioni! Con un
banale -O2 la situazione si e' ribaltata anche nel mio sistema.
Per la cronaca con LIMIT == 100000 la la risoluzione del clock era
troppo bassa per misurare il numero di tick trascorsi, cosi' ho dovuto
alzare il valore a 600000 e ho ottenuto piu' o meno 18 centesimi per
la funzione senza eccezioni e 1 centesimo per la funzione con le
eccezioni.
Ciao e grazie per il tuo aiuto ;)


Newsgroup: it.comp.lang.c++
Titolo: GNU?

 C'e' qualche utente di GNU?
Qual è il problema?
Andrea Glorioso

 C'e' qualche untente di GNU?
Qualche? :-)
Marco
Newsgroup: it.comp.lang.c++
Titolo: il simbolo & nell'overloading degli operatori

Salve, volevo sapere se c'e differenza tra questi 2 pezzi di codice:
VECTOR3D &operator=(const VECTOR3D &vT)
{
  x = vT.x, y = vT.y, z = vT.z;
  return *this;
}
VECTOR3D operator=(const VECTOR3D &vT)
{
  x = vT.x, y = vT.y, z = vT.z;
  return *this;
}
In particolare cambia qualcosa se ritorno VECTOR3D& o VECTOR3D ?
Essendo una classe da me definita credo di no, smentitemi se sia il caso.
-- 
Grazie in anticipo per le eventuali risposte. :)

 }
nella prima c'è passaggio di argomenti per indirizzo,
nella seconda per copia,
la prima funziona bene, e va veloce ( nn deve essere copiato l'argomento
della funz, );
la seconda potrebbe nn funzionare bene se nn è definito il costruttore di
copia ( quello che è definito come NOMECLASSE ( &NOMECLASSE ); )
ti consiglio la prima forma e di usare il qualificatore const davanti
all'argomento, come già hai fatto)
ciao ciao
Daniele

 --
cambia perché nel secondo caso ritorni una copia dell'oggetto this, non
l'oggetto stesso quindi è consigliabile la prima versione, visto che
l'operatore di assegnamento di solito ritorna proprio un riferimento
Pela

 caso.
considera cosa succede con i tipi built-in:
int a,b,c;
a = b = c = 0;
Solo uno degli operator= che hai postato si comporta come i tipi built-in 
in casi di assegnamenti a cascata: se capisci da solo come fare a 
simulare questo comportamento capisci anche quale dei due operator= e` 
preferibile usare.
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

preferibile usare.
No. L'operatore di assegnazione raggruppa da destra
a sinistra e quindi quello statement equivale a
  a = ( b = ( c = 0 ) );
che e' quindi corretto sia che venga restituito un
reference sia che venga restituito un valore.
La differenza ci sarebbe con
  ( ( a = b ) = 0 )
se non fosse che oltre a essere abbastanza poco
interessante come assegnazione e' anche undefined
behaviour con tipi builtin (visto che 'a' viene
assegnato due volte prima di un sequence point).
Andrea

   a = ( b = ( c = 0 ) );
hai perfettamente ragione, ho scritto senza pensare.
Tra l'altro questo e` un ottimo esempio di quanto difficile sia 
disimparare i concetti sbagliati appresi all'inizio; quando ero agli 
inizi con il C++ mi era capitato di leggere un post che faceva lo stesso 
errore che ho fatto io. Nonostante ora sia ben cosciente dell'errore 
ogni tanto il "preconcetto" rispunta nella mia mente e mi fa scrivere 
baggianate... mah!

Newsgroup: it.comp.lang.c++
Titolo: costruttore di copia per lista in C++

Qualcuno saprebbe fornirmi codice o informazioni riguardo ai
costruttori di copia per le liste in c++? Grazie.

 costruttori di copia per le liste in c++? Grazie.
  informazioni:
se non sai cos'è il costruttore di copia serve a copiare una variabile
di una certa classe in un'altra.
perchè è importante? perche se una classe ha diverse proprietà
(variabili al suo interno) quando copi, verrano copiate anche queste
perchè bisogna stare attenti ed intercettare il costruttore di copia?
perche se hai una classe che ad esempio ha una variabile puntatore
a...(una lista per esempio o qualsiasi altra cosa)
class a
{
 int * nome;
};
a v1;
av2;
quando copi, con v2=v1;  non allochi un nuovo spazio in memoria per nome
(cosa che devi fare tu all'interno del costruttore di copia), ma copi il
valore del puntatore
per cui v1->nome e v2->nome sono lo stesso indirizzo di memoria, e
modificare uno o l'altro diventa la stessa cosa.
ciao Valerio

Newsgroup: it.comp.lang.c++
Titolo: Files header

Buongiorno a tutti,
probabilmente sto per fare una domanda banale ma non riesco a capire il 
meccanismo con cui funzionano i files header.
Faccio un esempio
ho fatto:
  - un file miaClasse.h che contiene la dichiarazione di una classe 
miaClasse e il prototipo di tutte le funzioni membro.
  - un file miaClasse.cpp che contiene le definizioni delle funzioni 
della classe. In questo file includo miaClasse.h
  - un file main.cpp in cui includo miaClasse.h
Quando compilo mi da
	undefined reference to `miaClasse::nomeFunzione()'
per ogni funzione dichiarata nella classe.
Dove sbaglio?
Cosa dimentico?
Grazie!

Sembra un errore di linking, più che di compilazione. Se usi gcc, per
esempio, dovresti compilare i file separatamente in file oggetto, e
poi effettuare il linking (oppure, puoi passare la lista di *tutti* i
file .cpp al compilatore in un comando unico). Per esempio:
gcc -c main.cpp
gcc -c miaClasse.cpp
gcc -o programma main.o miaClasse.o
Se i file sono pochi:
gcc -o programma main.cpp miaClasse.cpp
Ciao,
Matteo


 Sembra un errore di linking, pi� che di compilazione. Se usi gcc, per


Se vuoi una documentazione teorica dei files header vai sul mio blog a
questo indirizzo: 
http://davidesito.altervista.org/?page_id=223
Newsgroup: it.comp.lang.c++
Titolo: Problemi con System su WinXP

Salve,
non capisco perche' il seguente codice non fa quello che vorrei:
#include <iostream>
int main() {
	system ("dir > pippo.txt");
	return 0;
}
Su windows 98 funzionava mentre su XP no. Ma dalla prompt di DOS il
comando dir > pippo.txt funziona infatti scrive il contenuto della
cartella nel file. Ho anche provato con system ("dir") e ottengo
l'output sul video della cartella.
In pratica:
- il comando dir con system funziona
- il comando dir > pippo.txt da prompt funziona
- il comando dir > pippo.txt con system non funziona
Sapete aiutarmi?
Grazie

	system ("dir > pippo.txt");
Prova con:
system("cmd.exe /c dir > pippo.txt");
In ogni caso, è una questione riguardante Windows:
it.comp.programmare.win32
N.B.: non mi rispondere dicendo che non sei OT perché questa cosa la
vuoi fare in C++.  Se scrivo un programma in C++ che si collega via
seriale a una pentola per far bollire l'acqua degli spaghetti, non è
lecito fare una domanda sul tempo di cottura qui dentro.
Prevengo perché è meglio che curare ;-)


Cosa se ne fa system della stringa che gli passi e' un problema
specifico del compilatore che usi e della paittaforma sulla quale
lavori. Ti conviene cercare un newsgroup piu' mirato.
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: cin e cout

Sto iniziando a programmare in c++ ma un semplice programma come queso mi da
problemi:
#include <iostream.h>
void main(){
	char buf[100]; 
        cout<<"Hello friend, enter a string please\n";
	cin.get(buf,100,'\n');
	cout<<"the first string is ";
	cout<<buf;
	cout<<"\nHello friend, enter another string please\n";
	cin.get(buf,100,'\n');
	cout<<"\n the second string is "<<buf;}
Il primo input OK , ma il secondo no! Ho controllato la variabile buf e ho
scoperto che il secondo valore viene automaticamente settato a "" senza
apettare un mio inserimento.
grazie per le risposte, guido
_______________________________________________________
Send a cool gift with your E-Card
http://www.bluemountain.com/giftcenter/
-- 
Posted from 
bucky-rwcmex.excite.com
 [198.3.99.218] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 grazie per le risposte, guido
cin.get(buf,100,'\n'); lascia nel buffer '\n' che viene letto
immediatamente
dalla seconda cin.get(buf,100,'\n');
Per eliminare l'inconveniente devi scrivere:
cin.get(buf,100,'\n');
cin.ignore();    // toglie '\n'dal buffer
cout  << buf;
cin.get(buf,100,'\n');
cin.ignore();    // toglie '\n'dal buffer
etc.
HTH
Newsgroup: it.comp.lang.c++
Titolo: Visual C++

Sono un tesista. Ho realizzato un programma in C++ utilizzando il Visual C++
ma facendo sě che possa funzionare bene anche sotto lo gnucc, quindi con
output nelle scomode finestre DOS. Ora vorrei migliorare l'iterfaccia grazie
al Visual senza dover riscrivere grosse parti di codice.
Ho provato creando un progetto MFC AppWizard e poi inserendo in blocco i
files del mio programma nel progetto ma ottenendo problemi con gli include.
Ho a disposizione il manuale "Programmare in Visual C++" di Kate Gregory ma
non riesco a capirlo molto.
In sostanza vorrei solo riuscire a far sě che il mio programma che utilizza
funzioni tipo "ostream, cout<<, fstream" scrivesse in qualcosa di piů comodo
della finestra DOS. E se possibile senza dovermi imparare il codice MFC.
C'č qualcuno in questo ng che mi possa aiutare?
Grazie

:

In primo luogo: cout e gli stream standard sono - appunto - stream: se vuoi 
nella tua console comportamenti 'speciali' (tipo supporto alle line, al 
positioning del cursore, etc) resta ovvio che le modifiche al tuo sistema 
saranno pesanti.
Se invece vuoi solo una console "in finestra", esteticamente piu' piacevole :), 
non e' difficile - a meno che il tuo programma non sia multithreaded, nel qual 
caso e' un po' (ma non troppo) piu' complesso. 
L'idea chiave ce l'hai gia' - definisci una classe che presenta la stessa 
interfaccia di ostream, completa o in parte (tipicamente, ti basta avere 
operator<< per i tipi che usi, piu' qualche manipulator se serve, ad esempio 
per una console che supporti l'accesso sincronizzato da thread separati, nel 
qual caso dovrai lavorare anche un po' coi namespace), e voila'.
La tua classe ovviamente puo' spedire l'output dove vuole - anche in una 
finestra MFC :) (anche se devi valutare quanto valga la pena di attaccare tutta 
MFC ad un programma giusto per una singola finestra.. probabilmente val la pena 
di usare direttamente l'SDK o un componente 'editor' via COM).
Il punto e' se derivare tale classe da ostream o no. Ovviamente derivando non 
devi cambiare granche' nel codice *chiamante*, mentre se non derivi (ma la tua 
classe ha un'interfaccia compatibile) dovrai cambiare tutte le *dichiarazioni*.
Ora, cio' dipende da come e quanto conosci <iostream>: la libreria standard e' 
ben ingegnerizzata e flessibile... pero' abbastanza complessa: fa uso sia di 
derivazione che di tipi generici, e ci sono relazioni e contratti ben prescisi 
tra le varie parti - e inoltre cout e' un po' particolare di suo.. il tutto va 
conosciuto, mantenuto e rispettato quando si deriva. Metterci le mani (ad 
esempio per sincronizzare cout su thread separati) non e' banalissimo, anche se 
e' un ottimo esercizio.
L'approccio 'esterno' e' decisamente piu' semplice e - se il tuo programma non 
fa con cout cose particolarmente esoteriche, ma si limita a usare << e qualche 
manipulator semplice, puo' valere la pena affrontare il cambio di 
dichiarazioni.
Ovviamente questo devi valutarlo tu. :)
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun/
Newsgroup: it.comp.lang.c++
Titolo: Alcune domande sul Borland 5.5

Ho scaricato da internet la versione gratuita (free command-line
tools) del  compilatore Borland 5.5
Devo scrivere una semplicissima applicazione grafica.
Ho cercato qualche guida su Internet e tutte indicano di
fare cosi:
main()
{
      asm{
                    mov ax,13h;
                   int 10h;
             }
}
e altra cose per scrivere i pixel e simili...
Il programma compila ma poi non funziona.
Dove sbaglio?!?
Altra domanda:
Perchè quando scrivo un programma che usa WinMain al posto di main mi
da errore?!? Devo passare qulache parametro da linea di comando?!?


Path deve contenere solo la directory /bin, per il resto devi creare 2
file "BCC32.CFG" e ILINK32.CFG" che contengono le opzioni per
compilatore e linker, le stringhe le trovi nel README.
WINMAIN si usa nelle applicazioni Windows e le compili con l'opzione -tW
-- 
Ciao, gengisdave
http://digilander.iol.it/gengisdave
Linux Registered User    # 198292
Linux Registered Machine # 88280

 WINMAIN si usa nelle applicazioni Windows e le compili con l'opzione -tW
...ma soprattutto, sotto Windows è abbastanza inutile (e comunque non
permesso) usare gli interrupt "a mano"...
Massimo

 ha scritto nel messaggio
news:3A3D230E...@libero.it...

Newsgroup: it.comp.lang.c++
Titolo: VC++6: CRecorset.MoveNext crea file TMP enorme!!

Ciao a tutti,
avrei una domanda da fare relativa alla classe MFC CRecorset.
Sto realizzando un programma in Visual C++ 6 che accede ad un
database SQL Server 6.5 da una macchina Win98 via ODBC.
Uso una mia classe derivata da CRecordset per aprire un recordset
su una delle tabelle del nostro db. E' una tabella molto grossa di circa
3.600.000 record. Purtroppo devo scandirla tutta per delle operazioni/
statistiche e devo leggere ogni record.
Creo un oggetto della mia classe e poi mi sposto di un record alla
volta con la MoveNext. Il tutto funziona peccato però che viene creato
un file temporaneo nella Windows\Temp che ad ogni MoveNext cresce
di dimensione. Il file diventa molto grosso, dopo 50000 record letti
era già circa 190MB!!!!! Se chiudo il recordset il file viene correttamente
eliminato.
Ma che cavolo ci deve scrivere!!!! E come faccio a scandire tutti i
3600000 record!!
Ho provato a chiudere la connessione ODBC e riaprirla ma poi mi
devo spostare sull'ultimo record visitato usando la SetAbsolutePosition.
Purtroppo anche lei per spostarsi sul record richiesto occupa MB e
MB di spazio su disco!!!!
Qualcuno ha idea del perchè e sa indicarmi una soluzione alternativa?
Grazie mille per qualsiasi aiuto
Andrea

statistiche e devo leggere ogni record.
    [snip]
Hmmm... non ho esperienza diretta ne` dei "vestiti" MFC
su ODBC, ne` di SQL Server, ma mi "puzza" che quello
che sta succedendo sia: tu in qualche modo hai creato un
record-set che (a) e` uno snapshot e/o (b) e` bidirezionale,
per cui il tuo ODBC driver, o "deve", o "sceglie di", fare
una cache locale dell'intero insieme di record, giusto per
il caso che tu possa decidere di scrollare all'indietro... o
se non e` il tuo driver, potrebbe equivalentemente essere
l'oscura "libreria dei cursori" ( che Date ce ne scampi...!).
Mi pare che "snapshot" sia il default, ma potresti provare
nella Open a specificare esplicitamente forward-only, cioe`
un dataset read-only; sperimenta le varie opzioni e vedi un
po' se quella o un'altra ti puo` servire... analogamente, se
da programma non si riesce a controllare il problema, e`
possibile che si possa farlo amministrativamente, in un
qualche termine tipo configurare diversamente il data source
ODBC, togliere di mezzo la libreria dei cursori, eccetera.
Purtroppo non so molto dei dettagli -- ho programmato solo
ODBC nudo, e non ho mai dovuto dibattermi con la gran
parte dei driver ODBC e della loro amministrazione.
Alex

Newsgroup: it.comp.lang.c++
Titolo: Un sito che mi spieghi bene i tipi...

sto cercando un sito che mi spieghi 
i tipi del c++, sia i fondamentali
che quelli che si ottengono anteponendo
long, short ecc.
Grazie

"Ale55andro"  ha scritto :

short int (per dirne uno) e' ancora un tipo fondamentale comunque, con
lunghezza che puo' dipendere dalla piattaforma.
Qualsiasi tutorial, manuale C++, te lo spiega. Le tue classi sono poi anche
dei tipi ...
Newsgroup: it.comp.lang.c++
Titolo: Puntatori a Strutture

Ciao
Premetto che e' da due giorni che ho iniziato a programmare in c++ con
Borland.
Vorrei sapere dove sbaglio!
Grazie
Codice;
struct Animali
   {
    String Nome;
    String Classe;
    int Size;
    };
struct Animali *MyAnimali[4];
//--------------------------------------------------------------------------
-
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  MyAnimali= new  (struct Animals);        //errore secondo me!
  MyAnimali[0]->Nome= "Pluto";
  MyAnimali[0]->Classe="Cane";
  MyAnimali[0]->Size = 70;
  MyAnimali[1]->Nome= "Carlo";
  MyAnimali[1]->Classe = "Gatto";
  MyAnimali[1]->Size = 30;
  MyAnimali[2]->Nome = "Twiggy";
  MyAnimali[2]->Classe = "Canarino";
  MyAnimali[2]->Size = 7;
  MyAnimali[3]->Nome= "Ragno";
  MyAnimali[3]->Classe = "spider";
  MyAnimali[3]->Size = 10;
  for(int i=0;i<4;i++)
  {
  cmb_AnimalName->Items->Add(MyAnimali[i]->Nome);
  }
  delete MyAnimali;
}






"MyAnimali" č un puntatore const e non puoi modificarlo invece
devi applicare l'operatore di allocazione dinamica new
agli elementi del vettore quindi dovresti sostitire
      MyAnimali= new (struct Animals);
con
      MyAnimali[0]= new (struct Animals);
      MyAnimali[1]= new (struct Animals);
      ....
      fino a 4
      quindi alloca dinamicamente le 4 struct mediante un for
si dovrebbe risolvere il problema
   ciao
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto:

fino a 3 scusami


 ha scritto nel messaggio
news:194Z185Z170Z45Y...@usenet.libero.it...

Newsgroup: it.comp.lang.c++
Titolo: Costruttori classe derivata

Salve, nel mio programma (come indicato nel manuale di Stroustrup)
dichiaro il costruttore della classe derivata in modo che "passi un
argomento" al costruttore della classe base ma quando cerco di farlo
il compilatore mi comunica che la variabile gVnum non e' stata
dichiarata. Le parti essenziali di codice delle mie 2 classi sono
riportate di seguito... qualcuno mi puo' illuminare? Ho compreso male
quanto diceva il manuale oppure... bhe a voi la parola.
Grazie,
Maurizio
DERIVATA.H
class Derivata : public Base
{
public:
Derivata (int gVnum) ;
: Base (gVnum) { };          // Qui mi da errore... mi dice che gVnum non e' dichiarata.
/* ... */
private:
/* ... */
}
BASE.H
class Base 
{
public:
           Base ( int gVnum) : vnum (gVnum);
        /* ... */
private:
            int vnum;
 
            /* ... */
}

                                 e' dichiarata.
 
C'è un ';' di troppo.
Max


wrote:

Sul manuale quel ";" c'e' per questo l'ho messo... cmq ora provo e
vedo che cosa succede. 
Grazie =)

A quanto pare avevi ragione... odio i typo nei manuali...
Ciao,
Avilien

Newsgroup: it.comp.lang.c++
Titolo: Che cosa è una DLL?

Sapete darmi un' indicazione di dove possa trovare info
su web o libri o riviste su che cosa é una DLL?
Thanks
Luca

 su web o libri o riviste su che cosa é una DLL?
Certo, comprati Computer Programming o leggiti qualsiasi articolo su
qualsiasi rivista che parli di programmazione Windows ed ogni tuo dubbio
sarà fugato.
--
         ______            __  _____
        /  ___/\           _/ / __  \
       /  /__ \/__   __  ._/ / /__/ /\
       \___  \ /  | /  |\   / _____/ /
 _________/  // /||//| ||__/ /\____\/
 |__________//_/ |_/ |______/ /
 \__________\\_\/\_\/\______\/
       ===>> 
S...@IPSNET.IT
 <<===
 => 
http://www.gamblecity.com/Sm3P
 <=
        ------------------------
        "Consiste ut procederas"

Newsgroup: it.comp.lang.c++
Titolo: dimensione massima di un array

Esiste in c++ un limite alla dimensione massima di un array?
grazie ciao

 grazie ciao
Sinceramente non lo però dipende ovviamente da come e dove crei il tuo 
array (stack,heap)
Postresti andare incontro ad esempio ad uno stack overflow se crei un 
array molto grande all'interno di una funzione.
Ciao
-- 
La teoria e' quando si sa tutto e niente funziona.
La pratica e' quando tutto funziona e nessuno sa il perche'!
In questo caso abbiamo messo insieme la teoria e la pratica:
non c'e' niente che funziona e nessuno sa il perche'!
Albert Einstein

 Esiste in c++ un limite alla dimensione massima di un array?
no, in C++ non esiste, ma i limiti li avra' sicuramente la tua
macchina/sistema_operativo/compilatore.
In generale se devi allocare array di dimensioni enormi e' piu' facile che
tu abbia successo usando lo heap invece che lo stack (new).
Tommy
Newsgroup: it.comp.lang.c++
Titolo: opinione su un manuale c++

Salve,
sono un inespertissimo studente del primo anno d'informatica...
cosa mi dite riguardo al manuale "C++ tutto e oltre" di Jesse Liberty, Sams
Publishing, distribuito in Italia da Apogeo?
Non ho avuto ancora molto tempo per studiarlo bene, dato i parecchi esami
arretrati, ma devo dire che mi ha lasciato un pò confuso...
Accetto anche consigli su altri testi sul C++, grazie!
Lafaglia
ICQ: 41713806
E-mail: lafa...@NOSPAMhotmail.com
togliere NOSPAM
"ho ragioni per restare
in ebrezza totale"
Morgan

Nelle faq su 
www.programmazione.it
 sono
riportati numerosi titoli con qualche breve opinione.
Paolo
-- 
------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
 
http://www.cli.di.unipi.it/~marotta
------------------------------------------------

Newsgroup: it.comp.lang.c++
Titolo: 2 dritte stupide...

Ciao a tutti ragazzi del newsgroup......
sono un principiante di c++, utilizzo visual c++ 5.0 della ms......dopo anni
di programmazione sotto visual basic mi sono messo a studiare quello che
secondo me è il linguaggio più potente di tutti. Ho trovato subito alcuni
problemi.
Che funzione devo usare per l'estrazione causale di un numero. Ho guardato
la funzione rand(), però non sono riuscito a stabilire un minimo e un
massimo....come faccio?
Come faccio ad assegnare una variabile intera ad una variabile di tipo
CString?
Grazie a tutti!!!
Damiani Igor
ico...@simcity.it

 massimo....come faccio?
rand() restituisce un numero fra 0 e RAND_MAX.
Per avere un intervallo diverso:
  // interi fra min e max compresi
  int random( int min, int max )
  {
    return min + int(double(max-min+1) * rand() / (RAND_MAX + 1.0));
  }
	Mauro

  }
Carina.
Ti dispiace se la inserisco nella mia DLL matematica?
--
Diego "DGP85" Pettenņ
daps...@nightmail.com
Not for SPAM!
All the SPAM is fowarded to the mail provider and the society
mentioned!
--
Diego "DGP85" Pettenņ
daps...@nightmail.com
Newsgroup: it.comp.lang.c++
Titolo: Algoritmo per inversa di una matrice generica

Mi servirebbe un algoritmo per calcolare l'inversa di una matrice. Chi sa
dove troverlo?

...


matrice degli aggiunti diviso il determinate
Hem ... una cosina del genere richiede un numero *esponenziale* di passi, se
la fai come te la insegnano a geometria. Non e' proprio il modo piu' furbo.
In rete ci sono millanta librerie che ti fanno algebra lineare: puoi provare
a seguire alcuni dei puntatori che trovi a
http://SAL.KachinaTech.COM/B/3/index.shtml
Una cosa: sei proprio sicuro che ti serva l'inversa? Se vuoi solo risolvere
il sistema in generale fai prima a farlo direttamente.
                                                Ciao
                                                Antonio
Antonio Frangioni                      Research Associate  |  I have gained ...
Dip. di Informatica - Corso Italia 40 - 56125 Pisa, Italy  |  the colour of the
Ph +039-50-887216                
www.di.unipi.it/~frangio
  |  corn.   [Exupery]

dove troverlo?
Su un qualsiasi libro di calcolo numerico...
Un algoritmo su tutti e` quello di gauss!
Paolo
------------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  G: Per concludere, possiamo chiedervi di commentare
     l'attuale panorama informatico?
  I: /* l'attuale panorama informatico */
------------------------------------------------------------------

dove troverlo?
Su un qualsiasi libro di calcolo numerico...
Un algoritmo su tutti (non il migliorein assoluto, ma comunque
molto valido) e` quello di gauss!


Newsgroup: it.comp.lang.c++
Titolo: Tenere sott'occhio un file

Salve,
come posso sapere se in una determinata directory viene creato un file senza
rimanere in polling ???
In teoria c'è una funzione che me ne  chiama una mia se una det. dir viene
modificata. Corrisponde a realtà ???
Grazie.

,

Dipende dai servizi offerti dal tuo sistema operativo. Se tra questi c'e' la
possibilita' di settare un 'trigger' sul filesystem, non c'e' problema.
Altrimenti, o ti avvali di una libreria che simula questo comportamento
(facendo in ultima analisi un polling, che pero' non devi esplicitamente
gestire) oppure la devi simulare manualmente.
-cs
--
God is Real, unless declared Integer
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    


In WinNT 4.0 Esiste allo scopo la API ReadDirectoryChangesW().
Purtroppo non hai specificato la piattaforma, per poterti essere piu' utile.

Newsgroup: it.comp.lang.c++
Titolo: Creare un programma per aprire un File PDF

Salve, premetto che per motivi di tempo nn sono riuscito a leggere molto su
questo NG,
per cui mi scuso per il mio intervento che potrebbe essere ripetitivo.
Spiegazione del problema:
Dato un percorso ed il nome di un file PDF aprirlo con Acrobat Reader già
installato sul sistema.
Io ho già buttato giù un qualcosa di questo tipo:
#include <iostream>
#include <cstdlib>     // inclusione di "system()"
using namespace std;
int main(int argc, char** argv)
{
    system("C:\\Programmi\\Adobe\\Acrobat 6.0\\Reader\\AcroRd32.exe
C:\\LibroC++.pdf");
}
Questo lancia un PDF ma deve conoscere il path di installazione di ADOBE.
Se non lo conoscessi?? Come si potrebbe fare??
Io ho pensato di utilizzare una WinAPI che è la seguente: ShellExecute
Essa ha produce lo stesso effetto del doppio click sul pdf ed ha i seguenti
parametri:
Da guida API per VB6
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Private Sub Form_Load()
'KPD-Team 1998
'URL: 
http://www.allapi.net/
'E-Mail: KPD...@Allapi.net
'Send an E-Mail to the KPD-Team
ShellExecute Me.hwnd, vbNullString, "mailto:
KPD...@Allapi.net
",
vbNullString, "C:\", SW_SHOWNORMAL
End Sub
Come faccio ad implementarla in un sorgente per C++
Grazie  a tutti  Marco Tonchella

 Come faccio ad implementarla in un sorgente per C++
ti ho risposto sul altro NG, prova pero' di postare sui NG adatti.
Tommy

Newsgroup: it.comp.lang.c++
Titolo: Creazione "dinamica" di Form in C++ Builder

Vorrei sapere come poter creare una form MDIChild "a tempo d'esecuzione"
nel senso che
ho una Form principale e vorrei associare, all'evento "Nuovo File" del menu
dell'applicazione,
la creazione di una nuova form MDIChild che rappresaenti l'area di lavoro
del programma.
Come posso fare ???
GRAZIE !!!

>Vorrei sapere come poter creare una form MDIChild "a tempo d'esecuzione"
Il Builder crea automaticamente, per ogni form, una variabile globale con il
nome del form:
Application->CreateForm(_classid(TForm1), &Form1);
Per creare delle finestre dinamicamente, bisogna eliminare tale riga dal
codice oppure rimuovere il form dall'elenco delle schede auto-create in
Project - Options - Forms.
Per richiamare la scheda è sufficiente utilizzare il metodo ShowModal() o
Show() a seconda che la finestra sia modale o no, ma dopo aver creato
un'istanza della classe TForm1:
TForm1 *Form1 = new TForm1(this);
Form1->Show();
Nel tuo caso, visto che la finestra da creare deve essere una finestra
figlia in una applicazione MDI, devi impostare la property FormStyle a
fsMDIChild e indicare chi e' il "genitore" della nuova finestra tramite
Form1->Parent = this;
--
Byez
Stefano Tempesta
temp...@tin.it
http://tempesta.freeweb.org
Newsgroup: it.comp.lang.c++
Titolo: Problemi con i font ...

Ciao A tutti ...
Sto programmando in Vc++ 6. Ho creato dei controlli tipo editbox e ho
cambiato il loro font. Il problema che mi si presenta č che, dopo il
cambiamento del font, il testo all'interno
dell'edit risulta essere spostato di uno spazietto dal margine sinistro ...
cosa che prima non accadeva.
Qualcuno sa spiegarmi il perchč di ciň?? e magari come posso fare ad ovviare
a questo fastidioso problema.
Grazie e CIAO
Antonio

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 Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
forums.borland.com
 (in inglese)
Grazie,
Nicola Musatti