mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: HBP - Human Brain Project cerca programmatori

Human Brain Project è un gruppo no-profit che sta realizzando un  software 
di controllo del posizionamento dei siti promossi sui motori di ricerca.
Il gruppo necessita di programmatori Delphi.
Sono in corso le seguenti attività: 
- realizzazione dei componenti di base
- realizzazione dei componenti di accesso ai dati
- realizzazione di un sito di promozione del prodotto 
- sta per essere avviato lo sviluppo dell'interfaccia (in Delphi)
I programmi sono realizzati in Delphi, C++, VB usato la tecnologia Com.
Il tutto non ha fini commerciali. Il programma sarà rilasciato a chi ne fa 
richiesta tramite il sito. Principali interessati (già in attesa) sono web 
agency, SEO e webmaster.
Quali motivazioni ci spingono a dare la nostra collaborazione senza alcun 
compenso?
La possibilità di lavorare (dopo-lavoro) in un gruppo a carattere nazionale 
(ma sono previsti anche inserimenti oltreoceano), il tema sempre più 
attuale, lo scambio di esperienza, e perchè no, la fama che ne potrebbe 
derivare per i componenti, riteniamo possano essere buona motivazione per 
programmatori che hanno un po' di tempo da investire. Chi è interessato, 
può scrivere a 
frad...@sysandorg.com
 per tutte le informazioni del caso, i 
successivi riferimenti al forum (su un sito di piano nazionale e di un 
gruppo che ad oggi è una delle maggiori web company 
italiane).
Francesco de Francesco 
ICQ fradefra #123207323
mail: 
frad...@sysandorg.com

UP
Newsgroup: it.comp.lang.c++
Titolo: Ottimizzazioni

Sto realizzando una gestionale abbastanza grossa, che mi ha portato ad avere
un eseguibile di quasi 5 mega senza debug, il tutto utilizzando Visual C++
5.0 le mfc ed alcune librerie di terze parti.
Quindi mi sono chiesto come ottimizzare il codice (utilizzando const,
passando dove possibile gli oggetti per referenza ecc...), quindi vi chiedo
di darmi qualche consiglio, regola per riuscire a diminuire le dimensioni
dell'eseguibile ed avere maggiori prestazioni.
Il mio intento è quello di seguire e partecipare ad un thread che non cerchi
di risolvere il mio problema (visto anche i pochi elelementi che do), ma
che cerchi di trattare in maniera + generica la problematica
dell'ottimizzazione del codice in c++ (dimensioni ecc..), e dove venagno
discusse le reali problematiche che potrebbero nascere


Ciao,
secondo me, ci dovevi pensare prima! Il risultato di un progetto dipende in
larga misura dalle scelte architetturali iniziali. Questo č vero
proporzionalmente alle dimensioni del progetto. Capisco che tu non stai
cercano LA soluzione al tuo problema, ma vuoi delle linee guida generali,
che perň, a mio modo di vedere (e di progettare) non sono tanto definibili
in generale. Potrei disquisire sui metodi di allocazione, l'uso dei metodi e
delle classi virtuali, il metodo di passaggio dei parametri formali, e dei
valori di ritorno, ma sono argomenti che lasciano il tempo che trovano, se
non applicati ad un problema specifico. Ad ogni modo, potresti mandare al
gruppo una dichiarazione di una tua classe, oppure la definizione di un
metodo, e potremmo discutere su quelli. Recentemente ho letto il codice di
un tale che scriveva (non cosě ordinatamente!):
class mia_classe
{
public:
    CString GetDescrizione(CString uno, CString due)
    {
        CString ritorno;
        if ( uno == "" )
            ritorno = due;
        else
            ritorno = uno + " " + due;
        return ritorno;
    }
};
Non ho mai visto tanta melma tutta insieme, ed evito perfino di commentare
lo scempio...

dell'eseguibile ed avere maggiori prestazioni.
Sicuramente potresti verificare se stai utilizzando versioni dinamiche o
statiche delle librerie, se attualmente usi versioni statiche cambia in
favore di quelle dinamiche (se disponibili).
Potresti verificare se tali dimensioni dipendano da un eccessivo uso
di funzioni inline (i primi candidati sono i costruttori), potresti fare una
prova disabilitando (se il compilatore te lo permette) lo sviluppo
inline delle funzioni. Alcuni compilatori permettono poi di utilizzare delle
versioni inline di alcune funzioni di libreria  (come strcpy), attivando
questa opzione le dimensioni di un applicativo possono aumentare
sensibilmente.
Verifica se per caso durante la compilazione vengono inclusi
nell'exe le informazioni di debug, queste non influenzano generalmente la
velocita`, ma contribuiscono alle dimensioni finali.
Infine puoi provare a selezionare come ottimizzazione la
dimensione dell'exe anzicche` la velocita`.
Paolo
Newsgroup: it.comp.lang.c++
Titolo: suonare una nota

   Vorrei scrivere un programmino per suonare le musichette
personalizzabili dell'ericsson GF768 cosě da facilitare la creazione
di nuove. Non so perň come fare emettere una semplice nota al PC. Mi
servirebbe un consiglio. Uso Win95/Borland c++ o Visual *.
   Scusate ma sono nuovo al PC.

...


Puoi usare la funzione sound(freq) seguita da un
delay(millisecondi) della libreria standard del C.
Per le frequenze il LA ha una frequenza di 440Hz
per ricavare quello delle altre note devi usare questo
algoritmo
36,8*(2^(1/12))^(NOTA-6) dove se usi 40 come valore di
NOTA e' il DO centrale
Bye,
Dome
--
http://members.it.tripod.de/beelsoft/


>Non so però come fare emettere una semplice nota al PC
Penso che il metodo piu' semplice in assoluto sia usare la funzione Beep
BOOL Beep(
    DWORD dwFreq, // sound frequency, in hertz
    DWORD dwDuration  // sound duration, in milliseconds
);
Considera che il LA del diapson vibra a 440 hertz, che per ogni ottava si
raddoppia la frequenza e ti calcoli le altre note (dodici note per ottava,
compresi i semitoni).
--
Byez
Stefano Tempesta
temp...@tin.it
http://tempesta.freeweb.org

Newsgroup: it.comp.lang.c++
Titolo: LEZIONI DI C++

Sono un programmatore Visual Basic e mi piacerebbe imparare a programmare in
C++.
Qualcuno mi sa indicare un sito dove si possa trovare del materiale
didattico che fa al caso mio???
Grazie in anticipo.
CrisIronCris

 didattico che fa al caso mio???
Scaricati Thinking in C++ di Bruce Eckel all'indirizzo
www.bruceeckel.com
.
EMG

didattico che fa al caso mio???
www.programmazione.it
Leggiti le faq
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

Newsgroup: it.comp.lang.c++
Titolo: Esistono raccolte di classi online?

Ciao ragazzi...
volevo sapere se esistono dei siti con raccolte di classi scaricabili...
mi interessavano per scopo didattico e per riutilizzarle...
Che vogliamo reinventare la ruota?! ;-))
Ciao Davide
/ - / - | - \ - \
Davide Piras
New (
pir...@engineer.com
)
Old (
pir...@iname.com
)
\ - \ - | - / - /

 Che vogliamo reinventare la ruota?! ;-))
Citazione tipicissima di Kent Reisdorph.

Newsgroup: it.comp.lang.c++
Titolo: ctime

Qualcuno sa spiegarmi l'utilizzo delle funzioni ctime, mi serve per fare la
differenza tra due date??
Ho provato a cercare in internet ed il funzionamento sembrerebbe questo
CTime startTime = (1999,5,20,0,0,0);CTime endTime = (1960,5,20,0,0,0);
CTimeSpan elapsedTime = endTime - startTime;// calcolo ggnDay =
elapsedTime.getDays();Posso utilizzarle anche se sto facendo un semplice
programma in dos basato su liste e file??se si, ma come vanno dichiarate le
variabili startTime, endTime???Ciao Corti

 se si, ma come vanno dichiarate le variabili startTime, endTime???
Probabilmente come nell'esempio che hai scritto qualche riga sopra.
Se vuoi saperne di c'e` sempre la documentazione (o i sorgenti) della
libreria. Se mancano entrambe le cose direri che la libreria e`
inutilizzabile.
        Mauro

Newsgroup: it.comp.lang.c++
Titolo: DLL per VB

Ho un problema.
Mi serve una DLL fatta in C++ da chiamare con un programma scritto in Visual
Basic 4-5-6 che mi permetta di acquisire dati dai vari indirizzi di memoria.
Ho provato a scriverla utilizzando l' inportb e l'outportb, ma mi hanno
detto che se voglio farla andare in Windows devo usare le funzioni di
libreria come se dovessi accedere ad un file.
Per chi volesse darmi una mano, allego un file di testo che spiega in
dettaglio come costruirla ma io non ci capisco niente.
- - Grazie e Ciao - -

stefanonim ha scritto:

in teoria sotto windows non puoi più accedere all'hardware direttamente 
ti dovresti scrivere dei driver ......
e per farlo ti seve il DDK (Device Driver developmennt Kit o qualcosa del 
genere)  
il esso ci sono esempi e documentazione su come scrive un device driver per 
windows ...........
io ho usato quello per il 3.11
un vero mattone .........
:o)

 ha scritto nel messaggio
news:9h9oh6$h3b$1...@news.mclink.it...

Newsgroup: it.comp.lang.c++
Titolo: Cannot creat pre-compiled header:initialized data in header

Sto provando compilare un simulatore per la tesi scritto in C++ (suppongo
che il discorso vale anche per il C) .... ma non ci riesco
Se nel file che contiene il main metto
#include "miofile.h"
main()
{....}// fine del main
// in main uso ad esempio a, t_min, f....e cosi via    che si trovano in
miofile.h
ed in miofile.h scrivo quanto segue
#define a 1
#define t_min 223
char f='a';
int variabile=2;
#include "c:\mia_directory\altro_mio_file.cpp"
#include "c:\mia_directory\mio_file_numero_2"
.....
il compilatore si incasina??
Se non è questo il motivo cosa devo fare? Devo usare il Target expert??

 int variabile=2;
appunto in uno header (file .h).
Non farlo!  Nello header metti solo le DICHIARAZIONI di
eventuali dati globali (meglio, comunque, evitarli del tutto)
e inizializzali in UN file .cpp.
Alex
Newsgroup: it.comp.lang.c++
Titolo: FATTORIALE

Premetto che sono alle prime esperienze con il linguaggio C.
Nel realizzare il codice sorgente in C ho riscontrato la difficoltà
nell'impostare la formula del binomiale di Newton.Che simbolismo si usa
in C per realizzare "n!" ?
Grazie.
Rocco

 ha scritto:

Non esiste l'operatore fattoriale, tantomento una funzione standard che lo faccia (spero di non essere smentito).
La puoi fare tu, naturalmente.
Antonio

Antonio Donatiello ha scritto:

COME?

COME?
Cosi':
int fattoriale(int n)   //calcola il fattoriale di n
{
	if(n == 0) return 1;
	else return (n*fattoriale(n-1));
}
(non l'ho provata ma dovrebbe andare)
Oppure con un ciclo for
int fattoriale(int n)
{
int i, res;
	res = 1;
 
		for(i=2; i<=n; i++)
		  {  
		    res = res*i;
		  }
return res;
}
ciao
Roby
-- 
			  /:= Linux Powered =:/
  	    /:= e-mail: metti "libero" al posto di "NOSPAM" =:/

 COME?
per esempio:
#include <iostream>
int fact(int n){
    if(n < 0){ std::cout << "houston, we have a problem...." << std::endl; return 1;}
    if(n == 0) return 1;
    if(n == 1) return 1;
    return n*fact(n-1);
}
non l'ho compilata, ma dovrebbe andare, almeno come idea.
Essendo ricorsiva, non e' il massimo per quel che riguarda la velocita', ne' l'occupazione della memoria. Tuttavia nel
caso del fattoriale i limiti spesso sono originati da altre cose.
Se vuoi il fattoriale di un reale, occorre usare in qualche modo la Gamma di Eulero, ovvero occorre che ti procuri una
libreria matematica...

Visto che su una macchina a 64 bits puoi rappresentare in un unsigned
int i fattoriali solo dei primi 20 interi (20! e' circa 2.4*10^18), ti
conviene una lookup table:
unsigned int fattoriale(unsigned int n){
  static table[21] = { 1, 1, 2, 6, ... };
  if (n > 20) throw(eccezione_opportuna);
      else    return table[n];
}
(con 32 bits ti puoi fermare a 12!).  Altrimenti usa dei double, una
lookup table per i numeri piu' bassi, e la formula di De Moivre e
Stirling per gli altri:
n! = n^n exp(-n) sqrt(2*pi*n) * (1 + epsilon_n)
dove il resto epsilon_n e' dimostrato essere minore di 1/(11*n) .
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 in C per realizzare "n!" ?
Mi sembra che ci sia qualcosa di standard, ma sinceramente basta ricordarsi
la definizione di fattoriale e scriversi la funzione.
int fattoriale(int x)
{
  int s = x;
  int x = x--;
  for (; x > 1 ; x--) s *= x;
  return s;
}
--
| /
| \Byte - Andrea Briganti
E-Mail 
kbyt...@freemail.it
ICQ 40872731

   int x = x--;
Yup!  Undefined behavior!  La risposta e': 42.  Qual'e' la domanda?


 Yup!  Undefined behavior!  La risposta e': 42.  Qual'e' la domanda?
How many roads must a man walk down...
Ciao,
Nicola

>How many roads must a man walk down...
 switch(remember)
 {
   case eskimo: left(); break;
   case loden: left(ma meno!); break;
   case girocollo: right(parecchio); CL(di molto void!) ; break;
   default scubidu': e_giu'(*chic'e'c'e') ;-)
 }
Newsgroup: it.comp.lang.c++
Titolo: C/C++ in Linux

ciao a tutti,
esiste qualche tutorial on line, sulla programmazione C/C++ sotto Linux ???
se si, dove ??
grazie a tutti ...
ciao
!Neo .


On-Line penso che puoi cercare tra gli HOWTO, ma esattamente non ti so
indicare; prova a vedere qui se trovi qualcosa, oppure chiedi su
it.os.linux.development .
In Libreria, invece, puoi trovare:
 "Imparare la programmazione Linux in 24 ore"
edito da:
  "Tecniche Nuove"
e scritto da:
  "Warren W.Gay" (<-- forse e' un po' bi-adesivo (:-) )
Io l'ho trovato molto semplice e, seppur non proprio esaustivo, ritengo
si tratti comunque di un buon inizio.
Ciao, U D A.
-- 
**********************************************************************
UDA'Software
mailto:
Andrea....@uda.itgo.com
http://uda.itgo.com
Newsgroup: it.comp.lang.c++
Titolo: [REQ] Una funzione membro che chiama un altra funzione membro

Ciao a tutti, ho una classe di questo tipo e vorrei che funzMembro1()
chiamasse al suo interno funzMembro2(), è possibile farlo?
Devo per caso usare l'identificatore "this"?
-------------------------------------------------------------------------------------------------------
Class MiaClasse{
public: funzMembro1();
          funzMembro2();
private:
}
--------------------------------------------------------------------------------------------------------
p.s: ovviamente ho già abbondantemente Google-ato
un bel po' (2 o 3 giorni) prima di postare.
grazie mille,
Blob

 }
E.

un bel po' (2 o 3 giorni) prima di postare.
Ma un manuale?

 un bel po' (2 o 3 giorni) prima di postare.
Non e' questione di "googlare". Per tentativi non hai nessuna speranza
di imparare il C++. Procurati un buon libro e studialo. Qui c'e'
qualche consiglio: 
http://www.emagsoftware.it/faqcpp.htm#7
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: ancora sulle liste...bidirezionali

Risolto il problema con le liste semplice;
ora sto provando ad utilizzare una lista bidirezionale, ma ho ancora 
problemi con la stampa degli elementi.
Riesco a stamparli in ordine inverso, ma non in ordine di inserimeto (si 
stampa solo l'ultimo elemento).
Lo snippet di codice utilizzato è questo:
--------------------------------------------------
//Per l'inserimento degli elementi nella lista
for ( ; ; )
   {
    cout << "Inserisci il " << num << "o numero: ";
    cin >> val;
    if (val < 0)
     break;
    if (testa == NULL)
     {
      testa = coda  = new elem (val, NULL, NULL);
     }
    else
     {
      testa = new elem (val, testa, NULL);
     }
      num++;
   }
--------------------------------------------
//Per la stampa
  if (testa != NULL)
   {
    while (testa != NULL)
     {
      cout << "Elemento inserito: " << testa->val << "\n";
      switch (scelta)
       {
        case (4):
         //Stampa in ordine di inserimento
         //**** Mi stampa solo l'ultimo elemento. PERCHE?
         testa = testa->next;
         break;
        case (5):
         //Stampa in ordine inverso
         // funziona correttamente
         testa=testa->pre;
         break;
       }
     }
    cout <<"\n\n" << endl;
   }
  else
   {
    cout << "\n\nLISTA VUOTA\n\n";
   }
---------------------------------------------------------

help me!!!! 

 help me!!!!
Credo tu stia confondendo i significati di testa e coda:
for (int i=0 ;i<4 ;i++ )
{
    cout << "Inserisci il " << num << "o numero: ";
    cin >> val;
    if (val < 0)
     break;
    if (testa == NULL){
     testa = coda = new elem (val, NULL, NULL);
    }
    else {
     aux = testa;
     testa = new elem (val, NULL, testa);
     aux->pre = testa;
    }
}
Per scorrere la lista in senso inverso:
...
coda = coda->pre;
per scorrere la lista in ordine di inserimento:
...
testa=testa->next;
Ciao Andrea
Newsgroup: it.comp.lang.c++
Titolo: eccezioni usate in maniera un po' sporca...

Salve il pezzo di codice seguente non fa quello che vorrei...
Dato un iteratore it ed un container chain...
while(it!=chain.end()){
  try{
    methodoChePuoLanciareEccezioni();
  }catch(DerivedFromLogicErrorException& ex){ // lo scopo qui e' di
                                              // interrompere la normale
                                              // esecuzione e rilanciare
                                              // l'eccezione sotto un'altra
                                              // forma...
    ostringstream msg;
    msg << "insert error: " << ex.what();
    throw WCEx(msg.str());
  }catch(logic_error& ex){ // qui invece voglio prendere tutte le restanti
                           // eccezioni che puo' sollevare il 
                           // methodoChePuoLanciareEccezioni() ed adottare
                           // approccio resumption (non voglio uscire ma
                           // passare alla prossima iterazione del ciclo
        errorMsg << "insert error: " << ex.what() << endl;
  }
  it++;
}
L'errore si verifica quando il methodo nel try lancia una eccezione
logic_error, il programma esce dal ciclo comunque... Prodigiosamente quando
debuggo tutto sembra funzionare correttamente.

 
puoi postare un blocco di codice che sia compilabile e che manifesti il 
problema da te segnalato?
-- 
There are better things in life than alcohol, but alcohol makes up for 
not having them. - Terry Pratchett.
Newsgroup: it.comp.lang.c++
Titolo: Ricerca informazioni su alcune file header

sto cercando informazioni su questi header:
string.h
unistd.h
sys/types.h
sys/wait.h
in particolare sto cercando cosa fanno, insomma non 2 righe ma nemmeno 2000.
Dove posso trovarle?
Grazie
Claudio Neri

 sys/wait.h
string.h oppure cstring.h?
Se è la prima dai un'occhiata qui:
http://www.dinkumware.com/refxcpp.html
Per le altre non saprei.

 sys/wait.h
Queste fanno parte delle piattaforme POSIX; se hai Linux le trovi in
/usr/include; per una descrizione dettagliata:
http://www.opengroup.org/onlinepubs/007908799/xsh/unistd.h.html
http://www.opengroup.org/onlinepubs/007908799/xsh/systypes.h.html
http://www.opengroup.org/onlinepubs/007908799/xsh/syswait.h.html
Ciao
PS: i link li ho trovati tutti con google ;-p

Grazie io avevo fatto la ricerca solo in italiano, perchč da queste pagine
non ci capisco una mazza. Mi servirebbe una cosa tipo le prime prighe quando
dice <unistd.h> definisce ecc ecc ma che spieghi un po' di piů. Ma senza
tutte le funzioni che non comprendo
Grazie comunque
Newsgroup: it.comp.lang.c++
Titolo: Re: Separazione engine-interfaccia + portabilità: partire col piede giusto

 versione linux che fo'?
Nel caso tu stia parlando di C++ Builder, dimenticati la compatibilità
tra sistemi operativi: gli ambienti Borland girano solo su piattaforme
Windows e sono dotati di una libreria di base legata a filo doppio col
s.o.
C'è stato in passato un approccio x-platform (Kylix), fallito però
miseramente.
Se la portabilità che ti interessa è solo quella del kernel del tuo
sistema, allora isola bene le classi e riproduci sulle varie
piattaforme il comportamento dell'interfaccia. Se intendi invece la
portabilità *anche* dell'interfaccia, allora affidati a dei framework
(penso a wxWindows) appositamente studiati al trasporto indolore tra
sistemi diversi. Purtroppo sistemi come Delphi/C++ Builder hanno il
cattivo vizio di istigare il programmatore a infarcire l'interfaccia
di logica e questo può essere un problema quando si vuol applicare
rigorosamente il pattern MVC, isolando le varie parti.

 almeno qualche aggancio di pertinenza.
E infatti, a tal proposito, ti ho risposto. Dal mio punto di vista, il
pattern model-view-controller (non sono un esperto e non so se è
considerato obsoleto) ha ancora ragione d'essere applicato. Nel tuo
caso (e sempre che non abbia capito male) è la view a creare problemi
di portabilità. Affidandosi ad un framework GUI cross-platform, il
problema si risolverebbe, ma dovresti abbandonare il modello di
programmazione impartito per via naturale da sistemi come C++ Builder.
Come già detto, questo sistema, gemello di Delphi, istiga i
programmatori a farcire il codice delle form di logica controller che
farebbe meglio ad essere isolata da altre parti. Il problema è che per
un RAD è difficile fare altrimenti.

 un RAD è difficile fare altrimenti.
In parte e' vero, anche se si potrebbe far di meglio, soprattutto
abbandonando la pretesa di accontentare tutti, dallo smanettone VB a
Bjarne Stroustrup. Pero' con un po' di disciplina si puo' fare molta
strada con poche porcherie.
Ciao,
Nicola

 miseramente.
Beh, pero` ci sarebbe questo:
http://www.twinforms.com
qualcuno lo ha provato?
-- 
Vincenzo

 qualcuno lo ha provato?
No... però è MOLTO interessante!
Grazie per la segnalazione :-)


Mai provato. E' abbastanza recente come prodotto. In ogni caso, nel
mio messaggio ho scritto: "Se intendi invece la portabilità *anche*
dell'interfaccia, allora affidati a dei framework
(penso a wxWindows)".
Newsgroup: it.comp.lang.c++
Titolo: file .H

come si crea un file incluse
replay: 
ale...@libero.it

 come si crea un file incluse
Un header-file (include non incluse) è un semplice file di testo
contenente, in generale, dichiarazioni (prototipi) di funzioni.
EMG

come si crea un file incluse
Il file header,come del resto il file cpp é solo un banalissimo file di
testo,quindi volendo lo potresti creare anche con il 'blocco note' di
Win95.Ma forse tu intendevi dire:"cosa ci metto dentro il file
header?".Solitamente nel file include ci si mettono le classi e le funzioni.
Il Ghenio

come si crea un file incluse
Dai una occhiata al mio tutorial su 
www.programmazione.it
Paolo
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

 
Con un qualsiasi editor di testo (e si dice "include").
Alex
Newsgroup: it.comp.lang.c++
Titolo: SALVARE (e caricare) SU FILE STRUTTURATI

Vorrei sapere come posso salvare dati su un file strutturato a 'struct' se
esiste qualcosa di simile(tipo un file binario o roba del genere).
A quel punto ditemi anche come caricare i dati dallo stesso.
Nella risposta mi potreste inviare anche un esempio??
Grazie mille a tutti.



sovraccarica gli operatori << e >> in modo da scrivere e leggere da un
file (aperto in modalita` binaria) una 'struct' tutta in un colpo.
Es.
struct TPoint {
  double x;
  double y;
}
ofstream& operator<<(ofstream& os, TPoint& point) {
  os << x << ' ' << y << ' '; 
  return os;
}
ifstream& operator>>(ifstream& is, TPoint& point) {
  is >> x;
  is >> y;
  return is;
}
Paolo
----------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  e-mail: 
mar...@cli.di.unipi.it
 
----------------------------------------------------------

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

Ciao a tutti,
qualcuno sa dirmi cosa sono e a cosa servono i "riferimenti" in C++?
Il loro impiego è frequente nella programmazione in C++?
       Roberto
       *******
email: 
ro...@ctonline.it

...


Newsgroup: it.comp.lang.c++
Titolo: Puntatori a membri

Salve,
dato il seguente codice:
#include <iostream>
struct Z {
 void f() {
  std::cout << "Z::f()" << std::endl;
 };
};
int main() {
 void (Z::* p)() = &Z::f;
 return 0;
}
Perche' non e' sufficiente scrivere:
p() o al massimo (*p)()
per invocare Z::f e invece necessita:
Z* z = new Z();
(z->*p)();
C'e' qualche motivo che rende tale sintassi necessaria?
Grazie

 classe è un'operazione che non ha alcun senso in C++.
Oh vero, in effetti manca l'oggetto a cui applicarla :P
E se il metodo e' static?
Ciao

 cui applicarla :P
Forse ti era sfuggito ciň che avevo scritto e che ho riportato sopra?
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
The EMG Music page:         
http://www.emagsoftware.it/emgmusic

 Non che io sappia.
Beh secondo la mia richiesta il motivo e' che in effetti manca l'oggetto a
cui applicarla :P
Ciao

 C'e' qualche motivo che rende tale sintassi necessaria?
Non che io sappia.


 p() o al massimo (*p)()
Perché invocare una funzione membro non statica senza un'instanza della
classe è un'operazione che non ha alcun senso in C++.
Max

 E se il metodo e' static?
#include <iostream>
struct Z
{
    static void f() { std::cout << "Z::f()\n"; }
};
int main()
{
    void ( *p )() = &Z::f;
    p();
    return 0;


 Forse ti era sfuggito ciò che avevo scritto e che ho riportato sopra?
No no, e' che avevo gia letto il post di Max M. che mi aveva fatto notare
che necessiata il nome dell'oggetto a cui applicare il metodo, cosa che tu
mi ha detto anche ma che ho tralasciato in quanto gia notata nel post di
Max.
Ciao
Newsgroup: it.comp.lang.c++
Titolo: <no subject>

Io ti posso dare una routine (Borland C++3.1) per visualizzare un' immagine.PCX.
Se ti può servire fammi sapere.
Ciao.
Daniele.
--
Automatic posted from 
maggiore.dsnet.it
 [195.32.0.15]
via Mailgate Server - 
http://www.mailgate.org

Could any one tell me how to run those DirectX SDK examples from 
Microsoft Developer Studio Visual C++ version 5.0.
the following error message appeared when I run the program.
-------------------Configuration: diex1 - Win32 Debug--------------------
Compiling...
diex1.cpp
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/diex1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
diex1.exe - 2 error(s), 0 warning(s)
I already added the \inc & \lib path into the Tools-Options-Directories.
and added the "dinput.lib" into the project-setting-link-object/library
modules
what else should I do?
http://river.tay.ac.uk/~i97kck/
--
Automatic posted from 
river.tay.ac.uk
 [193.60.160.99]


Microsoft Developer Studio Visual C++ version 5.0.
Could any one tell me why this message follows teammare's?!?

Newsgroup: it.comp.lang.c++
Titolo: help: this->metodo()

salve a tutti,
ho il seguente problema:
dato:
class pippo
{
   public:
      ...
      void   foo1();
      void *foo2(int pluto);
      ...
};
nella definizione della routine foo1 devo fare la seguente cosa:
pippo::foo1()
{
   ...
   paperino.status = 0;
   paperino.pfunc = (void *)foo2;
   ...
}
Come faccio ad assegnare al puntatore pfunc l'indirizzo del metodo foo2?
Dovrei fare qualcosa come this->foo2 o non ho capito proprio un tubo?
Grazie

 Grazie
Innanzitutto, perchè non hai accluso anche la definizione del tipo a cui
appartiene paperino?
Allora, andiamo per ordine. Per semplicità introduciamo il seguente typedef
        typedef  void* ( pippo::* foo2_like_t )( int );
che rappresenta un puntatore a una funzione membro fatta come pippo::foo2.
Per inciso, ricorda che in C++ un puntatore a funzione-membro-non-statica è
qualcosa di radicalmente diverso da un "tradizionale" puntatore a funzione.
Non è mai possibile (né sensato, peraltro) convertire l'uno nell'altro, nè
tantomeno convertire il primo in un void*.
Ora, diciamo che paperino è un'instanza del tipo papera,
  struct papera
   {
        int          status;
        foo2_like_t  pfunc;
   };
A questo punto, in pippo::foo1(), l'assegnamento in questione sarà
     paperino.pfunc = &pippo::foo2;
Per invocare il metodo memorizzato in paperino dovrai (ovviamente) disporre
di un'instanza del tipo pippo e dereferenziare pfunc tramite operatore .*
o ->*. Ad es:
    pippo p;
    (p.*paperino.pfunc)(10);
o, all'interno di un metodo di pippo:
    (this->*paperino.pfunc)(10);
Max
Newsgroup: it.comp.lang.c++
Titolo: Messaggi alla ParentWindow

Ho la necessita' di mandare un messaggio alla parent window ma non
riesco.
Utilizzo le MFC.
Ho provato
::PostMessage(GetParent()->m_hWnd,WM_DESTROY,0,0);		
e l'equivalente 
::SendMessage......
Grazie

::PostMessage(GetParent()->m_hWnd,WM_DESTROY,0,0);		
questa PostMessage cosi' non funziona di sicuro, non perche' il
messaggio non arrivi ma perche' non e' cosi' che si distrugge una
finestra. Prova con:
 GetParent()->PostMessage(WM_CLOSE,0,0);
oppure
 GetParent()->DestroyWindow();
Sei poi sicuro che la finestra dipenda direttamente da quella che vuoi
distruggere ? In caso la finestra genitore sia una frame prova ad
usare la GetParentFrame() invece della GetParent().
Gianpaolo Bottin
- Live Long and Prosper -

On Wed, 24 Dec 1997 21:29:01 GMT, 
bott...@tin.it
 (Gianpaolo Bottin)
wrote:

Grazie Gianpaolo che come sempre rispondi immediatamente, ma veniamo
al dunque.
Facendo qualche ricerca e ripensandoci sono gia arrivato alla
soluzione che mi hai proposto. Mi sono reso conto che il problema non
sta nello spedire il messaggio ma nell'elaborazione dei messaggi da
parte del ParentWnd (cioe' la mia classe CMainWindow).
L'utilizzo del WM_DESTROY era sulo un esempio, se infatti mando un
messaggio WM_LBUTTONDOWN tutto funziona a meraviglia.
Questa e' la mia dichiarazione dei messaggi
BEGIN_MESSAGE_MAP (CMainWindow,CWnd)
	ON_WM_PAINT()
	ON_COMMAND_RANGE(1000,2000,nomeFunzione)
	ON_WM_LBUTTONDOWN()
	ON_WM_RBUTTONDOWN()
END_MESSAGE_MAP()
Se da un metodo della classe stessa (CMainWindow), non dal child,
faccio una chiamata di questo tipo:
SendMessage(1001,0,0);
non ho nessuna reazione.
Ho provato a guardare sugli esempi forniti con i vari testi e l'MSDN e
questo e' il metodo solitamente utilizzato, comunque sia non riesco a
farlo funzionare.
Grazie di nuovo.
Davide Fiorello
studente in Informatica a Bologna

non ho nessuna reazione.
il problema non sta nella SendMessage ma nel fatto che la
ON_COMMAND_RANGE come dice il nome stesso intercetta dei WM_COMMAND,
cioe' i comandi normalmente inviati da menu' ed accelleratori. Nel tuo
caso avresti dovuto scrivere:
SendMessage(WM_COMMAND,1001,0)
Oppure definire dei messaggi user e intercettarli con la ON_MESSAGE:
#define WM_MYMSG (WM_USER+1)
BEGIN_MESSAGE_MAP (CMainWindow,CWnd)
...
ON_MESSAGE(WM_MYMSG,OnMyMsg)
END_MESSAGE_MAP()
...
SendMessage(WM_MYMSG,0,0);
Ciao e Buon Natale

Newsgroup: it.comp.lang.c++
Titolo: Modem, SILENZIOSO!

Ciao a tutti,
ho fatto un'applicazione che si collega ad internet.
Vorrei 'zittire' il modem per non sentire, ad ogni avvio della connessione,
il suono della comunicazione tra il modem ed il server del provider.
qualcuno mi  puo' aiutare?
grazie
a presto
Sasa
-- 





Postata, tre volte, una domanda off-topic.
Il Lamahmeter mi e' partito...
-- 
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: Cattura Schermo

Sapete come catturare lo schermo senza utilizzare le MFC.
Grazie a tutti
Ciao

Grazie a tutti
Chiamando GetDC(NULL) ottieni il Device Context di tutto lo schermo..... e
sei già a metà dell'opera.
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
---------------------------------------------------------------------------

Newsgroup: it.comp.lang.c++
Titolo: SPIEGAZIONE LIBRI!!!!!

Scusatemi ma mi sono rimasti ancora dei dubbi...
Lo Stroustrup nella descrizione del linguaggio utilizza degli esempi o si
limita alla spiegazione della funzione?? Fa uso di esercizi alla fine di
ogni capitolo???
E il Lippman??? I due libri trattano gli stessi argomenti ???
Ancora Grazie

Tutti e due tutte e due le cose. Mi rendo conto che la scelta comporta
un notevole investimento. Potresti provare a dare un occhiata al sito
della Addison Wesley, 
http://www.awl.com
 , per vedere se ci sono notizie
in piu'. O, ancora meglio, cercare di andare in una libreria dove
poterli sfogliare (a Milano ad esempio Hoepli).
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Interfaccia OLE di Internet Explorer

Salve,
qualcuno sa dirmi dove trovare le specifiche dell'interfaccia OLE per
comunicare con Internet Explorer ? Ho spulciato la MSDN Library online
ma ne ho ricavato solo un grosso mal di testa...
Avrei anche usato la DDE, ma l'interfaccia di IE e' paurosamente
scarsa (soprattutto a confronto di quella di Netscape).
Grazie,
Paolo

ma ne ho ricavato solo un grosso mal di testa...
sull'MSDN di Ottobre si trova in "SDK Documentation"->"ActiveX SDK for
IE3.02"->"Web Browsing Objects".
Gianpaolo Bottin
- Live Long and Prosper -

Se possiedi Internet Explorer 4.0 puoi installare sul tuo computer il
mastodontico "Internet Client SDK" che puoi trovare o in edicola (cerca
qualche rivista di programmazione) o sul sito Microsoft (alla voce SDK).
Esso è corredato di esempi (compilabili con il Visual C++ 5.0) e di una
marea di documentazione (altro che DDE...).
Giuseppe (
jopa...@tin.it
)

- Live Long and Prosper -
Nano nano !-)
Paolo

 ha scritto:

Grazie molte anche a te. Questo suggerimento e', tra l'altro, molto
piu' praticabile (a parte lo spazio richiesto dal vecchio Bill Gates
per i suoi SDK).
Ciao, Paolo

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

Scusatemi, ma ho un dubbio ed č il seguente :
    in Teoria un puntatore ad una variabile indica una locazione di memoria
che contiene
    l'indirizzo di una variabile o di una struttura dati. Una applicazione
pratica ( x esempio )
    potrebbe essere :
                                char* c ;     // che indica un puntatore a
caratterio meglio una stringa......
    poi c'č il concetto di puntatore a puntatore a variabile x esempio :
                                char** c ;
    il quale concetto mi č molto astratto...... in pratica a cosa potrebbe
servirmi ?
ciao e grazie....


ad esempio se vuoi allocare dinamicamente un array bidimensionale di char.
char** c;
c = new char*[dim1];
for(i = 0; i < dim1; i++)
    c[i] = new char[dim2];
c[1][2] = 'd';
oppure
se vuoi un puntatore ad una "stringa".
void f(char **str)
{
    (*str)++;
}
/*in c++ ovviamente si solito si preferisce
void f(char *&str){str++;}
e chiamarla come f(str);*/
main()
{
  char *str;
 str = new char [6];
 strcpy(str, "ciao");
 f(&str);
cout << str << endl;
 return 0;
}
OUTPUT
iao
e molte altre più utilii applicazioni ovviamente!
Newsgroup: it.comp.lang.c++
Titolo: Re: oggetti e puntatori... newbieissimo!

 perdonate la confusione ma non riesco a comprendere :(
HTH
-- 
There are better things in life than alcohol, but alcohol makes up for 
not having them. - Terry Pratchett.

 memoria riservati???
No, no, no! Sia pint che pia sono due puntatori ad interi e non possono
puntare altro che ad un intero. Solo che nel primo caso la memoria
allocata è un singolo intero (inizializzato con il valore 1024) mentre
nel secondo sono quattro interi consecutivi. Quindi pint punta al primo
di una serie di... un solo intero mentre pia punta al primo di una serie
di quattro interi.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
The EMG Music page:         
http://www.emagsoftware.it/emgmusic

Salve a tutti,
    sono al secondo capitolo del lippman lajoie, e il libro mi riporta 
questi 2 esempi parlando di allocazione dinamica e puntatori:
int *pint = new int(1024);
int *pia = new int[4];
e me lo spiega come:
1° es.: alloca un oggetto privo di nome di tipo int, inizializza 
quell'oggetto a un primo valore di 1024 e poi restituisce l'indirizzo 
dell'oggetto in memoria
2° es.: alloca un array di quattro elementi interi.
dice inoltre che la differenza tra i 2 esempi e' che pia contiene 
l'indirizzo del primo elemento di 4 elementi, mentre pint contiene 
semplicemente l'indirizzo dell'oggetto singolo....
Non so praticamente nulla di programmazione ad oggetti, ma a me le 2 forme 
sembrano la stessa cosa se non fosse per il numero tra ( ) e [ ].
o forse, pint riceve la locazione del parametro di ritorno di un'ipotetica 
funzione "senza nome" mentre pia e' un puntatore ad uno spazio (4*int) di 
memoria riservati???
perdonate la confusione ma non riesco a comprendere :(
grazie 1000
Dade 

 (successivamente)
quindi pint e' come scrivere:
int i=1024;
int *pint=&i;
giusto?
Grazie 1000
ciao
Dade 

 allocazione/deallocazione.
Uh! vero :-)
grazie 1000
ciao
Dade 

 giusto?
sě. Occhio perň che la memoria allocata con new va deallocata con 
delete, mentre in questo caso su pint non devi fare nessuna 
allocazione/deallocazione.
-- 
si prepara direttamente nel bicchiere basso detto "tumbler basso". Tre o 
quattro cubetti di ghiaccio, aggiungere il gin, il martini rosso, il 
bitter campari e mescolare. Guarnire con una fetta d'arancia.
Newsgroup: it.comp.lang.c++
Titolo: grafica e scrittura in C

ciao a tutti
è da meno di un anno che studio il C e vorrei sapere come si fanno alcune
cose
Prima di tutto vorrei sapere come posso posizioare ordinatamente i carattere
stampati sullo schermo dalla PRINTF (ad esempio come faccio a farsi stampare
al centro).
Seconda cosa sapreste dirmi come posso usare un po' di grafica: cambiando
colore ai caratteri, facendo alcuni effetti...
Ultima cosa è come faccio a visualizzare come sfondo un'immagine.
Ciao e grazie
darioc...@tin.it

 Ultima cosa č come faccio a visualizzare come sfondo un'immagine.
E' da quasi un anno che studi il C e ancora non hai capito che queste
cose non si possono fare? :-) No, scherzo (quasi). Dunque, per stampare
una stringa centrata non hai altra alternativa che calcolarti gli spazi
necessari a seconda della lunghezza della stessa:
nspazi = ( 80 - strlen( stringa ) ) / 2;
ammesso che il video sia largo 80 caratteri. Per le altre cose devi per
forza rivolgerti a funzioni non standard e librerie esterne. Ad esempio,
conio.h per l'output di caratteri colorati e... windows.h per la
visualizzazione di immagini in formato BMP.
EMG
Newsgroup: it.comp.lang.c++
Titolo: dichiarare sempre virtual?

mi chiedevo? dato che non so cosa ne farà l'utilizzatore della mia
classe, in caso da essa possa essere derivata un'altra classe e
utilizzata con il binding dinamico, è sempre meglio definire virtual
tutte le funzioni?
riformulo la domanda: se so che la mia classe verrà derivata, è meglio
che io definisca virtual TUTTE le sue funzioni?
posso io decidere che la mia classe non venga mai derivata? no, quindi
è bene virtualizzare TUTTE le funzioni sempre?
-- 
]\/[ad]\/[age (
www.mindreamz.net
)
"Un Maestro insegue semplicemente la sua visione di Eccellenza in
qualunque cosa sta facendo e lascia agli altri decidere se sta 
lavorando o giocando. A lui sembra sempre di fare entrambe." - Anonimo

 è bene virtualizzare TUTTE le funzioni sempre?
Mi sembra un approccio pericoloso. Sta a te decidere se la tua classe
e' disegnata per essere derivata, se si quali sono le funzioni membro
che l'utilizzatore della tua classe deve poter "scavalcare" e quindi
documentare le tue decisioni.
Tu non solo puoi ma devi decidere quali sono i modi giusti di
utilizzare la tua classe; peggio per i tuoi utenti se non seguiranno
le tue indicazioni.
Ciao,
Nicola

 ha scritto nel messaggio
news:b00aov8t215ojg7i6...@4ax.com...


 overload di funzioni.
Override.
Max

 ha scritto nel messaggio
news:bndm5h$m41$3...@newsreader.mailgate.org...


Newsgroup: it.comp.lang.c++
Titolo: Conversione di tipo (stringa-> intero)

Una variabile:
std::string parola2;
contiene una stringa che mi indica un valore intero. Per la conversione
utilizzo la funzione ATOI( ) in questo modo:
int valoreint=atoi(parola2.c_str);
Mi segnala questo errore:
error C2664: 'atoi' : cannot convert parameter 1 from 'const char *(void)
const' to 'const char *'
        There is no context in which this conversion is possible
Error executing cl.exe.
Ringrazio anticipatamente a chi mi da una soluzione.

 const' to 'const char *'
c_str e' una funzione membro... hai dimenticato l'operatore ():
int valoreint=atoi(parola2.c_str());

Perfetto, grazie
"AC" <nob...@nowhere.nw> ha scritto nel messaggio
news:%uWFc.575600$rM4.23...@news4.tin.it...

Newsgroup: it.comp.lang.c++
Titolo: C/C++

Ciao Ragazzi vi scrivo per una info
Mi piacerebbe ricominciare a programmare
in C/C++...
Utilizzavo questo linguaggio per lo
sviluppo sia per Unix che per Dos
In seguito x Windows ho adoperato le
prime versioni del C/Builder della
Borland (fino alla 3) da anni, per esigenze
lavorative, adopero Visual Basic 6 e VB.Net.
Dopo tutto questo tempo mi piacerebbe
riutilizzare il C/C++.
Sapreste dirmi (nelle varie aziende) che
tipo di compilatore C/C++ si utilizza ?
Esistono libri "localizzati" x i vari
compilatori (vedi i libri x il Visual C
di Microsoft).
Insomma sapreste orientarmi per riprendere
a programmare in C/C++.
Consigliatemi anche libri ... sia "beginner"
che "advance" (dopo anni di inutilizzo non
ho la presunzione di essere già bravo ! :-/
quindi un ripasso dalle origini è sempre
utilile :-) ... )
Se volete potete scrivermi anche in privato
v*i*n*t*a*g*
e...@libero.it
(eliminate gli * dall'indirizzo email)
Ciao e grazie
Luca
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 tipo di compilatore C/C++ si utilizza ?
Il Visual Basic! :-)
Di solito si usa quello Microsoft, a meno che non lavori per Linux, nel qual
caso si usa il gcc.
--- bye

 caso si usa il gcc.
A casa ho il Linux "Fedora" ...
Sapresti dirmi se c'è un tools di sviluppo per KDE
o per GNOME simile agli ambienti Microsoft o Borland
Insomma con l'IDE con "interattivo", con il controllo
preventivo della sintassi ecc.. ?
Grazie


 preventivo della sintassi ecc.. ?
KDevelop.
--- bye

 
Spero di essere stato utile.
===
Gianni
Newsgroup: it.comp.lang.c++
Titolo: Codice ascii frecce

Effettuo la lettura caratteri con la getch(), mi salvo in un char il
valore letto e lo analizzo:
mi sono accorto che quando premo le frecce della tastiera mi vengono
letti i seguenti valori:
- freccia verso l'alto    72
- freccia verso il basso  80
- freccia verso destra    77
- freccia verso sinistra  75
ma questi sono codici relativi a LETTERE, quindi nel mio programma mi si
confondono lettere e frecce, dove sbaglio???
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 confondono lettere e frecce, dove sbaglio???
Questo e' un modo veramente scarso per utilizzare le frecce. Dovresti
intercettare
la pressione dei tasti con un interrupt e gestirlo li dentro. Non e'
banale, se lo trovo ti invio quello che ho fatto io.


 
Il valore che ottieni dipende dal sistema operativo che stai usando.
Molto probabilmente la presisone del tasto di freccia corrisponde 
all'arrivo di più caratteri di cui visualizzi solo l'ultimo.
Solitamente il primo carattere è un escape 0x1B o anche un 0x00 o 0xFF
Newsgroup: it.comp.lang.c++
Titolo: Copia e Incolla

Qualcuno saprebbe dirmi se esiste un'API che mi permetta di copiare negli
appunti (come immagine da incollare in applicativi tipo Word o PowerPoint)
una porzione di schermo qualunque? Se non esiste direttamente un'API, come
posso fare (nella maniera pių corta possibile). In pratica mi serve fare un
cust and paste di un'immagine visualizzata su una porzione dello schermo in
altri applicativi.
Grazie a chiunque mi risponderā.
Rimuovere KKK per rispondermi direttamente.

altri applicativi.
Ecco un esempio di applicazione-giocattolo che copia su clipboard
una bitmap 100x100 presa dall'angolo in alto a sinistra dallo schermo.
E` una applicazione di console, non che faccia molta differenza...:
#define STRICT
#include <windows.h>
#include <stdio.h>
// mostra un messaggio d'errore
int ermes(const char* prefix) {
    LPVOID lpMsgBuf;
    DWORD le = GetLastError();
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM,
        NULL, le, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf, 0, NULL );
    printf("Errore (%d) %s: %s\n", le, prefix, lpMsgBuf);
    LocalFree( lpMsgBuf );
    return le;
}
int main()
{
// 1. copio un rettangolo di schermo in una bitmap
    // ottengo il device context per lo schermo:
    HDC hdcScreen = GetDC(0);
    if(!hdcScreen)
        return ermes("in GetDC(0)");
    // creo un dc compatibile in memoria
    HDC hdcMem = CreateCompatibleDC(hdcScreen);
    if(!hdcMem)
        return ermes("creando il DC in memoria");
    // creo e inserisco una bitmap nel dc di memoria
    HBITMAP hbmBase = CreateCompatibleBitmap(hdcScreen,
        100,100);
    if(!hbmBase)
        return ermes("creando la bitmap base");
    if(!SelectObject(hdcMem,hbmBase))
        return ermes("inserendo la bitmap base");
    // copio schermo->memoria
    if(!BitBlt(hdcMem,0,0,100,100,hdcScreen,0,0,SRCCOPY))
        return ermes("blittando la bitmap");
// 2. copy sulla clipboard
    if(!OpenClipboard(0))
        return ermes("aprendo la clipboard");
    if(!EmptyClipboard())
        return ermes("pulendo la clipboard");
    if(!SetClipboardData(CF_BITMAP,hbmBase))
        return ermes("copiando sulla clipboard");
    printf("Copy schermo->bitmap->clipboard OK\n");
// 3. operazioni di terminazione
    CloseClipboard();
    DeleteDC(hdcMem);
    ReleaseDC(0,hdcScreen);
    return 0;
}
Alex

No infatti. Non fa differenza. L'ho inclusa in una DLL (che fa solo quello),
parametrizzando la
funzione in base alla coordinate. Va alla grande. Grazie.
Newsgroup: it.comp.lang.c++
Titolo: Scusate se insisto con OLE

Buona sera, e auguri, dato che č il periodo.
Faccio seguito alla mia precedente richiesta di delucidazioni
sull'automazione OLE che non ha trovato risposta.
So fare con BCB un programma che crea un nuovo oggetto Word e compie
determinate operazioni (come nell'esempio di BCB, che scrive Hello world con
la funzione Exec, ma lo fa con un documento nuovo).
Non riesco a farlo con un oggetto nuovo, perché ho trovato solo la funzione
CreateObject.
Io invece voglio leggere e scrivere celle di un foglio excel (esistente).
Ho provato allora a incorporare in un form un TOleContainer (che ho chiamato
MyOLE) e a caricare un .xls con una linea come segue:
MyOLE->CreateObjectFromFile("D:\\dati\\excel\\lavoro\\imc.xls",false);
Funziona!
Ma come posso avere acceso alle celle sia in lettura che in scrittura
(formule comprese).
Vi prego di rispondermi, perché considero BCB un compilatore fantastico e
voi siete altamente preparati, ma visto e considerato i programmi che devo
fare, senza tutto questo sono fatto... perché non so come andare avanti.
Ho il libro Guida completa al C++ di Kent Reisdorph ma non spiega come fare
questo.
Grazie di cuore e auguroni.
Paolo Ferraresi.

Ma come posso avere acceso alle celle sia in lettura che in scrittura
Dovresti ottenere l'interfaccia (ad esempio IDispatch) dell'oggetto
Excel sheet cosi` ottenuto.  Comunque mi sembra che il tuo problema 
abbia poco a che vedere con quello di mostrare l'Xls come oggetto
embedded, giusto?  Se, come sembri indicare, sai creare un oggetto
Excel sheet nuovo, e il tuo unico problema e` come usare quel nuovo
oggetto per leggere e scrivere un file Xls esistente, allora l'approccio
piu` semplice e`: QueryInterface sull'oggetto Excel sheet per avere la
sua interfaccia IPersistFile; chiamare la Load dell'IPersistFile cosi`
da fargli caricare il .xls che interessa; poi ottenere l'IDispatch, ancora
con QueryInterface (o un'interfaccia piu` specifica, a seconda di quel
che interessa) e lavorare a piacimento (bisognera` salvare i dati se
li si modifica, ma IPersistFile puo` provvedere anche a questo).  Non
so se BCB ti incapsuli tutta la procedura in modo piu` conciso, pero`
non e` poi tanto complicata; basta tenere ben presente la differenza
fra "un oggetto COM" (che esiste in memoria, come codice eseguibile
per svolgere metodi ecc) e "un file" (che puo` memorizzare in modo
persistente lo _stato_ di un oggetto COM), e la connessione fra i due
con IPersistFile.
Se invece il tuo problema e` quello di NON creare un oggetto Excel
nuovo, bensi` quello di connetterti a un'istanza gia` attiva di Excel,
allora l'API da usare e` GetActiveObject.  Ma mi sembra di capire
che, anche se parli in termini di "oggetto nuovo" rispetto ad "oggetto
esistente", in realta` non ti interessa affatto la pre-esistenza o meno
dell'*oggetto*, solo la possibilita` che l'oggetto che manipoli legga e
scriva il proprio stato da/a un FILE esistente, giusto?  In questo caso,
creare l'oggetto come nuovo e poi usare IPersistFile per connetterlo
al file esistente e` in tutta probabilita` la cosa piu` semplice.
Alex