mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: direttiva #include

premesso : sto usando VC++ . NET,
ho usato la direttiva #include per includere un file .CPP invece 
che il solito header (a parte che da quando i template 
consentono di scrivere codice e definizioni effettive nel corpo 
degli headers, la distinzione mi appare sempre più sfumata), la 
cosa, con sorpresa, ha prodotto il risultato atteso, cioè che il 
preprocessore ha inserito pari pari il testo sorgente, e 
l'intero spazio nomi del .CPP incluso è entrato in scope (e 
nessun warn di compilazione).
Ora voglio chiedervi quindi due domande un po' filosofiche :
(presumendo che ciò che ho fatto sia "male", e mi pare di 
ricordare di averlo letto)
* perché questo è male in assoluto ? (riesco solo a pensare ai 
rischi dell'inclusione multipla, peraltro evitabili con facilità 
con direttive tipo #infdef #define #endif)
* perché è male in progetti piccoli e gestiti da una sola persona ?
Io trovo che sia molto comodo per globalizzare la portata 
dell'intellisense e agevolare la stesura del codice (e il 
rischio di names clashes, affollamento dei nomi globali e altri 
problemi che un tempo avrebbe generato l'unico grande "modulone" 
generato dal merge di vari sorgenti, è scongiurato da un buon 
uso di namespaces).
Ah .... ripensandoci mi viene un dubbio per progetti grandi : il 
tempo di compilazione del monoblocco è naturalmente non 
spezzettabile, mentre gli header possono essere precompilati, e 
cmq consumano pochissimo tempo di compilazione.
Chiaritemi se potete la cosa
ah, P.S., e se il progetto venisse sviluppato come monoblocco 
per facilitare il design, e poi riframmentato in unità di 
compilazione indipendenti quando la stesura testuale è fatta e 
occorre solo passare al debug e ricompilazioni ?
ciao
Soviet_Mario

 di compilazione.
Una nota: in presenza di compilatori che non supportano l'ottimizzazione 
globale (cross-module inlining, ecc...), includere tutti i .cpp in un 
unico file costituisce una buona alternativa.
Kiuhnm


Solo per progetti piccoli.
Per progetti grandi è una pessima idea (come dice appunto Soviet_Mario).
Newsgroup: it.comp.lang.c++
Titolo: spiegatemi una cosa...

se imparo a programmare in C, sono agevolato per il C++?
o mi conviene imparare direttamente il C++?
i controlli, le varianti, etc. sono gli stessi?
si differenziano per la programmazione ad oggetti? ma cos'č?
grazie 1.000

 In pratica il C++ è la versione ad oggetti del C.
Molto riduttiva come visione, se non altro per il supporto anche
alla programmazione generica.
Direi (se proprio vogliamo trovare una frase sintetica e
apparentemente semplice) che il C++ e` un tentativo di superare
i limiti di un linguaggio procedurale come il C, pur mantenendo
molte delle idee che ne sono alla base.
Purtroppo poi ha conservato (per un motivo o per l'altro) anche
aspetti negativi.
Paolo

 In pratica il C++ è la versione ad oggetti del C.
il C++ non e' solo un C ad oggetti. Una delle caratteristiche piu' 
importanti del C++ e' il fatto di essere multiparadigma, quindi il 
programmatore puo' scegliere se adottare uno stile procedurale o OO. 
Inoltre i template forniscono anche il supporto per il paradigma della 
programmazione generica. Inoltre ci sono anche altre caratteristiche che lo 
rendono di gran lunga preferibile al C: una libreria standard molto piu' 
vasta, potente e di alto livello e tante altre belle cose (come overload di 
funzioni e operatori, ad esempio). Inoltre, altra caratteristica degna di 
nota, il type-checking e' molto piu' forte.
Ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

Newsgroup: it.comp.lang.c++
Titolo: api o librerie di sys windows per usb

Cerco disperatamente, causa tesi, delle api o delle libresie di sistema che
mi permettano di interfacciarmi con la porta usb.
Andrebbero bene anche librerie c++ della borland.
Per favore aiutatemi ve ne sarò immensamente grato (NONCHE' LA CITAZIONE IN
PRIMA PAGINA NEI RINGRAZIAMENTI DELLA TESI)
--------------------------------
Inviato via 
http://usenet.libero.it

 PRIMA PAGINA NEI RINGRAZIAMENTI DELLA TESI)
ci conto!
ciao e buon lavoro,
Nids

Newsgroup: it.comp.lang.c++
Titolo: Terminare un programma MFC - Chiarimento

Ciao
 sto sviluppado un programma SDI con VC++ 5.0.
Avrei la necessita' di terminare il programma dall'interno di una funzione
membro di CView.
Attualmente ho utilizzato ::PostQuitMessage(). (che sembrerebbe funzionare
correttamente)
Vorrei sapere pero' qual'e' il modo giusto per terminare il programma.
-- Dovrei forse richiamare le stesse routine che il framework esegue quando
l'utente  sceglie il menu' file-exit.
-- Se si', quali sono e come faccio a richiamarle?
-- Esiste qualche altro metodo piu' adatto?
Ringrazio anticipatamente.
Ciao.
Ambrogio

Va bene come hai fatto.

Newsgroup: it.comp.lang.c++
Titolo: INSEGNO IL C++ GRATIS!!!

Per informazioni 
tre...@grisnet.it
.

In una piccola applicazione creata con Visual C++ 5, ho inserito una casella
di testo a cui è associata una variabile di tipo int.
In risposta all'evento EN_CHANGE ho scritto "UpdateData(TRUE);".
Quando il programma è in esecuzione non appena premo il tasto di un numero
esce un messaggio che chiede di inserire un intero.
Come mai esce questo messaggio anche se ho digitato un numero intero?
Nella creazione della variabile non ho imposto dei limiti.
Vi sarei grato se potreste darmi un consiglio.
Grazie anticipatamente.
Saluti
Francesco
franco....@spm.it



Newsgroup: it.comp.lang.c++
Titolo: String Table

Salve a tutt,
vengo subito al sodo.
Ho pensato di includere in un mio preogramma il supporto per più
lingue (vabbè Italiano e Inglese... ;)) e ho pensato di creare due
"String Table" contenenti le medesime stringhe.
A questo punto sorge però il problema: come faccio a dire al mio
programma quale utilizzare? Ho notato che di Default viene utilizzata
la prima in elenco.
Avevo anche pensato di creare, magari, due dll contenenti le stringhe
(o magari tutte le "risorse"), in questo caso come si potrebbe fare
(fate conto che non ho mai creato una dll in vita mia...)?
Grazie a tutti,
Francesco Aruta

 wrote in message
news:367ec64...@news.mclink.it...


(fate conto che non ho mai creato una dll in vita mia...)?
Puoi creare DLL vuote e metterci tutte le risorse che vuoi; LoadLibrary
della DLL scelta ti tornera` una HINSTANCE da usare poi con tutte le
API che richiedono l'uso di risorse (tipo LoadString, ecc ecc).  Come si
crea una DLL vuota, e come si aggiungono risorse ad un modulo dipende,
naturalmente, in tutto e per tutto dal tuo ambiente di sviluppo.
Alex


Si, in effetti è la soluzione che ho deciso di adottare. L' unico
problema è che per dare un offset fra gli Id di due stringhe devo fare
tutto a mano. Mi spiego meglio: il resource editor del Visual C++ 5.0
(scusate, mi ero dimenticato di specificare il mio ambiente di
sviluppo..) non consente ( o almeno a me è sfuggito il modo di farlo)
di specificare il valore int che corrisponderà a quel determinato Id.
In poche parole ho dovuto aprire il file resource.h , cercarmi i
#define corrispondenti alle stringhe e modificarli.   
Un pò una palla considerando che i vari Id erano mischiati fra di
loro... (una domandina veloce veloce... Perchè allo stesso valore
spesso sono associati due Id diversi? Ad esempio al valore 102
corrisponde una stringa e una finestra di dialogo. Non crea un pò
troppa confusione?)
Ciao, 
Francesco Aruta

troppa confusione?)
Forse, per un "essere umano", ma non certo per gli strumenti
automatici che gestiscono questi ID, visto che sono usati in
contesti diversi.  Personalmente, i file di risorse preferisco
editarmeli a mano (col VIM, confesso...), quindi non sono molto
familiare con vantaggi e problemi dei resource editor; comunque,
in certi casi, e` "specificato" che varie risorse di diverso tipo
usino lo stesso ID, come "codice" per connetterle fra loro (e`
questa la convenzione del framework MFC, ad esempio).
Alex
Newsgroup: it.comp.lang.c++
Titolo: Mi serve un consiglio dagli esperti

Mi piacerebbe l'idea di imparare a programmare in c++
Ma non so da dove cominciare.
Voi come avete fatto?
Che software mi servono?
E' molto difficile per un programmatore alle prime armi?
Spero in una risposta. Grazie.

E' molto difficile per un programmatore alle prime armi?
Quanto alle prime armi ?
Sai scrivere una routine in ASM ?
Sai scrivere un programmello in C ?  ( non C++ )
Sai che cosa é un puntatore ?
Sintassi, semantica e generazione di codice ti suonano familiari ?
Se questa lista ti crea delle difficoltà ti suggerirei di non avere fretta e
di iniziare da ASM.
Se invece inizi dalla fine corri il rischio di riuscire a scrivere, mettendo
assieme codice quà e la,  qualcosa che potrebbe anche funzionare ma non
sapresti perchè funziona !
Ciao.
Mat

E' molto difficile per un programmatore alle prime armi?
Moltissimo!  Al punto di essere quasi assurdo.  C++
e` *di gran lunga* il linguaggio di programmazione piu`
complesso in uso comune; ha tutti gli strumenti per la
programmazione procedurale, PIU` quella ad oggetti,
PIU` quella generica (a template), piu` molto altro
ancora, e richiede al programmatore una quantita` di
lavoro e di sforzo gigantesca, offrendogli in cambio un
controllo praticamente totale sulle prestazioni del suo
programma (controllo che non serve nel 99% e oltre
dei casi, naturalmente, e comunque richiede competenza
esagerata per essere veramente sfruttato anche nell'1%
rimanente).
E` un po' come, diciamo, una spider di quelle classiche --
leggerissima, scomoda, costosa da paura, con un motore
di potenza spropositata, e una guida di estrema difficolta`.
Nelle mani di un vero asso del volante, puo` essere la
macchina ideale per certi scopi (soprattutto rimorchiare
ragazze:-), anche se le sue caratteristiche sarebbero
sprecate e controproducenti per la maggior parte dei
comuni, quotidiani usi di una automobile.  Ma se un novellino
della guida vuole un consiglio -- non posso che consigliargli
calorosamente di orientarsi su di un'altra classe di auto!!!
Alex
Newsgroup: it.comp.lang.c++
Titolo: per Alex Martelli

Ho notato che sei un vero esperto di MFC e quindi ho pensato di indirizzarti
questi quesiti
Come si fa a cambiare la derivazione di una classe generata dall'appwizard
del Visual C++ 5.0 ?
ho notato che i messaggi del tipo WM_NC_LBUTTONDOWN non vengono contemplati
da Classwizard del Suddetto Visual C++ 5.0.
Come si fa a gestirli ?

Come si fa a gestirli ?
Ancora una volta: si fa editando a mano i sorgenti.
Supponi di volerlo gestire sul mainframe, per esempio;
allora, dovrai aggiungere in MainFrm.cpp, fra la
BEGIN_MESSAGE_MAP e la END_MESSAGE_MAP
per te generate (e fuori dai commenti speciali che
delimitano l'area gestita per te dal wizard), la macro
    ON_WM_NCLBUTTONDOWN()
Inoltre in MainFrm.h, da qualche parte fra i membri
pubblici della tua classe mainframe, aggiungerai la
dichiarazione del metodo:
afx_msg void OnNcLButtonDown( UINT nHitTest, CPoint point );
e ancora in MainFrm.cpp, la sua implementazione:
afx_msg void CMainFrame::OnNcLButtonDown( UINT nHitTest, CPoint point )
{
    MessageBox("Ciao!");
}
Naturalmente bisogna conoscere un poco il C++ e le MFC
per fare queste modifiche o aggiunte a buon giudizio, ma
d'altra parte sarebbe un'illusione credere che il wizard, per
comodo che possa essere tante volte, possa ovviare in
qualsiasi modo alla mancanza di conoscenza su questi
argomenti fondamentali.  Per capire meglio le MFC, io
suggerisco il testo di Prosise, edito nella versione italiana
da Mondadori Informatica.
Alex

Newsgroup: it.comp.lang.c++
Titolo: Visual C++? BHO!!!!

Ciao a tutto il news-group!!!
Ho acquistato la licenza studenti di Microsoft Visual Basic 5 ed annesso ho
trovato il cd di Visual C++ 5.0
L'ho installato e mi aspettavo un interfaccia simile a Vb ma invece e' tutto
incomprensibile.
Non sono ancora riuscito a entrare nella sua mentalita' non ci capisco
proprio niente!!!!
C' e' qualcuno che mi aiuta a imparare il C++ e nello specifico VC++?
Oppure un corso on-line prima di investire in un libro?
Grazie
Bye
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
  Vincenzo Lopez
e-mail:                                       ICQ UIN :  8048481
 
spi...@ba.dada.it
 
vincenz...@usa.net
          Recensore di:
Indirizzo Web:                                  
http://www.shopitaly.net/
 
http://www.pegacity.it/informatica/inlinea
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

Ciao Vincenzo,
ho installato la versione 4.x per lavoro e devo dire di non aver trovato
niente di difficile. C'è uno Wizard che ti costruisce lo scheletro di
tutta l'applicazione (alla fine dei cinque passi, ti ritrovi con una
applicazione perfettamente funzionante), e poi modifichi le parti che ti
interessano. C'è da dire, però, che devi saperne un po' di C++, per cui
puoi provare qualche tutorial che si trova nella rete; prova a vedere la
pagina:
http://www.geocities.com/SiliconValley/Lab/8234/C_e_dintorni.html
per un punto di partenza.
--
Ing. Flavio Poletti
STS s.r.l.
Via Odoardo Beccari, 13
00154 Roma, Italia
Tel. +39 6 5755096
FAX  +39 6 57287214
company e-mail: 
sts...@tin.it
private e-mail: 
pol...@writeme.com
Newsgroup: it.comp.lang.c++
Titolo: "buona suddivisione" in oggetti


-- 
Posted from [212.131.204.2] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 di comunicazione con delle porte e roba del genere, che uso cosi':
Io farei cosi:
struct link_property{ ......};  // propieta' di connessione
Definisco un oggetto linkage:
class linkage {
........
  void * data;
  link_property customer_link_property;
  link_property vendor_link_property;
public:
  set_customer_property(link_property);
  link_property get_customer_property();
  set_vendor_property(link_property);
  link_property get_vendor_property();
  open_linkage();
  void set_data(void *data_to_send) { data = data_to_send; }
  close_linkage();
  send_data();
  get_data();
};
Un oggetto prodotto:
class prodotto {
   prodotto_t prodo;
public:
.........
};
un oggetto prodottuttore:
class produttore : public linkage, public prodotto{
........
};
un oggetto consumatore:
class consumatore : public linkage,public prodotto{
..........
// molto poco elegante, soltanto per dare l'idea
void operator<<(produttore&  prod)
{ prod.send_data();  }
};
// Il produttore manda il prodotto al consumatore.
int main()
{
   produttore vendor;
   consumatore  customer;
   vendor.set_vendor_property( ......);
   customer.set_customer_property(.....);
   vendor.set_customer_property( customer.get_customer_property() );
   vendor.open_linkage();  // lega il produttore al consumatore
   customer << vendor;  // invia il prodotto al consumatore
}
Questo e' grosso modo come porrei la questione.
--
Ivan Molella
__LINUX__ the choice of the __GNU__ generation
icq# 97960484

Newsgroup: it.comp.lang.c++
Titolo: OT: Aiuto per interfaccia MCI

Scusate l' OT e vengo subito al punto.
Utilizzo Macromedia Director per sviluppare CD su PC e vorrei
utilizzare l'interfaccia MCI per aggirare alcuni problemi di canali
audio dei PC. Il mio problema e': dove posso reperire in formato
digitale ( PDF, HTML o semplice testo ) la documentazione inerente
l'interfaccia MCI ? Al momento sono sono in grado di avviare e fermare
un file audio, un po' poco considerato quello che sarebbe possibile
fare...
Grazie a tutti
Bye Marco

...


Tel. 
+39 06 33076638
 - Fax. 
+39 06 33076670
web : 
http://members.xoom.com/d_elirium
email : delirium@NO_SPAMtuttocitta.it
Newsgroup: it.comp.lang.c++
Titolo: [MI]-Informatica- Analisti/Programmatori Visual C++

Stiamo cercando Analisti/programmatori Visual C++
con almeno uno/due anni di esperienza, per lavorare 
in applicazioni su ambiente NT per interrogare una base dati su 
mainframe. Si effettua un corso per l'interfaccia Host.
La conoscenza di ambienti finanziari, Banche Sim e' apprezzata.
Vi chiediamo, per velocizzare i tempi di risposta, di compilare la
scheda tecnica interna  
http://www.microgest.it/zform.html
 e di inviarci
il curriculum indicando Rif. C-Main99 mailto:
micr...@microgest.it
 
Possiamo provvedere all'alloggio per i non residenti in Lombardia
Per ulteriori informazioni visitate il nostro sito 
http://www.microgest.it

 mainframe. 
 
http://www.provincia.bologna.it/formazione_lavoro/ciop/ciop1.html
 
http://www.provincia.bologna.it/formazione_lavoro/smbl/smbl2.html
eccetera eccetera...
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.c++
Titolo: vector di oggetti e allocazione di memoria

 wrote:
[SNIPPE]
 > Questo non e' un copy constructor in senso stretto
Questa non la sapevo
 >perche' non
 > accetta un const reference ma un reference. Con questa signature
 > "minaccia" di voler cambiare la sorgente della copia.
 >
 > Nota anche che sarebbe piu' efficiente una cosa del tipo:
 >
 > A(const A& a) : v(a.v)
 > { }
 >
 > In questo caso il vettore viene direttamente costruito usando
 > come sorgente il vettore dell'istanza passata. Con il tuo
 > codice invece ne viene costruito uno vuoto e poi viene fatta
 > una assegnazione fra vettori.
 > Inoltre questo costruttore di copia e' assolutamente inutile
 > visto che corrisponde esattamente a quello sintetizzato in
 > automatico dal compilatore. L'unico motivo per definirlo
 > sarebbe fornirne una versione non-inline perche' la classe
 > deve finire in una libreria ... ma questo e' un altro discorso.
 >
 >> A()  {}
 >
 > ....
 >
 >> ~A() {}
 >
 >
 > Anche questi costruttore e distruttore sono inutili (come
 > quelli di B). E' importante sapere cosa genera implicitamente
 > il compilatore C++ per capire quando si tratta di codice che
 > va bene e quando no (e impedirglielo) ...
Si, ma tieni presente che il codice che avevo postato e' solo una super
iper semplificazione di quello che devo implementare. Ho lasciato solo
quello che mi sembrava il minimo indispensabile per far risaltare 
l'errore che non capivo
 >
 >> per eventuali repliche scrivere a 
gu...@sssup.it
 >
 >
 > Per questa volta lo faccio. Ma chiedere reply in mail
 > (se non si adducono motivi seri) e' da maleducati... tu
 > non hai nemmeno il tempo di controllare se qualcuno ha
 > dedicato il *suo* tempo per risolvere i *tuoi* problemi ?
 > Non male come cafonaggine... ;)
?Mah? Forse mi sono spiegato male.. io volevo solo dire che se
qualcuno *per motivi suoi* voleva rispondermi in privato poteva
farlo a quell'indirizzo (che non ero sicuro che fosse anche quello
visibile in automatico in seguito al post). Se vai a vedere i messaggi
di molto tempo fa (uno due anni fa, forse anche tre) vedrai che anch'io
qualche volta ho perso del tempo per risolvere problemi di altri
Ciao,
Marco

visibile in automatico in seguito al post).
Ti chiedo scusa per aver frainteso. In passato comunque
ho visto post di gente che chiedeva che le risposte gli
venissero mandate via mail cosi' non doveva controllare
il newsgroup.
Il tuo messaggio mi sembrava sullo stesso tono di quelli...
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff
Newsgroup: it.comp.lang.c++
Titolo: nuovo problema col compilatore

Ho installato Red Hat 9.0 su due computer.Dopo aver scoperto grazie a voi
che dovevo usare g++ invece che gcc per compilare,sn tornata a casa e ho
cominciato a programmare anche cn l'altro computer.quando sn andata a
compilare,però,ho ricevuto come messaggio che sn inesistenti sia il comando
g++ che gcc che cc.
Cosa posso fare?Da cosa può dipendere?
grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Da cosa può dipendere?
Ascolta, prima di tutto per questi problemi, che riguardano Linux e non il 
linguaggio C++, è più appropriato rivolgersi a qualcuno dei vari newsgroup 
della gerarchia it.comp.os.linux.*. Questo non è il newsgroup giusto.
Detto questo, ci saranno presumibilmente alcuni pacchetti che dovrai 
installare per avere 'g++' e librerie varie. Cerca un po'. Non avai 
difficoltà a capire cosa manca. Altrimenti, vale il suggerimento 
precendente.
Max

Newsgroup: it.comp.lang.c++
Titolo: Puntatori a funzione...Help!

Ho una classe tipo:
class MioCaso
{
    ...
public:
    ...
    short FaiQualcosa( short sTipo, short sCaso );
}
E un altra classe:
class DiTutto
{
public:
    ...
    void SetFaiFunction( short (*)( short sType, short sCase ) );
private:
    short (*pFai)(  short sType, short sCase );
}
In una altra classe che ha istanziato entrambi gli oggetti, ad un certo 
punto volevo
fare in modo che il mio oggetto DiTutto ricevesse il puntatore della 
funzione dall'altra classe.
void DiTutto::SetFaiFunction( short (*pFun)( short sType, short sCase ) )
{
    pFai = pFun;
}
DiTutto *pTutto = new DiTutto;
MioCaso *pCaso = new MioCaso;
pTutto->SetFaiFunction( pCaso->FaiQualcosa );
Poi all'inerno DiTutto vorrei utilizzare in qualsiasi momento pFai(,);
Il problema e' che sono fermo a: pTutto->SetFaiFunction( 
pCaso->FaiQualcosa );
Il compilatore mi da questo errore:
error C2664: cannot convert parameter 1 from 'short (short,short)' to 'short 
(__cdecl *)(short,short)'
Cosa sbaglio? Qualcuno mi puo' aiutare?
Grazie!

 Cosa sbaglio? Qualcuno mi puo' aiutare?
Stai lavorando con dei metodi, quindi perlomeno per chiamare FaiQualcosa 
ti serve anche la base della classe, idealmente la chiamata dovrebbe 
essere qualcosa del tipo:
pTutto->SetFaiFunction(&MioCaso::FaiQualcosa, pMioCaso);
Inoltre FaiDiTutto dovrebbe essere fatta + o - cosi':
class FaiDiTutto
{
	FaiQualcosa *base;
	short (FaiQualcosa::*func)(short,short)
public:
	short Fai(short a, short b) {
		return (base->*func)(a, b)
	}
	void SetFaiFunction(short (FaiQualcosa::*f)(short,short), FaiQualcosa *b) {
		base = b; func = f;
	}
};
In ogni caso, molto probabilmente, quello che vorresti fare sarebbe + 
corretto in C++ farlo con classe base FaiDiTutto con metodo pure virtual 
Fai e MioCaso come classe derivata che definisce Fai.
class FaiDiTutto
{
public:
	virtual short Fai(short, short) = 0;
};
class MioCaso : public FaiDiTutto
{
public:
	short Fai(short a, b); // e' la vecchia FaiQualcosa
}
int main()
{
	FaiDiTutto *pTutto = new MioCaso();
	pTutto->Fai(1, 2); // chiama MioCaso::Fai
}
Bye,
  Gabry

  Gabry
Sei stato chiarissimo! Capito tutto! Non avevo ci capito una mazza! :-)
Grazie!
Newsgroup: it.comp.lang.c++
Titolo: Allocare puntatori

Salve.
Una volta dichiarato un puntatore, quando bisogna allocare memoria per
usarlo? Perchè in un programma, dichiarati due char* , mi chiede di
allocare memoria solo per uno dei due, e non per entrambi. (Quello in
cui mi da l'errore viene usato in uno swictch).
grazie

allocare memoria solo per uno dei due, e non per entrambi.
Scenario troppo vago per poter rispondere...
Paolo
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

 allocare memoria solo per uno dei due, e non per entrambi. (Quello in
Chi "ti chiede di allocare memoria", e in che esatti termini...?
Alex
Newsgroup: it.comp.lang.c++
Titolo: Proximo C++

Cosa contennera di novita il proximo C++???
E soprattutto cambiera tantissimo???
Ultima domandina............quando uscira???
-- 
Tnk 10000
Luca "Kleidemos" Francesca
Un computer a un altro quando si incontrano:
"Ciao, come ti boota oggi???"

 Ultima domandina............quando uscira???
 contennera?

Acaccia ha scritto:

conterra.
Ero di fretta
-- 
Tnk


Questa è l'homepage del Working Group che si occupa del processo di
standardizzazione del C++. Tutto ciò che è ufficiale è documentato in questo
sito.
 
http://www.open-std.org/jtc1/sc22/wg21/
Buon divertimento.
Max

Newsgroup: it.comp.lang.c++
Titolo: HELP !! - Per esperti

Quando esegue un ciclo, il VC ++  come il VB prende il controllo
dell'applicazione. Essendo molto veloce il software non da il tempo al
programma di aggiurnare le modifiche video effettuate dalle istruzioni
precedenti.
Come posso evitare questo problema ??
Per esempio, se cambio il colore ad un oggetto e subito dopo entro in
un loop, l'oggetto cambierà colore solo dopo l'uscita dal ciclo.
Spero di essere stato chiaro, ciao Massimo

 Come posso evitare questo problema ??
Non puoi, puoi solo aggirare il problema entrando nelle sezioni di
calcolo solo dopo aver risposto a WM_PAINT e demandando i calcoli ad un
working thread.
Tieni presente che tutto questo migliora l'iterfaccia a scapito della
velocita' del software, quindi secondo me e' interessante da utilizzare
solo in caso di tempi di calcolo abbastanza lunghi.
-- 
     (ZZZ)       Filippo Salotti, Bagni di Lucca, Lucca, Italy.
    //   \\  _                 E-mail : 
fil...@humnet.unipi.it
   /Y\    ZD<_o===============================================o
 .oZZZZZo.     | Studente Ingegneria Informatica Automatica  |
<OXXXXXXXO>    | Dip. Sistemi Elettrici Universita' di Pisa. |

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

Sono alle prime armi con il c++, che compilatore mi suggerite????
thanx in anticipo!

 Sono alle prime armi con il c++, che compilatore mi suggerite????
Dev-C++ -> 
www.bloodshed.net
--
/* C Ya!
 * TIMWorld: Flash News senza confini per utenti TIM,
 * scrivi a 
TIMWorld-...@yahoogroups.com
 o 
www.timworld.tk
 * Cut "DO NOT DISTURB" to reply */
Newsgroup: it.comp.lang.c++
Titolo: Operatore ternario

Salve,
ho una domanda molto semplice. Perch� il seguente codice:
#include <iostream>
int main () {
    int x = 0;
    x = x < 10 ? x++ : x--;
    std::cout << x << std::endl;
    return 0;
}
stampa zero?
La riga dove c'� l'operatore ternario dovrebbe equivale a:
if (x < 10)
    x = x++;
else
    x = x--;
Se uso la forma prefissa dell'incremento e del decremento non si verifica
questo comportamento.

 questo comportamento.
La risposta ï¿œ altrettanto semplice :), l'espressione x = x++ ï¿œ 
*undefined behaviour*.
Puoi vedere questa FAQ: 
http://www2.research.att.com/~bs/bs_faq2.html#evaluation-order
Anche l'espressione x = ++x ï¿œ undefined behaviour. Il fatto che il 
risultato, in questo caso, ti paia corretto non deve trarti in inganno, 
fa parte proprio della definizione di "undefined".
Ciao.


Ciao,
l'equivalenza che hai scritto non e' quella, in realta' sarebbe uguale a:
if( x < 10 )
{
     x = x;
     x++;
}
else
{
     x = x;
     x--;
}
Gli operatori postfisso vengono ad applicarsi "al di fuori" 
dell'espressione in cui sono usati proprio perche' post,
cioe' nel tuo caso prima si calcola la diseguaglianza poi si assegna uno 
dei due casi, in questo esempio sempre la stesso valore, la x, e poi la 
si increment/decrementa.
Roberto

 }
Questa da te esposta � un ulteriore equivalenza, in cui x++ e x-- non 
appaiono in un'istruzione di assegnamento. 

 parte proprio della definizione di "undefined".
Grazie per il chiarimento.
Considerando che x++ equivale a x = x; x++; non avrei mai pensato ad un 
comportamento indefinito.
Saluti 

 Considerando che x++ equivale a x = x; x++;
Ovviamente intendevo: x = x++ equivale a x = x; x++ 


vero, grazie.

 comportamento indefinito.
 > Ovviamente intendevo: x = x++ equivale a x = x; x++
Sarebbe equivalente se il linguaggio stabilisse l'ordine di valutazione 
delle espressioni (come alcuni linguaggi fanno).
Dato che il C++ lascia questa libertà al compilatore, l'espressione x = 
x++; potrebbe equivalere sia a x = x; x++; che a x++; x = x; che portano 
a due risultati diversi.
Ma attenzione a non commettere l'errore di pensare che questi siano gli 
unici due risultati possibili.
A fronte di un undefined behaviour il compilatore può emettere il codice 
che vuole (si usa dire che potrebbe pure scrivere il codice per 
formattarti il disco).
Ciao.
Newsgroup: it.comp.lang.c++
Titolo: PRINCIPIANTISSIMO

Esiste nel C++ un comando come il readkey nel Pascal? Praticamente un cout
che legge il valore appena inserito il carattere senza aspettare di battere
l'invio.
Grazie mille a tutti
Pex

 l'invio.
Non nel C++ standard.  Varie piattaforme ti offrono diversi
modi di svolgere questo compito, ma e` meglio chiedere
nei gruppi dediti appunto a piattaforme specifiche, come
ad esempio it.comp.programmare.win32 per Windows a 32
bit (Win/95, /98, /NT, /2000, /CE).
Alex

 l'invio.
Purtroppo no. Puoi però ricorrere a funzioni non standard tipo kbhit() o
getch() del Borland.
EMG

 Pex
Si, se usi  <iostream.h> per l'appunto usa :
cin >> [variabile];
cin è il contrario di cout ( per farla semplice ), e gestisce il flusso dello
standard input ( a meno di ridirezioni è la tastiera ). Se vuoi che funzioni
con una singola battuta di tasto ( anche un ENTER, cioè stringa nulla ) usa :
cin.get( [variabile] );
Ciao
Giulio
genghi...@tiscalinet.it

Newsgroup: it.comp.lang.c++
Titolo: (dai che non è OT) #define per il vc6

Domanda probabilmente molto banale:
qualcuno del ng sa precisamente (se c'è) quale sia la direttiva #define che
identifica il compilatore vc6 (in modo da poterla utilizzare per effettuare
determinate operazioni che servono solamente per tale compilatore) ?
Grazie.

 solamente per tale compilatore) ?
Vai su 
msdn.microsoft.com
, nel riquadrino in alto a sinistra digita
'"predefined macros"' (con le virgolette), scegli il secondo dei link
restituiti e vai alla sezione 'Microsoft-Specific Predefined Macros'.
Facile.
Ovviamente, tutto questo qui č OT.
Max

 Facile.
Grazie mille



#ifdef WIN32
(I suppose ....)
Ciao
F.
Newsgroup: it.comp.lang.c++
Titolo: Problemi con l'istanziazione di un servizio

Ciao a tutti, ho un problema strano e non riesc ad uscirne.
Allora la situazione è questa, win2k professional sp1, c'è un servizio 
sviluppato da noi che funziona benissimo, espone delle interfaccie e se 
richiamiamo queste interfaccie da VB tutto funziona perfettamente, da 
C++ no.
In pratica faccio la import, quando istanzio uno smart pointer mi da 
'Class not registered', qui di seguito il frammento di codice, so che 
non è bellissimo ma è una prova.
#import "c:percorso\servizio.exe"
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;
	_bstr_t bstErrorMsg = "";
	// initialize MFC and print and error on failure
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
	{
		// TODO: change error code to suit your needs
		cerr << _T("Fatal Error: MFC initialization failed") << endl;
		nRetCode = 1;
	}
	else
	{
		// TODO: code your application's behavior here.
		CString strHello;
		strHello.LoadString(IDS_HELLO);
		cout << (LPCTSTR)strHello << endl;
		HRESULT hRes;
		hRes = CoInitialize(NULL);
		if (hRes == S_OK)
			cout << "CoInitialize: OK" << endl;
		else
			cout << "CoInitialize: errore" << endl;
 
		try
		{	
			servizio::interfacciaPtr pFB(__uuidof(servizio::interfaccia));
		}
		catch(_com_error& e)
		{
			bstErrorMsg = e.ErrorMessage();
			cout << (char *)bstErrorMsg << endl;
			return FALSE;
		}
la riga dove viene trappato l'errore:
servizio::interfacciaPtr pFB(__uuidof(servizio::interfaccia));
grazie a tutti e saluti
|ciccio|

 
Risolto!
come?
il problema era nella seconda parte della riga:
servizio::interfacciaPtr pFB(__uuidof(servizio::interfaccia));
infatti lo smart pointer andava bene, ma poi __uuidofdoveva avere come 
parametro servizio::classe.
saluti a tutti
|ciccio|

Newsgroup: it.comp.lang.c++
Titolo: CBitmap senza sfondo

Ciao,
ho importato delle immagini in un programma.
Le immagini (bitmap a 16 colori) hanno come colore di sfondo il bianco. E'
possibile settare qualche attributo in modo che il colore di sfondo non
venga visualizzato?
Esiste un'altra soluzione?
Un grazie anticipato a tutti.

 venga visualizzato?
No, devi utilizzare la tecnica del mascheramento (vedi API BitBlt()).
Comunque sei OT.
EMG

Scusate...
dimenticavo un particolare fondamentale: uso il Visual C++ 5.0
Ancora ciao
Newsgroup: it.comp.lang.c++
Titolo: chiamate di comandi della shell

ciao a tutti.
vorrei da un prog C sotto W9x eseguire dei comandi della shell. con
unix c'č
system(...)
mentre per w9x quale č il comando? e in che .h sta?
grazie
--
Saluti
   Mik
#-----------------------#
 Mail: 
eg...@my-deja.com
  ICQ: 517691
#-----------------------#
Sent via Deja.com 
http://www.deja.com/
Before you buy.

,
Grazie comunque!!


Newsgroup: it.comp.lang.c++
Titolo: Computer Magazine e Borland C++

Qualcuno che ha comprato Computer Magazine mi sa dire che versione del
Borland C++ viene regalata?
--
Ciao, Alessandro
-----------------------------------------
Revel Team
http://come.to/RevelTeam
-----------------------------------------

 Borland C++ viene regalata?
Se intendevi Computer Programming (n. 76 del Gennaio 1999), il C++
Builder 1, versione decisamente obsoleta. Altrimenti non ti so dire.
EMG

La 1.0 standard

...


...

Ma secondo te davvero regalano la 5.0? E poi i clienti dove li trovano? Al
massimo c'è qualche patch o service pack...

...


Borland C++ viene regalata?
L'ho comprata questa mattina: Computer Magazine N°4 Aprile 1999.
Regalano il BorlandC++ v5.02  ** COMPLETO **. Pensa che e' la copia del cd
originale con tanto di dimostrativi (C++Builder v1.0) scaduti e quindi
inutilizzabili!!!! (i demo intendo, il prog funge)
Ottimo affare! Lo consiglio a tutti!
ciao
donCiccio


Jo Parrello - OWL/C++ Programmer
http://www.geocities.com/SiliconValley/Hills/8145
(
jopar...@geocities.com
)

>
Ragazzi, voi che ne capite di C/C++ e compilatori annessi vi posso fare una domanda??
vorri sapere se con ilcompilatore borlad in questione si puo compilare in "formato" per processori di tipo
H/PC (mips ..sh3 ecc.) oppure serve per forza quello di microsoft?? 
Grazie a tutti 
Ciao DAS


Che sappia io, il Borland in questione e' solo per proc Intel S.O. MS-DOS e
Win16 o win32.
Credo che un cross-compilatore sia il DJPP (scusate se il nome non e'
guisto) quello free per intenderci.
ciao
donCiccio
Newsgroup: it.comp.lang.c++
Titolo: c++ da mandrake 8.2 a 9.0

Sto seguendo un corso di c++ che ho trovato sul web, fornito in html + 
esempi .cpp.
da quando ho aggiornato la mandrake da 8.2 a 9.0 mi segnala degli errori che 
invece prima non uscivano.          
Il problema principale credo che stia suhli header: mi dice ad esempio che 
iostream.h e' obsoleto.
se al suo posto metto iosteram, sparishe l'errore ma considera cin e cout 
come variabili e mi dice che non le ho dichiarate.
Scusate se il problema e' banale ma sono molto niubbo
Spero di essere stato chiaro nell'esposizione del problema.
Grazie a tutti per l'attenzione
 

Pamoramix ha scritto:

Non conosco la differenza tra le distribuzioni 8.2 e 9.0 della
Mandrake, ma posso ipotizzare che tra la 8.2 e la 9.0
cambia la versione del gcc fornita.
La prima cosa che puoi fare, comunque, è di aggiornare
all'ultima versione del gcc (che è la 3.2)
Tornando al tuo specifico problema, la possibilità di fare
#include <iostream.h>
è solitamente lasciata per retrocompatibilità con codice
C++ pre-standard.
In C++ standard devi invece fare
#include <iostream>
che ha come effetto collaterale quello di includere tutto
ciò che c'è in iostream nel namespace std::
Quindi a te dovrebbe bastare mettere, subuto dopo gli
include, la riga
using namespace std;
e tutto dovrebbe tornare a funzionare.
Tieni però presente che usare la direttiva using in questa
maniera può avere effetti collaterali (in pratica elimina
i vantaggi dei namespace), quindi non abusarne.
Se cerchi su questo NG nei messaggi vecchi non più
di 2 settimane trovi un thread "Programmino da newbie"
dove si discute della cosa.
ciao
--
Gerolamo

Newsgroup: it.comp.lang.c++
Titolo: Sostituzione di doppi apici

Io devo prelevare una stringa da una textbox e poi inserirla in un database
tramite una query !
Ora il problema stanel fatto che se nel testo della textbox i sono dei doppi
apiti ( " ) la query va a farsi friggere !
Come potrei fare per sostituire i doppi apice e raddoppiarli ( "" ) in modo
che non diano fastidio alla query ?

 modo che non diano fastidio alla query ?
Scrivi una funzioncina che lo faccia. Una cosina del genere, ad esempio:
 sub raddoppia_i_doppiapici( std::string& s )
 {
   std::string newstr;
   for( size_t i = 0; i <  s.size(); ++i )
   {  if( s[i] == '"' ) newstr += '"';
      newstr += s[i];
   }
   s.swap(newstr);
 }
Comunque, come ho detto, la strada giusta è l'altra.
Max
Newsgroup: it.comp.lang.c++
Titolo: Imparare IrrLicht

Ciao a tutti,
Vorrei cominciare a creare videogames, ho cercato molto su Google
(probabilmente non so cercare :-((( ) ma non ho trovato un buona guida...
inoltre ho saputo di IrrLicht... è buono per iniziare? guide?
Spero possiate darmi "delucidazioni" in merito.
Ciao,
--
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site (
http://www.tekkentag.altervista.org/
 )
Co-Webmaster di SceptilePage (
http://www.sceptilepage.altervista.org/
 )
Account Messenger: 
thetot...@msn.com

 Spero possiate darmi "delucidazioni" in merito.
Irrlicht č opensource, quindi ci sono anche i sorgenti. un tutorial in 
italiano su irrlicht č su 
www.playerworld.it

 italiano su irrlicht è su 
www.playerworld.it
Umh, si...
Ho trovato un ottima guida su InsanityKindom, un link da playerworld.
Bye,
--
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site (
http://www.tekkentag.altervista.org/
 )
Webmaster di SceptilePage (
http://www.sceptilepage.altervista.org/
 )
Account Messenger: 
thetot...@msn.com
MyBLOG (NEW!!) 
http://spaces.msn.com/members/itanet/

 Ho trovato un ottima guida su InsanityKindom, un link da playerworld.
non ti arrabbiare, ma sei di nuovo OT (e pesantemente. irrlicht è un motore 
grafico, cioè è una specie di libreria per fare videogiochie quindi non 
c'entra con il c++ vero e propio (qui si prla di c++ standard con le 
librerie standard. irrlicht non è una libreria standard, ma la devi 
scaricare da internet. il c++ in se per se non ha nessun motore grafico)). 
domande di questo genere postale su it.comp.giochi.sviluppo
Bye
Newsgroup: it.comp.lang.c++
Titolo: Eredità ...

Salve,
la domanda del giorno č questa:
in questo caso:
class re:public pezzo
{
 public:
        re(const char* filexnu) : pezzo(const char* filexnu);
        ~re();
};
la sintassi per far ereditare la parte pubblica di una classe ad
un'altra č giusta, cioč, mi sto riferendo a manuali datati, oppure
commetto un errore io?
Grazie per l'interessamento.

Si ma c'è un errore (le graffe) nel tuo sorgente.
class re:public pezzo
{
 public:
        re(const char* filexnu) : pezzo(const char* filexnu) {/* altro
codice*/};
        ~re();
};



Ok, grazie, ma se io voglio usare lo stesso costruttore della clessa
base (pezzo), che sintassi devo usare?, è totalmente inutile per me
reindicare un'altra volta lo stesso pezzo di codice.

 reindicare un'altra volta lo stesso pezzo di codice.
Vedi l'esempio. Non ci sono alternative, ma nemmeno perdite di
efficienza.
Ciao,
Nicola

> >};
Il mio programma:
class pezzo
{
 pezzo(consta char* file);
 ~pezzo();
 scompari();
 esplodi();
};
se io aggiungo sotto quello che mi avete indicato fino ad ottenere:
class pezzo
{
 pezzo(consta char* file);
 ~pezzo();
 scompari();
 esplodi();
};
[...]
QUI C'è IL COSTRUTTORE E  LE FUNZIONI SCOMPARI ESPLODI
[...]
class re:public pezzo
{
public:
          re(const char* filexnu) : pezzo(const char* filexnu) {}
          ~re();
};
int main()
{
 [. . .     CODICE . . . ]
}
Il compilatore mi segnala errori nella funzione main, che scompaiono
se tolgo la classe re, tra questi c'è un Expression syntax error nella
riga in cui dichiaro il costruttore di re, il costruttore ereditato.
Qualcuno mi spiega il perchè?

           re(const char* filexnu) : pezzo(const char* filexnu) {}
            re(const char* filexnu) : pezzo(filexnu) {}
	Mauro
Newsgroup: it.comp.lang.c++
Titolo: Librerie grafiche... semplici!

Ciao a tutti,
volevo sapere se esistono delle librerie grafiche free di semplice utilizzo 
per C++ in ambiente windows. Più che altro per fare un po' di pratica e per 
realizzare programmi molto semplici, quindi nulla di ultrasofisticato come 
la MFC...
Grazie

 ha scritto:

In C++ non sei obbligato ad usare il workflow MFC, e cumunque non
ha nulla a che fare con la grafica.
Le API Win32 GDI e GDI+ offrono potenti strumenti per la gestione
di primitive grafiche.
Esistono molte librerie gratuite e open source per la "grafica",
ma dovresti precisare meglio quello che stai cercando.

 ma dovresti precisare meglio quello che stai cercando.
Grazie. Quello che a me interessa č poter evitare l'interfaccia da riga di 
comando, quindi in sostanza poter gestire finestre, bottoni, campi ed aree 
di testo, combo... e gli eventi ad esse assoiato. In Java ci sono ad esempio 
le librerie AWT e Swing... In piů molti IDE (ad es. Netbeans) consentono di 
"disegnare" tale interfaccia senza scrivere codice, e di doversi occupare 
solo di associare gli eventi alle funzioni che li gestiscono. Per C++ mi 
pare di aver capito che non c'č nulla di standard in proposito... Consigli 
su cosa orientarmi? Manuali/guide on line?
Grazie

>  Consigli  su cosa orientarmi? Manuali/guide on line?
io mi sono trovato bene con wxdevcpp, che usa le librerie wxwidgets.

pare di aver capito che non c'è nulla di standard in proposito...
Ogni buon compilatore per lo sviluppo di applicazioni Windows ha
un editor di risorse (finestre, bottoni, campi ed aree di testo,
combo...), ad ogni elemento assegni un ID che gestirai nel codice
interrogando la coda dei messaggi.
Ti assicuro che in rete trovi centinaia di esempi per gestire
finestre di dialogo e i suoi controlli (un pulsante o un combo
box e' chiamto "controllo").
Ho trovato DialogBlocks della Anthemion come un buon tool per lo
sviluppo di GUI.
Purtroppo temo di aver capito che non hai molta dimestichezza
nello sviluppo di applicazione Win32, quindi ti consiglio di
chiarirti le idee e continuare la discussione nel gruppo
it.comp.programmare.win32

 solo di associare gli eventi alle funzioni che li gestiscono.
Stai cercando Borland C++Builder, solo che ancora non lo sai :-)

Grazie a tutti. In effetti non conosco molto la programmazione di 
applicazioni win32, mi sono abituato troppo bene con l'indipendenza dalla 
piattaforma di java, che mi ha permesso, sino ad ora, di non preoccuparmi di 
molti aspetti legati al sistema operativo... Farò tesoro di tutti i vostri 
consigli.
Newsgroup: it.comp.lang.c++
Titolo: COM e memoria

Ciao a tutti,
sicuramente l'argomento e' poco rivolto al C++, anche se e' il linguaggio
che sto utilizzando per la creazione degli oggetti COM in questione,
per questo mi scuso anticipatamente, ma provo ugualmente a sottoporre
la mia questione, nella speranza di trovare qualche esperto sull'argomento.
Il problema e' il seguente:
prendiamo in considerazione un'architettura client server, dove il server e'
un componente COM, e supponiamo che per il passaggio dei parametri
nei metodi esportati dalle interfacce del componente stesso, venga
allocata della memoria in maniera dinamica da parte del client.
Tale memoria viene copiata poi dal sistema di marshaling nel componente,
per realizzare il passaggio dei parametri ; sucessivamente, questa
dovra' essere rilasciata, e qui la cosa mi si presenta oscura, evidentemente
perche' non l'ho ben compresa, dovra', quindi, essere rilasciata unicamente
dal client che l'ha allocata, oppure puo' essere rilasciata anche dal
componente COM che la riceve, o ancora, da entrambi?
Per l'allocazione ho utilizzato la funzione CoTaskMemAlloc() e per
il rilascio CoTaskMemFree().
Se puo' essere di qualche interesse, la piattaforma di sviluppo e'
Windows NT Server 4.0 con SP4 ed il tool il Visual C++ 6.0.
In relazione al fatto che l'argomento e' un po' OT su questa ML,
potrebbero comunque essere gradite indicazioni su altre ML dove
poter sottoporre lo stesso quesito.
ciao, Franco.
--
Posted from [194.184.225.66] by way of 
law2-oe2.hotmail.com
 [216.32.180.106]
via Mailgate.ORG Server - 
http://www.mailgate.org

,

[ object,
  uuid()
] interface IFoo : IUnknown {
   HRESULT  GetSet( [in] int Size1,
                    [in, sizeis(Size1)] char * pBuff1,
                    [out] int * pSize2,
                    [out , sizeis(* pSize2)] char **ppBuff2);
}
CLIENT -------------------------
char pBuff1[256];
char pBuff2,
int  nReturned
pIFoo->GetSet(256,
              pBuff1,
              &nReturned,
              &pBuff2);
CoTaskMemFree(pBuff2);
SERVER ----------------------
IFoo::GetSet(int Size1
             char * pBuff1
             int *pSize2
             char ** ppBuff2){
    CoTaskMemFree(pBuff1);
    char pBuff2[256];
    *pSize2=256;
    *ppBuff2=pBuff2;
     return ERROR_SUCCESS;
}
--== Sent via Deja.com 
http://www.deja.com/
 ==--
---Share what you know. Learn what you don't.---

 un componente COM, e supponiamo che per il passaggio dei parametri
Che tipo di componente?
In Process activation,  ( works in application adress space ) DCOM ( altra
macchina ) oppure service ( altro processo )?
Comunque, leggi Threading Models and Apartments di "Inside Distributed COM",
Guy Eddon & Henry Eddon, ISBN 1-57231-849-X
Alexei

Ciao,
il componente e' un componete DCOM, ovvero gira su
un'altra macchina, per la precisione, e' incluso in una
DLL inserita nel Microsoft Transaction Server (MTS).
ciao, Franco.
--
Posted from [194.184.225.66] by way of 
law2-oe12.hotmail.com
 [216.32.180.116]

Newsgroup: it.comp.lang.c++
Titolo: Thread

Piccolo problemino.
Parte del sorgente (Visual C++ 6):
void CColonneDlg::leggidb()
{
	colonne db(NULL);
	int n = 0;
	if (db.Open(CRecordset::snapshot, "colonne"))
	{
		while (!db.IsEOF())
		{
			(elaborazioni varie)
			db.MoveNext();
		}
	}
	db.Close();
}
void CColonneDlg::OnVai()             // Vai e' un pulsante
{
	AfxBeginThread(leggidb);      //**********
}
Come mai in compilazione ho l'errore sulla riga **********:
error C2665: 'AfxBeginThread' : none of the 2 overloads can convert
parameter 1 from type 'void (void)'
???
Ho provato a far restituire a leggidb() tutti i tipi possibili, anche
AFX_THREADPROC, niente !
Ah, gia che ci sono, come faccio a minimizzare il mio prg nella tray
anziche' nella barra delle applicazioni ?
Bye e grazie
PC





Ehila'.
Come avrai capito sono alle prime armi con il VC e non mi trovo
ancora.
Volevo provare, didatticamente, a far interagire il thread con dei
campi del dlg. Semplificando ancora di piu', una cosa di questo tipo:
static void funzione_thread()             // (2)
{
  m_campo = "modifica effettuata";  // (1)
  UpdateData(FALSE);
}
void CProvathreadDlg::Onbottone() 
{
  AfxBeginThread(funzione_thread);             // (2)
}
(1) m_campo e' un edit sulla dlg CProvathreadDlg. Come faccio a
riferirmi a lui ? (idem per UpdateData)
(2) c'e' un modo per passare dei parametri alla funzione_thread ?
Es.
static void funzione_thread(int a, int b)             // (2)
{
  m_campo = a + b;
  UpdateData(FALSE);
}
Ho fatto un'altra prova riportata come esempio in un testo:
UINT ThreadProc(LPVOID param)
{
  ::MessageBox((HWND)param, "Thread attivato", "Thread", MB_OK);
  return 0;
}
void CTHREADView::OnStartthread() 
{
  HWND hWnd = GetSafeHwnd();
  AfxBeginThread(ThreadProc, hWnd, THREAD_PRIORITY_NORMAL);
}
Questo funziona. Una sostanziale differenza potrebbe essere che il mio
prg e' DDI mentre l'esempio e' SDI.
Sto andando in crisi mistica. E' frustrante quando, davanti ad un
argomento nuovo, ti insabbi nei concetti piu' stupidi...
Ciao e grazie.
PC

 argomento nuovo, ti insabbi nei concetti piu' stupidi...
La gestione dei thread non e' poi cosi tanto stupida.
Meglio se approfondisci quanto puoi trovare nella documentazione del
compilatore prima di considerarti insabbiato.
MM