mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Esempi in C++

Ciao a tutti, sono un programmatore Java, ma in questo caso non c'entra
molto...
Mi servirebbe di sapere dove rimediare alcune indicazioni, info e
quant'altro per aprire una socket con un eseguibile C++, e poter inviare una
strutture dati a mio piacimento (o meglio una serie di bytes)
Dove posso cercare? Ho già provato su alcuni siti (
www.programmazione.it
 ed
altri simili, ma non ho trovato nulla...)
mi basterebbe anche un esempio fessissimo(perchè la cosa è molto banale, lo
so!:(( ) postato qui...
Grazie Mille
Ciao
Giuseppe

 strutture dati a mio piacimento (o meglio una serie di bytes)
(Che sia il caso di metterlo nelle FAQ italiane?)  Sul newsgroup
comp.unix.programmer veniva postata regolarmente la unix-socket-FAQ;
da diverso tempo questo non accade piu', ed il sito indicato e'
irraggiungibile --- ma le FAQ sono comunque leggibili attraverso il
sito 
http://www.faqs.org/
 (seguire i links a comp, comp.unix.programmer,
unix/socket-faq).
Caveats: e' C e non C++; sono sockets Unix; ma gli esempi funzionano,
ed il testo e' chiaro ed esauriente.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
Murphy's law: "Anything that can go wr
/bin/fortune: segmentation fault - core dumped

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

vorrei un consiglio.......
come tool di sviluppo è migliore visual studio c++ 5 o builder c++......
vorrei anche i motivi per favore.....e le versioni disponibili per builder
c++....
ciao e grazie...

 wrote:
: vorrei un consiglio.......

: 
:
dipende da quello che devi fare. il c++ builder 5 (e' in sviluppo il 6)
e' un ambiente rad (pensa ad un visual basic per il c++) ed quindi e'
ottimo per sviluppare programmi con interfaccia grafica in modo veloce.
inoltre borland ne sta sviluppando una versione anche per linux.
invece il visual c++ non e' molto "visual" tuttavia si e' affermato
come lo standard visto che e' di microsoft. a parer mio e' un tool piu'
da hacker del c++, con possibilita' di accedere piu' a basso livello.
inoltre la documentazione fornita e' migliore di quella del c++builder.
tuttavia a mio parere le mfc sono troppo di basso livello e quindi un
po' complicate da programmare. io le ho usate e non penso sia una
libreria ben progettata (comunque e' solo una mia opinione).
tieni presente che sta per uscire la nuova versione di visual studio,
(chiamato 
vs.net
) e che, pare, cambiera' parecchie cose, quindi forse
potresti aspettare  un po' e vedere sia 
vs.net
 sia c++ builder 6.0
io mi sono fatto questa idea: per microsoft il tool rad e' il visual
basic, mentre invece il visual c++ e' per chi ha esigenze di codice
molto veloce. il visual c++ e' indicato per scrivere componenti com
ad alte prestazioni e con minimo ingombro di memoria (atl), ma questo
ha un prezzo: e' piu' complicato del c++ builder.
[ed adesso aspetto i flames...]
Newsgroup: it.comp.lang.c++
Titolo: Cosa significa "signature" e "offset" ?

Scusate, ma non sapendo a chi chiedere ho pensato a questo newsgroup.
Per recuperare un file con estensione DBX (il file è di Outlook e contiene
le mie email) da un disco danneggiato, il programma RawRecovery della
Ontrack Data Recovery mi chiede di specificare queste due informazioni:
il valore "signature" in esadecimale  di un file con estensione DBX
il valore "offset" di un file con estensione DBX
Se comunico al programma queste due informazioni riferite ad un file DBX, il
programma cercherà questa tipologia di file sul disco fisso e tenterà il
recupero.
Il problema è che io non so cosa sia una "signature" e un "offset" di un
file. Qualcuno mi può aiutare?
Grazie
Bat

le mie email) da un disco danneggiato, il programma RawRecovery della
[cut]
http://www.google.it/search?q=signature+offset+outlook+dbx&ie=ISO-8859-1&hl=it&btnG=Cerca+con+Google&lr=
Buon divertimento!
Stefano.

 Stefano.
Non č un grande aiuto visto che io non so cosa significhi signature e
offset.
Comunque pensavo che in questo newsgroup qualcuno lo sapesse. Comunque se
non lo sapete,  potete dirmi almeno dove chiedere?
Ciao
Bat

 wrote in message
news:nt1T9.96081$Ou4.3...@twister2.libero.it...

Se vai a questo indirizzo:
http://www.bronzware.com/GerbMagic/rid.htm
viene spiegato bene e graficamente cosa sono signature e offset di files di
tipo RID (raster image data)
Ogni tipo di file utilizzato da certe applicazioni ha certe estenzioni .zip
, .dbx, .bmp, ecc..
Per cui queste applicazioni hanno bisogno di un header del file che descriva
le informazioni in esso contenuto.
La prima informazione di questo header da' appunto la signature che e'
composta di 4 bytes ed e' in sostanza un codice esadecimale che viene
controllato dall'applicazione perche' questa si assicuri che il file sia del
tipo che conosce (in questo caso di tipo RID, nel tuo di tipo DBX).
Non basta controllare l'estensione del file perche' ci sono files con stessa
estensione di applicazioni diverse e inoltre l'estensione e' facilmente
modificabile dall'utente.
L'offset ti dice invece il numero di bytes di cui e' composto l'header
files, per far saltare l'applicazione direttamente ai bytes dei dati (in
questo esempio di RID, l'offset era di 0x30 = 48 bytes ed infatti i l'header
e' composto di 12 words di 4 bytes ciascuna).
Ora ricavarsi la signature di files tipo DBX in teoria e' facile, basta
aprirne uno con un editor esadecimale e vedere i primi 4 bytes.
L'ho fatto col VisualC++ ed ho ottenuto CF AD 12 FE
Il difficile e' ricavarsi l'offset, in quanto la sua posizione varia col
variare del tipo di file e quindi dell'header.
Qua addirittura ti da il codice sorgente in C++ per decodificarlo, ma non
sono riuscito a trovare l'offset:
http://oedbx.aroh.de/
Comunque se ti apri un file .dbx con un po' di fortuna e studio potresti
trovarlo.
Maurus

 ha scritto nel messaggio
news:avkru7$ft2a3$1...@ID-125555.news.dfncis.de...


 Qualcuno mi può aiutare?
Su altri ng, sicuramente. :-P
Scusate l'OT.
The Student
Newsgroup: it.comp.lang.c++
Titolo: R: Apertura file

 >
 Se sei d'accordo la metto sotto questa forma :
 Dovrei aprire un'applicazione, dopo di ché aprire un file relativo a
 l'applicazione aperta.
 Grazie

  l'applicazione aperta.
Purtroppo, il C++ non offre funzionalita` standard e portabili
per svolgere questo compito.  Ti conviene dunque chiedere sui
gruppi relativi alle specifiche piattaforme di tuo interesse,
visto che su ogni data piattaforma e` probabile che almeno un
modo di svolgere questo compito ci sia.
Alex

  l'applicazione aperta.
Ti rispondo cosi':
In che piattaforma?
in Unix/Linux si fa in un modo che non conosco, a meno di aprire il file
tramite iofstream, ma non e' quello che chiedi...
in Win32 si fa tramite le API
P.S. visto che hai gia' postato su it.comp.programmare.win32, chiudiamo il
thread.
Ciao, Davide.

Newsgroup: it.comp.lang.c++
Titolo: Cercasi include conio.h per Borland

Sto cercando la libreria conio.h per Borland C++ Builder 1.0.
Sapete dove posso trovarla?
Giorgio.

...


...

Newsgroup: it.comp.lang.c++
Titolo: puntatori costanti e costanti puntatori. Boh ?

Ciao,
perche` se dichiaro:
const cgar* pc="asdf";
 e eseguo pc[3] = 'a' ho un errore e invece con pc = "ghjk"; e` tutto ok
?
Bye, Max
--
-------------------------------
Maxmilian Grillo
Consultancy & Projects Group
via della Camilluccia, 693
tel. 06 36290933
Work like you don't need money,
Love like you've never been hurt,
And dance like no one's watching
--------------------------------

 e eseguo pc[3] = 'a' ho un errore e invece con pc = "ghjk"; e` tutto ok
perche' pc e' una variabile che contiene l'indirizzo di una locazione
di memoria, a partire dalla quale sono presenti 5 caratteri non
modificabili (costanti), ma il valore della variabile puntatore
e'....variabile ;)
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------
Dovro' prendere lezioni di Internet, 
se non sai di Internet non ti considera nessuno 
(Carmen di Pietro) 
-----------------------------------------------

Newsgroup: it.comp.lang.c++
Titolo: Gruppo di continuita'

Mi chiamo Luciano, ho acquistato un gruppo di continuita', ma il software
allegato non mi permette di spegnerlo dopo n minuti di inattivita' del
sistema, cosi' mi chiedevo se esistono API in windows95 per la gestione dei
suddetti gruppi.
Ciao.

...


Newsgroup: it.comp.lang.c++
Titolo: Free C++ Builder

Salve, sono nuovo del NG e mi chiedevo dove poter trovare un valido
compliatore c/c++ che fosse liberamente distribuibile (per distribuzione
stidenti universitari).
Mi avevano detto che su 
www.inprise.com
 davano gratis la versione 1 del
Borland c++ builder ma il sito risulta inaccessibile.
Grazie a tutti!
CC

Borland c++ builder ma il sito risulta inaccessibile.
Su Inter.Net danno la versione 3 Standard completa, non trial. Non so
con che tipo di limitazioni (e' un pochino vecchiotta, ma per molti
usi va bene).
Altrimenti la Inprise ha reso free (non so ancora in che senso free)
il suo compilatore BCC,
http://www.inprise.com/bcppbuilder/freecompiler
--
 (o-  | c:\> win2000patch001.exe
 //\  | This Microsoft(c) patch fix all bugs present. All rigth reserved.
 V_/_ | Insert Linux boot disk to continue ... loading kernel ...
http://pinguin.linuxbox.com
 r.salmaso(at)
flashnet.it

> [Un po OT, cmq puo' interessare anche ad altri]
yes, i had to admit it was slightly OT, per dirla alla yankee!
credo di avere trovato cio che cercavo in lccwin32... purtroppo però il link
che mi hai dato ( 
http://www.inprise.com/bcppbuilder/freecompiler
 ) non
funziona in quanto l'intero dominio 
inprise.com
 non è accessibile... vabbè
speriamo sia solo manutenzione! ;-)
Ciao e grazie mille!
CC


http://www.inprise.com/bcppbuilder/freecompiler
Si , ma che te ne fai?
Se sei un programmatore builder (cioe visuale) non sei in grado di
creare le form tutte coll'ultraedit
-----------------------------------------
La vita e' l'opera di un regista mediocre
e di un cattivo sceneggiatore
Newsgroup: it.comp.lang.c++
Titolo: Puntatore al membro di un oggetto

Salve a tutti
Ho una funzione a cui devo passare il puntatore ad un'altra funzione come
parametro, del tipo:
long D3DEnum_EnumerateDevices(
       long (*AppConfirmFn)(DDCAPS*, D3DDEVICEDESC*) );
La funzione che dovrebbe essere passata come parametro però nel mio caso è
in realtà il membro di un oggetto.
Ora, se provo a ricavare il puntatore a questo membro con una dichiarazione
del tipo:
long (*AppConfirmFn)(DDCAPS*, D3DDEVICEDESC*)=&oggetto::funzione_membro;
Il compilatore m'insulta dicendo che non può convertire da
(__thiscall oggetto::*)
a
(__cdecl*)
Se provo allora a modificare la dichiarazione sopra come:
long (oggetto::*AppConfirmFn)(DDCAPS*,
D3DDEVICEDESC*)=&oggetto::funzione_membro;
allora sarà nella funzione a cui devo passare *AppConfirmFn come parametro
che non potrà essere effettuata la conversione opposta (da __cdecl* a
__thiscall oggetto::*)
Ci vorrebbe una specie di cast...
Qualcuno conosce una possibile soluzione ?
Vi ringrazio per l'attenzione
Saluti
Damianò

 __thiscall oggetto::*)
Il primo problema e' che, come ti sei accorto, una funzione libera ed
una funzione membro non statica non hanno lo stesso tipo. Il problema
piu' rilevante pero' e' che una funzione membro non statica ha bisogno
di un oggetto su cui essere chiamata e la tua D3DEnum_EnumerateDevices()
non ha modo di sapere quale.
Se non puoi modificare l'interfaccia di D3DEnum_EnumerateDevices() devi
scrivere una funzione ponte, libera o membro statico di oggetto, che
inglobi la chiamata a oggetto::funzione_membro sull'istanza di oggetto
che ti serve.
Ciao,
Nicola

 (__cdecl*)
Un puntatore a una funzione membro (non statica) non può esere convertito
in un puntatore a funzione, non c'è cast che tenga. Il motivo è molto
semplice: un puntatore a funzione membro non può essere usato se non in
combinazione con un instanza della classe, quindi qualsisiasi tipo di
casting è privo di senso.
Nel tuo caso, quindi, D3DEnum_EnumerateDevices potrà soltanto invocare una
funzione normale, o una funzione membro statica. Se una funzione statica
non è sufficiente per la tua applicazione, perchè, probabilmente, hai
l'esigenza che quella chiamata giunga a un membro di un instanza specifica
di un oggetto, si possono usare diverse tecniche. Un esempio:
  class AppConfirmFn
  {
        static oggetto* the_handler;
        public:
	static set_handler( oggetto* obj )
        {
           the_handler = obj;
        }
        static long delegate( DDCAPS* a, D3DDEVICEDESC* b) ;
        {
             return the_handler->funzione_membro( a, b );
        }
  };
  int main()
  {
     oggetto    obj;
 
     AppConfirmFn::set_handler( &obj );
 
     D3DEnum_EnumerateDevices( &AppConfirmFn::delegate );
  }

Ho capito, vi ringrazio
Saluti
Damianň
Newsgroup: it.comp.lang.c++
Titolo: multitab

salve a tutti!
da umile princiupiante chiedo
:
come posso fare per creare piu tabelle premendo un pulsante e sistemare
su ognuna di essa lo stesso componente?
stile firefox, per intenderci: ogni nuova tabella ha la sua finestra
browser...
grazie a tutti

 browser...
Su questo ng si parla del /linguaggio/ C++ (standard), non di 
particolari framework, ambienti di sviluppo e piattaforme.
Kiuhnm

 Kiuhnm
ops scusate!
quindi dove posso chiedere?

 quindi dove posso chiedere?
su un newsgroup che parla di di particolari framework, ambienti di
sviluppo e piattaforme

Mancuso Raffaele ha scritto:

ROTFL!
--
Roal Zanazzi


wow davvero? proprio non ci avevo pensato...
non è che, magari, ne conosci uno?


Se è linux, c'è it.comp.os.linux.development; ci sarà un analogo per
windows.
Se è GTK, guarda il sito delle GTK per vedere dove forniscono
supporto; idem per altri framework.
Comunque google groups ti indicherà la via.
Ciao
  Andrea

va bene, cercherò...


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

ciao,
dove posso trovare sul internet documentazione sui template?
grazie.

 wrote in message
Uiyc8.1720$Zf3....@twister2.libero.it...


Newsgroup: it.comp.lang.c++
Titolo: Consiglio su guida





Qualcuno sa indicarmi una buona guida in italiano 
su C++ (non borland / visual) che parta dalle basi e che sia i più conforme 
possibile allo standard?


 


Se qualcuno conosce le seguenti guide può esprimere 
il suo parere.


 


1) C++ Tutto & Oltre 


Autori Vari 


Sams - Apogeo


 


2) Guida Completa C++ 2ª edizione


Autore: Schildt


Editore: Mc Graw Hill


 


Grazie


 



Autore: Schildt
Da quanto ho visto in rete sull'autore, lo sconsiglio...
in mezzo a tante cose vere ci sono sottili falsita`
che possono causare spiacevoli problemi.
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

Grazie
Di niente
--
-----------------------------------
Marco Pinna
e-Mail: 
fand...@eudoramail.com
-------------------------------------

terra e magari qualche cosa sulle strutture 
dati.


 


Per "molto a terra" intendi circa il C/C++ o la 
programmazione in generale?


 


 



Per "molto a terra" intendi circa il C/C++ o la programmazione in generale?
L'uno e l'altro per il C++  ti consiglio il tutorial del Marotta che ti
porta ad un buon livello per poter affontare il libro dal punto di vista
sintatico, ed il libro di algoritmi e strutture dati se ti stai avvicinando
da poco alla programmazione, poi non ti conosco e non so come sei messo,
magari non ne hai bisogno
ciao

Newsgroup: it.comp.lang.c++
Titolo: !!! Problema con i Tool Tips

Ciao
	sto scrivendo un'applicazione con VC++ 5.0. Ho creato lo scheletro
dell'applicazione con AppWizard e ho dotato la finestra principale di
una ToolBar. I tasti della toolbar hanno tutti il ToolTip. Questi però
funzionano solamente su NT 4.0 e Windows 95 dove ho l'ambiente di
sviluppo mentre non funzionano su un'altro windows 95 dove ho provato ad
installarlo.
Nota: sul windows 95 dove i tooltips della mia applicazione non
funzionano, la barra di office e le altre applicazioni office li
mostrano invece correttamente.
Cosa c'è che non va?
Ho forse dimenticato una DLL o qualcos'altro?
Ringrazio anticipatamente chiunque mi darà una mano.
Ciao
	Ambrogio

installarlo.
era successo anche a me, non ricordo piu' esattamente il motivo, se
era una quesione di DLL o di bug. A memoria mi pare che fosse dovuto
ad un bug nelle MFC del vc 5.0 risolto poi con il service pack 1.
Controlla nella knowledge base MS io l'avevo trovato.
     _______ _____         
    / _____// ___ \     Gianpaolo Bottin  - 
bott...@tin.it
 
   / /____ / /__/ /     Bruino (TO) - Italy
  / //_  // ___  <      
 / /__/ // /__/ /       "Gli errori che non si trovano hanno un'infinita varieta',
/______//______/        mentre quelli che si trovano sono per definizione finiti."

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

ho trovato quelle poche righe che avevo detto di aver letto qualche
tempo fa...
Vedi:
http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&threadm=pZRmc.216780%24rM4.9120361%40news4.tin.it&rnum=3&prev=/groups%3Fhl%3Dit%26lr%3D%26ie%3DUTF-8%26scoring%3Dd%26q%3Dcast%26meta%3Dgroup%253Dit.comp.lang.c%25252B%25252B
ecco la risposta,
le cose vanno sempre a finire così, si devono fare da se ! ;)
è un vero peccato che i ciarloni non siano così espertoni...
class CStringa  
{
private:
	char str[20];
public:
	operator char*(){ return str;}
public:
	CStringa(){ strcpy(str,"fregatura"); }
	virtual ~CStringa(){}
};
data una classe CStringa,
che non ha nulla a che vedere con un char...
se scrivo,
cout<< stringa;
l'oggetto tipo CStringa verrà convertito in char*
et vualé
conversione automatica ;)

 vi ringrazio molto per il tentativo ma non è quello che cercavo
Max

 conversione automatica ;)
e questo mi sembra abbastanza disdicevole, a prescindere dai tuoi scopi. 
Se questa conversione manca in std::string, ci sarà un motivo?
-- 
Son capaci tutti di dire "ti amo tanto" mentre stan facendo l'amore...

 č un vero peccato che i ciarloni non siano cosě espertoni...
Senza polemiche, ti consiglio un buon libro di sintassi di I++, cioč di
Italiano! :o)

> e fece un esempio con 'operator int()', tu rispondesti:
ops ;)
mi sa che ho detto qualcosa di troppo ;)
pardom
Newsgroup: it.comp.lang.c++
Titolo: C++ Builder standalone

Salve a tutti,
da alcune settimane ho installato sul mio PC il C++ Builder 3, avendolo
trovato gratis su una rivista risento un po' della mancanza di manuali.
Prima di acquistare una versione nuova originale volevo cimentarmi in alcuni
piccoli prg, tanto per verificare a che punto mi trovo con il C.
La mia domanda e':
come accidenti si fa a compilare un programma in modalita' standalone???
Quando provo a modificare il pannello delle opzione ottengo si un
cambiamento delle dimensioni dell'eseguibile, ma se trasporto altrove il
programma non funziona perche' mancano molti file accessori (VCL?).
Come funziona?

 programma non funziona perche' mancano molti file accessori (VCL?).
Vai su Project\Options
Nella tab Packages deseleziona la casella Build with runtime packages
Nella tab Linker deseleziona la casella Use dynamic RTL

Grazie mille......ovviamente funziona!!!!


Newsgroup: it.comp.lang.c++
Titolo: Eseguire un file...?

Chiedo scusa per la banalità della domanda in questione.
Sono un programmatore Visual Basic; ho acquistato un Borland C++ Builder nel
'97 e non sono ancora riuscito a impararlo :o( Col C++ B, considerato che
genera file non dipendenti da runtime, vorrei realizzare un autorun.
L'interfaccia è molto semplice da realizzare, ma avrei bisogno di sapere
come eseguire un file che si trova nella stessa directory dell'autorun.
Ad esempio, vorrei eseguire il file setup.exe che si trova nella stessa dir.
dell'autorun: come faccio?
E se il file non avesse estensione .exe ma, per esempio, .txt o .hlp? In VB
avrei utilizzato l'API ShellExecute, ma qui non saprei come muovermi.
Aggiungo anche che non so nulla di C/C++.
Grazie per la pazienza!
Umberto Meroni
umb...@vbp.it
---
Sito Visual Basic: 
http://www.vbp.it
Sito Comune VB: 
http://www.murialdo.it/it_lang_vb
---

Utilizza la stessa funzione che usavi tu con il VB, cioé l'API
ShellExecute!!!
Bye bye
Matteo F.

 ShellExecute!!!
Newsgroup: it.comp.lang.c++
Titolo: DOMANDA

Salve.
Ho una domanda e spero che qualcuno mi possa rispondere
Considera
    class T
    {
      private:
        int i;
        T(const T&);
        T& operator=(const T&);
      public:
        T(int ii)
        : i(ii) {  }
        operator=(int ii) { i = ii; }
        operator int() { return i; }
    };
    T a(1);
    T b(2);
    a = b;
Che succede se faccio
    a = b;
1)  Errore: T::operator=(const T&) non accesibile
2)  risolve la chiamata in a.operator=(b.operator char())
Nota:
    con il mio compilatore (Borland C++ 5.2) ottengo la 1).
    Ma dato che il compilatore č vecchio e ha un numero incredibile di bugs
    non posso fare affidamento su questo risultato.
Grazie a chi voglia rispondere  Manlio Perillo

 2)  risolve la chiamata in a.operator=(b.operator char())
Suppongo che per la (2) tu intenda operator int, visto che di operator char
non ce ne sono.
Comunque, e` la (1).  A norma di standard, la _visibilita`_ degli attributi
NON dipende dalla loro _accessibilita`_.  La risoluzione degli overload si
basa solo sulla visibilita`, e qui l'operator=(const T&) e` chiaramente un
"better match" dell'altro caso; dopo di che entra in gioco l'accessibilita`,
che fa difetto, da cui l'errore (la [1], appunto).
Alex

     a = b;
Dato che c'è un exact-match con l'operatore sopra è giusto che tenti di
utilizzare quello e, trovandolo privato, dia errore.
EMG

Grazie per avermi risposto.
Manlio Perillo.

Newsgroup: it.comp.lang.c++
Titolo: spostare il cursore in una finestra DOS con il Visual C++





Salve a tutti,


 


qualcuno mi saprebbe dire come posso spostare il 
cursore in una finestra dos, per esempio per poter visualizzare una stringa 
sempre nel solito punto dello schermo ? E magari anche come pulire lo schermo 
... Sono un neofita di Visual C++ e nell' help in linea mi ci perdo 
completamente! In pratica sto solo cercando una bella libreria con qualche 
funzione tipo gotoXY(x,y) o clrscr(),
 
sto realizzando un semplicissimo programma e non voglio perdere tempo con interfaccie grafiche o simili, 
volevo solo a dare all'uscita su video un'aspetto un pò più presentabile, quindi vi sarei grato se mi forniste soluzioni molto semplici.


 


Grazie a chiunque abbia perso tempo a leggere 
questo post .


 


Nicola


 


 



Per favore, evita di inviare messaggi in HTML; e' contrario alla
netiquette perche' aumenta notevolmente il traffico di rete (ricorda che
i messaggi news vengono scambiati tra migliaia di server). Inoltre molte
persone usano newsreader che non gestiscono i linguaggi di markup.
Inoltre questo newsgroup si occupa del linguaggio C++ in quanto tale, e
non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
forums.borland.com
 (in inglese)
Grazie,
Nicola Musatti
Newsgroup: it.comp.lang.c++
Titolo: operazioni di bitwaise

Salve,
sto facendo un po' di esperienza con le operazioni di bitwaise, ma ho un
piccolo problema.
Ho scritto una stringa ascii su un file trasformandola in stringa
esadecimale in questo modo:
char data[6] = {"pluto" };
fstream pippo("prova.xml", ios::bin | ios::out);
static char hex1[] = "0123456789ABCDEF";
for (int i = 0; i < 5; i++) { //&hex1[data[i] >> 4 & 0xF]
 pippo.write((const char *) &hex1[data[i] >> 4], sizeof(char));
 pippo.write((const char *) &hex1[data[i] & 0xF], sizeof(char));
}
pippo.close();
adesso vorrei aprirmi il file estrarre la stringa esadedcimale e
trasformarla in ascii.
Ma non riesco a fare la conversione se qualcuno mi puņ aiutare, lo ringrazio
anticipatamente. al momento ho provato questo, ma non funziona:
fstream pluto("prova.xml", ios::bin | ios::in);
char tmp;
pluto.seekg (0, ios::end);
int lung = pluto.tellg();
pluto.seekg (0, ios::beg);
char data1[lung];
char data2[lung];
int i(0);
for (int i = 0; i < lung; i++) {
 pluto.read(&tmp, sizeof(char));
 data1[i] = tmp;
}
int cnt(0);
for (int i = 0; i < lung; i++) {
 data2[cnt] = (4<<data1[i])&data1[i+1];
 cnt++;
 i++;
}
P.S.: scrivo e leggo il file in binario, in quanto quello che dovrei leggere
e scrivere, in realtą sono dei dati binari, ovvero compressi.
+1gAAA==^#~@

 }
Del tutto sbagliato. Prova:
 for (int i = 0; i < lung; i += 2) {
  unsigned char c1 = (unsigned char)(strchr(hex1, data1[i]) - hex1) << 4;
  unsigned char c2 = (unsigned char)(strchr(hex1, data1[i + 1]) - hex1);
  data2[i / 2] = c1 + c2;
 }
Non ti spiego cosa ho fatto. Però se ci pensi un attimino ti sarà chiaro.
strchr ci dà la posizione di un carattere nella stringa (in realtà ci dà un
puntatore a quel carattere), sottraendo il puntatore al primo carattere
abbiamo una posizione relativa (nel range 0...15). Nota che questo codice fa
schifo, nel senso che non fa  controlli. Pensa se nel file c'è un carattere
spurio (fuori dal range 0-F). Salta la baracca.
Ti conviene cmq aggiungere 1 alla lunghezza di data2 (farlo (lung / 2 + 1))
e poi zero-terminarlo. Così hai una stringa C.
--- bye
Newsgroup: it.comp.lang.c++
Titolo: caricare una dll in C

Ciao a tutti,
vorrei che mi deste una mano a risolvere un mio problema poichč non so
proprio come si faccia. Dunque io ho un mio file miofile.C ed in questo file
voglio utilizzare delle funzioni che si trovano in una dll (miofile.dll).
Diciamo che nella dll c'č una funzione che si chiama PrintByDll(). Come
faccio dal programma C a caricare (non so nemmeno se si possa dire cosě!) la
dll miofile.dll? E come faccio poi una volta caricata la dll a richiamare la
funzione?
Grazie anticipatamente.

 ha scritto nel messaggio
news:StKzc.474156$rM4.19...@news4.tin.it...

Puoi caricare la dll o dinamicamente tramite l'API LoadLibrary("nome file
dll"); oppure staticamente includendo nel progetto il file .lib e mettendo
gli include degli header dei file che compongono la libreria nei file che
usano le funzioni che ti servono. Dopodichč usi queste funzioni in modo
normale, come se fossero delle API qualsiasi.
Guarda l'MSDN per maggiori informazioni
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_dll_topics.asp
P.S. sei OT. Dovresti fare questo tipo di domande su
it.comp.programmare.win32

Newsgroup: it.comp.lang.c++
Titolo: Funzione ricorsiva

Ho provato a creare una funzione ricorsiva per il calcolo delle potenze ma
ho sbagliato qualcosa, mi vengono dati risultati sbagliati.
Come posso correggere questa funzione?
Grazie a tutti.
      int potenza (int b, int e){
               if (e=1)
               return b;
               else
                return b * potenza(b, e-1);
                }

                if (e=1)
if(e==1)
-- 
Gerolamo

 if(e==1)
puoi evitare sviste del genere se scrivi  (quando hai una costante)
 if (1==e)
che porta ad un errore di compilazione se dimentichi un =

 ha scritto nel messaggio
news:9gwYa.231491$Ny5.6...@twister2.libero.it...

grazie mi era sfuggito.

Newsgroup: it.comp.lang.c++
Titolo: Programma standard compilato con BCC55 ma g++ mi da tanti errori!

Vengo al dunque. Ho diligentemente svolto un progetto per l'esame di
Algoritmi e Strutture Dati con il BCC55. Deve funzionare sotto linux ma
siccome si doveva usare solo la libreria standard ho pensato che avrei
potuto sviluppare il progetto sotto windows e poi compilarlo sotto linux con
il g++ (obbligatoriamente).
Con il bcc55 funziona tutto bene ma quando ho provato a compilare sotto
linux ho ricevuto una marea di errori che mi informavano che alcuni membri
di una classe in particolare in realtà con lo erano. Ora mi ritrovo con un
progtto perfettamente funzionante sotto windows che però non riesco a
compilare con il g++.
Dov'è l'errore... sinceramente non lo trovo!
Credo che sia una piccola cosa ma proprio non riesco a coglierla.
Allego il sorgente
Vi prego aiutatemi.

 Allego il sorgente
Non c'e` nulla allegato a questo post.  Ti suggerisco, invece
di allegare, di postare il codice, o meglio solo la parte sino
ai primi messaggi d'errore di g++, nonche` i "primi messaggi"
stessi, e inoltre la riga di comando che usi per invocare g++.
Alex
Newsgroup: it.comp.lang.c++
Titolo: handle della instance dell'applicazione con le API

quale è la api per trovare la "handle of application instance" ?
mi serve per usare la LoadBitmap:
HBITMAP
dBitmap( 
    HINSTANCE hInstance,  // handle of application instance 
    LPCTSTR lpBitmapName   // address of bitmap resource name  
); 
 
non posso usare la AfxGetInstanceHandle() perchè è una macro MFC e sono in un programmino che non le usa (tutto con le API).
Come lo trovo il primo parametro? ho a disposizione il HWND della finestra, può essere utile? (sono all'interno della ScreenSaverProc()).
grazie,
c ya!
/\/\etal Dave.
<<<<<< 
DucaCr...@iol.it
 >>>>>>
--
Posted from [195.99.97.2]
via Mailgate.ORG Server - 
http://www.mailgate.org


Se hai a disposizione un HWND puoi usare GetWindowLong(hwnd,GWL_INSTANCE), altrimenti puoi utilizzare GetModuleHandle(NULL) e convertire il risultato in HINSTANCE (in win32 non cěč differenza tra HINSTANCE e HMODULE).
---
Valter Minute
min...@fortech.it
 (the reply address of this message is invalid)
---
Are you looking for a good freeware ScreenSaver? Try FOYD!
http://hotfiles.zdnet.com/cgi-bin/texis/swlib/hotfiles/getit.bin?fcode=000PZ0
if you want, I can send you the (free) C++ source code.

quale è la api per trovare la "handle of application instance" ?
GetModuleHandle, chiamata con parametro zero.
Alex

L'handle dell'applicazione è il primo parametro di WinMain. Puoi salvarlo
in una variabile globale dall'interno di WinMain per usarlo poi dove ti
pare.
Se sei contro le variabili globali puoi usare la funzione GetModuleHandle
passando NULL come parametro.
Non sono pratico della ScreenSaverProc, ma, se funziona come una normale
WndProc, puoi recuperare l'handle dell'applicazione durante l'elaborazione
del messaggio WM_CREATE e precisamente dalla struttura CREATESTRUCT puntata
da lParam:
hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
Stefano.

 mi serve per usare la LoadBitmap:
Per quanto possa ricordare, devi salvare il valore dell'instance nella
funzione WinMain (e' proprio il primo argomento di questa funzione). Magari
salvalo in una variabile di tipo static (da definire all'inizio del
modulo). Prova cosi':
static HINSTANCE appInst;
int WinMain(...)
{
  appInst = hInstance;
}
Bye.
-- 
Jo Parrello - OWL/C++ Programmer (
jopa...@tin.it
)
http://space.tin.it/computer/giparrel

Newsgroup: it.comp.lang.c++
Titolo: Aiuto su un'ellisse ...

Utilizzando il C++ 3.0, quali sono le istruzioni per creare dinamicamente un
oggetto ellisse in una form e dirgli di chiamare una certa funzione in caso
di doppio click  sull'ellisse ? ( non capisco come utilizzare TShape )
ringrazio chi può fornirmi indicazioni.


Newsgroup: it.comp.lang.c++
Titolo: CERCO documentazione C++

Dove posso trovare in rete qualcosa che assomigli ad
un manuale del Visual C++ ?
Grazie a tutti i buoni samaritani.
                                                    Oz

http://www.geocities.com/SiliconValley/Foothills/6336/
ciao, Franco.
Oz wrote in message <01be0ef5$c6583b00$2304...@prefettura.re.an.intra>...


un manuale del Visual C++ ?
Mi pare che ci sia un completo manuale VC++ nella
MSDN in linea, prova un po' a visitarla e iscriverti
(la iscrizione gratuita, dico!)...
Alex

Newsgroup: it.comp.lang.c++
Titolo: Tool per documentazione

Mi indichereste il link per un tool per la documentazione automatica dei
sorgenti su piattaforma Win32.
Mi piace moltissimo il tipo di funzionamento del javadoc di Java. Esiste
qualcosa di simile e, fondamentale, free?

 writes:

doxygen   
http://www.doxygen.org
ccdoc     
http://ccdoc.sourceforge.net
 
http://www.joelinoff.com/ccdoc
doc++     
http://docpp.sourceforge.net
        Mauro

Newsgroup: it.comp.lang.c++
Titolo: MFC7 dlls

Hello there,
I've developed an application in MFC with VC++ .NET, but when i try to run
it on another machine having
old MFC dlls (v6), it asks for mfc70.dll, msvci70.dll, atl70.dll,
msvcr70.dll... it works when it put
them in the application workding dir. but i want to distribute it in all
systems without installer (it just uses
some basic MFC functions available in all versions).
1- How can i make my app use any MFC version ?
2- I tried to copile with MFC as static but it seems not to work since the
.exe file size is aboout 150 k
    is it a solution ? why it doesent'wotk (i got no error messge).
Thanks in advance..

You're off topic here: this newsgroup is about standard C++ and not
proprietary extensions. Furthermore this is the *italian* C++
newsgroup.
Cheers,
Nicola Musatti

Newsgroup: it.comp.lang.c++
Titolo: MsComm per C++?

Dove posso trovare un valido esempio di utilizzo dell'Api MsComm per Visual
c?
Grazie.
--
Salvatore

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

Ciao.
Che funzione devo usare (ed in quale libreria sta nel Borland c++) per
trasformare un numero byte nel corrispondente carattere ascii, un po' come
al funzione Chr$() di basic.
Graze


Nessuna, in C/C++ caratteri e byte sono la stessa entita', e' il codicre 
ad interpretarli in un modo o nell'altro.
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */


Basta che utilizzi le specifiche di formato della funzione printf:
se vuoi stampare un numero:
printf("%d", valore);
se vuoi stampare il corrispondente carattere ASCII:
printf("%c", valore);
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 printf("%c", valore);
grazie, funziona, ma a me interessa poter mettere il carattere o l'int in
una variabile.
Ciao,
Ricky

 una variabile.
come ti hanno gia' detto, non c'e' bisogno di nessuna funzione di
conversione.
se hai
int i;
e fai i = 'A';
i conterra' il codice ascii di 'A'.
viceversa se hai
char c;
e fai, ad esempio,  c = 'a' + 3 ;
c conterra' il carattere 'd'.
ciao,
g.
Newsgroup: it.comp.lang.c++
Titolo: Domanda per utente inesperto sulle classi.

Da poco ho intrapreso lo studio della programmazione e del c++. Mi sono 
imbattuto in una cosa che non ho capito sulle classi. L'autore del libro che 
sto leggendo sostiene che, quando si crea una classe, si devono costruire 3 
file.
Il primo contiene la funzione Main.
Il secondo contiene l'interfaccia della classe (GradeBook.h) e il terzo 
l'implementzione della classe (GradeBook.cpp). Spiega che si usa questo 
sistema per fare in modo che nessuno possa avere accesso ai dettagli 
implementativi della classe.
Ma se con un semplice wordpad riesco a leggere il file GradeBook.cpp che 
senso ha fare tutta questa fatica?
Io utilizzo Codeblock per sviluppare i semplici programmini che sono 
riuscito a costruire fino ad oggi. Forse devo settare qualcosa su 
Codeblocks?
Grazie a tutti quelli che perderanno del tempo a leggere la mia domanda. 

Diciamo che invece di quello che dice l'autore, dovrebbe essere
semplicemente per distinguere la dichiarazione della classe dal suo
sviluppo, di cui ad altri utilizzatori dovrebbe importare ben poco.
Cioè se qualcuno usa una tua classe, a cui puoi dare il sorgente
completo, a quel qualcuno dovrebbe interessare solo il file header per
sapere quali metodi la tua classe mette a disposizione, senza
preoccuparsi di come hai implementato il tutto.
Oppure potresti divulgare il file header unito ad una libreria con
l'implementazione della classe. A quel punto avresti nettamente diviso
le informazioni della classe dal suo codice, ed impediresti _davvero_
ad altri di usare la classe in modo diverso dal previsto.
Ma finchè divulghi il sorgente vero e proprio, quello che dice
l'autore non ha senso.


bhe, l'autore (i fratelli Deitel, scommetto) vuole trasmetterti il 
concetto di divisione dell'interfaccia (files .hpp) dall'implementazione 
(files .cpp), e l'importante concetto del mascheramento delle 
informazioni, che pu� avvenire sia in maniera letterale (compilando 
precedentemente l'implementazione delle classi, non distribuendoni cos� 
i sorgenti) sia in maniera "astratta", perch� anche se divulghi il 
sorgente delle tue classi, il programmatore che le utilizzer� sapr� 
benissimo che non dobrebbe nemmeno mettere mano alle specifiche di 
implementazione. � uno standard nella creazione di librerie di classi.
Prova ad esempio a compilare la tua classe cos�
g++ -c gradebook.cpp -o gradebook.o
il flag -c indicher� al compilatore che non deve effettuare il linking, 
e di non generare un eseguibile ma un file oggetto.
vedrai che verr� generato il file oggetto gradebook.o, che contiene 
l'implementazione (illeggibile, se non con complicate procedure di 
reversing) della tua classe. In seguito, puoi utilizzare la tua classe 
in un main compilandolo cos�
g++ main.cpp -o main gradebook.o
il compilatore inserir� l'implementazione compilata, e avrai bisogno 
solo del file .hpp (incluso nel main.cpp) e del file gradebook.o, gi� 
compilato, cos� non dovrai distribuire l'implementazione della classe ;)
Con codeblocks dovresti poter muoverti agevolmente utilizzando i 
makefile, oppure agendo sulle opzioni del compilatore.
Newsgroup: it.comp.lang.c++
Titolo: porting da vc++ a linux(gcc)

Salve a tutti,
qualcuno potrebbe darmi delle indicazioni o dei link su come fare il porting
di un programma da win a linux? In particolare il mio programma è scritto in
visual c++ e sto cercando di ricompilarlo in Cygwin. Il primo problema con
cui mi sono scontrato è l'inclusione del header afxwin.h, ma è solo la prima
di una serie di librerie MFC.
grazie
franco
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Rifare il progetto preservando tutta la parte di C++ che e' standard 
compliant ( se ce n'è )e sostituendo per intero TUTTA la parte fatta 
usando librerie proprietarie ( MFC appunto ).
Ciao


Mi pare di aver letto da qualche parte che esistono delle librerie MFC per
unix/linux...se fosse vero ciň renderebbe molto piů facile il mio compito.
Risulta a qualcuno di voi?


 porting di un programma da win a linux? 
 
http://www-106.ibm.com/developerworks/library/l-mfc/?n-l-4182

 Risulta a qualcuno di voi?
A meno che tu non faccia riferimento al progetto MONO (open source) di 
porting dell'ambiente .NET, credo che le MFC siano un marchio registrato 
e non esistano librerie (con quel nome) per Linux.
Detto questo una validissima alternativa č rappresentata dalle librerie 
QT sviluppate dalla Trolltech e utilizzabili gratuitamente per scopi non 
commerciali.
Andrea Sini

 commerciali.
No. Usabili liberamente a patto di rilasciare sotto GPL. Il programma
poi posso anche venderlo: basta che la sua licenza sia la GPL.
Le QT sono rilasciate con licenza (anche) GPL.
f/up su it.comp.software.libero
qui siamo OT
-- 
[ RiK0                                ]
[ Go away! The internet is full!      ]
[ Non credo negli schemi non vincenti ]

 Risulta a qualcuno di voi?
No, non č possibile. E' un framework commerciale.
Potresti usare wxWindows / wxGTK, concettualmente simile a MFC, per la GUI e
scrivere il resto del programma il piů possibile usando lo standard!

 scrivere il resto del programma il piů possibile usando lo standard!
L'idea di separare GUI da "core" e' sempre vincente!
Dan
Newsgroup: it.comp.lang.c++
Titolo: AIUTO !! passaggio di funzione dichiarata in una classe come parametro di un altra funzione ?????????????????

Ho il seguente problema :
Ho implementato la seguente class:
class CRecorderMsg : public CObject
{
    .
    .
    .
public:
 int InstallFilter (int nHookIndex, int nCode );
  LRESULT CALLBACK JournalRecordFunc(int nCode, WPARAM wParam, LPARAM
lParam );
    .
    .
    .
};
int CRecorderMsg::InstallFilter (int nHookIndex, int nCode )
{
    .
    .
    .
  hhookHooks[nHookIndex] =
  SetWindowsHookEx(HookCodes[nHookIndex], (HOOKPROC) JournalRecordFunc,
(HINSTANCE)hInstance, 0);
    .
|
    .
|
    .
|
}
l'errore che mi restituisce č:                    error C2440: 'type cast' :
cannot convert from '' to 'long (__stdcall *)(int,unsigned int,long)'
                                                            None of the
functions with this name in scope match the target type.
ho provato anche a passare CRecorderMsg::JournalRecordFunc ottenendo lo
stesso errore
Se tolgo il cast (HOOKPROC) l'errore cambia in: error C2664:
'SetWindowsHookExA' : cannot convert parameter 2 from 'long (int,unsigned
int,long)' to 'long (__stdcall *)(int,unsigned int,long)'
        None of the functions with this name in scope match the target type
Qualcuno mi sa dare la soluzione di questo problema
????????????????????????????????????????????????????????????

...
    [snip]
Praticamente l'identico problema che ha Antonio Ganci nel post
"Macchina a stati", giunto sul mio newsserver praticamente allo
stesso istante del tuo, cui ho appena risposto in dettaglio.
Riassumendo: un METODO (funzione-membro, non statica, di
una classe) NON E` una "vera funzione" (lo sono le funzioni
libere, e quelle statiche delle classi); NON sono intercambiabili!
Per le tue esigenze (passare un puntatore a funzione a una
funzione esterna che non puoi modificare, come ad es la
SetWindowsHookEx), le varie soluzioni che prospettavo a
Ganci (che invece sta progettando qualcosa ex novo) non
sono soddisfacenti.  Devi necessariamente avere una vera
funzione (tipicamente membro statico di una classe); la
SetWindowsHookEx e` particolarmente "ghignosa", perche`
non ha (come invece hanno quasi tutte le API che usano
delle funzioni utente in callback) un "valore di callback" nel
quale si possa passare, opportunamente castato, il 
puntatore-a-oggetto (e la "vera funzione" altro non fa che 
ri-castare il valore a puntatore e su quell'oggetto chiamare
il metodo desiderato); a meno che tu non abbia un solo
oggetto in gioco (cosi` da poter mettere il suo puntatore
in un'apposito membro statico della classe), la situazione
e` dunque effettivamente difficile.  Esiste un trucco (NON
portabile!!!) consistente nell'usare delle "thunk" assembler
(o, piu` precisamente, linguaggio-macchina) per incapsulare
il puntatore a oggetto, ma personalmente consiglierei invece
di riprogettare questa parte del tuo codice.
Alex
Newsgroup: it.comp.lang.c++
Titolo: Cercasi disperato aiuto per compilare un file contenente stringhe

Dunque: ieri ho postato un messaggio in cui dicevo che non riesco a
compilare un codice che contiene stringhe...
Ho provato in tutti i modi ma non so come fare!
PS: ho il compilatore 3.1 per dos/windows
PS2: Ho provato con il C++ Builder 4 ma qesta volta compila
solo che non fa programmi per dos
Se qualche saggio programmatore sa darmi una risposta glie ne sarò grato...
Un itissaro disperato  Michele.

 Se qualche saggio programmatore sa darmi una risposta glie ne sarò
grato...
Di niente Ciao.
Newsgroup: it.comp.lang.c++
Titolo: Informazione

Cosa pensate voi leggendo:
Java supera C++ con il 36% di richieste al mondo nel settore lavorativo. Ciò
segnala la definitiva discesa del C++, del VB e del Delphi.
Non mancano neppure i programmatori che associano Java agli sistemi
operativi.
Questa statistica è stata fatta lavorando su 40.000 articoli.
Io non sono molto convinto ma forse sbaglierò.
-----------------------------------------------------------------
Francesco Fassi
frances...@libero.it
-----------------------------------------------------------------

Java supera C++ con il 36% di richieste al mondo nel settore lavorativo.
Bisognerebbe esaminare il campione... ad ogni modo sono linguaggi
con target differenti e mi risulta che sono entrambi ugualmente
richiesti.
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------
Newsgroup: it.comp.lang.c++
Titolo: sapere il tipo di dato di un template

sto scrivendo un template di una classe in cui, purtroppo, in una
funzione devo sapere che tipo di dato viene utilizzato dal template.
Come posso fare? Esiste qualcosa come
if (type(T) == double) {...}
?


Il modo corretto di ottenere quello che vuoi e' fattorizzare questa
parte del codice in un altro template e specializzare quello. Ad
esempio
#include <complex>
template <typename T> int f(T t) { return g(t) * 5; }
template <typename T> int g(T t) { return t; }
template <> int g(std::complex<int> t) { return norm(t); }
Ciao,
Nicola

Ottavio Campana ha scritto:

Mi sorge spontanea una domanda:
perche' ti serve sapere il tipo di un parametro di template?
E' possibile che la tua necessita' possa essere causata da un design non 
ottimale?
Non so se e' il tuo caso, ma una soluzione potrebbe essere l'utilizzo di 
template parzialmente specializzati. Cosi' non ti serve sapere il tipo, 
semplicemente implementi un codice specifico per uno o piu' tipi, 
lasciando il codice generico del template per tutti gli altri.
Se proprio ti serve sapere il tipo, puoi provare con l'RTTI e typeid(), 
ma sinceramente lo uso molto raramente e non l'ho mai usato per 
parametri di template (a dire il vero non so nemmeno se funziona con 
questi).
-- 
Roal Zanazzi

 questi).
Non e' necessario. Basta qualcosa come
template <typename FirstT, typename SecondT> struct IsSameType {
    static const bool result = false;
};
template <typename FirstT> struct IsSameType<FirstT, FirstT> {
    static const bool result = true;
};
Ciao,
Nicola

 Non e' necessario. Basta qualcosa come [...]
Oops, mi sono reso conto che ho capito una cosa diversa da quella che
avevi scritto. Il mio esempio si limita a rispondere in maniera
puntuale al quesito posto dall'OP, mentre direi che stai pensando ad un
approccio piu' generale.
Ciao,
Nicola

Nicola Musatti ha scritto:

Beh, in realta' la tua soluzione mi pare piu' corretta nel contesto 
descritto dall'OP (oltre al fatto che l'RTTI e' visto da alcuni come un 
"fardello" da evitare).
Rimango comunque convinto che conoscere il tipo del parametro template 
potrebbe essere non necessario (specializzando parzialmente il template).
-- 
Roal Zanazzi

 ottimale?
beh, perche' vorrei rappresentare i valori piu' e meno infinito. Ho
fatto un template che funziona sia con i float che i double perche' devo
salvare logaritmi di rapporti di probabilita'.

 salvare logaritmi di rapporti di probabilita'.
Teoricamente
#include <limits>
template <typename T> T f() {
  return std::numeric_limits<T>::infinity();
}
Potrebbe fare al caso tuo.
Ciao,
Nicola


Ottimo!
grazie