mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: ricerca materiale programmazione

Salve,
Sono uno studente di informatica e mi piacerebbe molto approfondire la mia
conoscenza dei linguaggi e dei vari paradigmi di programmazione esistenti.
Mi chiedevo se in rete esistano siti dai quali sia possibile scaricare corsi
( gratuiti ), articoli o qualsiasi altro tipo di materiale utile a farsi una
cultura pių "concreta" rispetto alle ( seppur  fondamentali ) conoscenze di
base che appprendo seguendo i vari corsi all'universitā.
Convinto che la  preziosa collaborazione della Grande Rete non si farā
attendere vi saluto e vi ringrazio.
C I A O !!
Michele Aprile

Prova a 
http://www.rhein-neckar.de/~cetus/software.html
vi sono molti link a svariati argomenti legati alla programmazione
in generale.
massimo

...


...


Newsgroup: it.comp.lang.c++
Titolo: Puntatori Void - aiuto!

Salve a tutti- una domanda da neofita-
sto studiando i puntatori void perciň la
domanda sorge spontanea: a cosa servono e
dove possono trovare impiego? mi č chiaro
, ad esempio, il fatto che possono puntare a qualunque
tipo
es.
int intero;
float virgola;
void *generale;
generale = &intero;
generale = &virgola;
ma a che serve tutto ciň se poi non posso
eseguire nessuna operazione tipo
*generale = 100;    /* errato*/
*generale = 23.43  /*errato*/
 x l'attenzione
Francesco
gi...@tin.it

dove possono trovare impiego?
Difficile dirlo, in C++ hanno un ruolo estremamente limitato,
sono rimasti piu` per compatibilita` col C che per altro.
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

domanda sorge spontanea: a cosa servono e


I puntatori void non possono stare a destra di un assegnamento se non c'è un
puntatore a sinistra.
Questo perchè non c'è nessuna conversione implicita definita dai tipi
predefiniti (esclusi i puntatori) e il tipo puntatore a void.
In C++ forse è possibile definirsi un operatore di conversione per le
classi, anche se non ne vedo l'utilità (a parte lo sfizio di usare puntatori
a void).
Mi risulta che esistano solo per questioni di comodità di scrittura nella
conversione di tipi di puntatori (in pratica per bypassare il type-checking
quando ritenuto utile) e per motivi di ortogonalità. Ovvero: poichè esiste
in tipo void e poichè tutti i tipi hanno il loro puntatore, allora deve
esistere anche il puntatore a void. Sembra una str.. finezza, ma quando è
nato il C si faceva caso a queste cose.
--
Alessandro Monti

 ma a che serve tutto ciò se poi non posso

Newsgroup: it.comp.lang.c++
Titolo: Informazione c++

Scusate , ho scaricato il borland perche su un libro di finanza ho dei
codici in c++ .
Ma qualsiasi codice che cerco di compilare mi da una marea di errori . Le
librerie le trova.
Sara forse perche o selezionato lingua Europea mentre i codici provengo da
USA
grazie

 librerie le trova.
Prova a postare gli errori che ti da (diciamo i primi 10) e ..... se non
brevi anche i codici che cerchi di compilare.
Tommy

 Tommy
Succede anche a me la stessa cosa con il compilatore free (5.5.1). Il
problema è inerente ai file header che si trovano in include/rw. I file in
questione (stdefs.h, rwlocale.h e rwstderr.h) presentano degli errori di
sintassi (cinque o sei comandi su una sola riga senza soluzione di
continuità) o unespected end of file in conditional started. Sono un neofita
del C++ e sono riuscito a correggere gli errori solo nel caso della riga
lunga continua. Il brutto è che ho postato sul NG della Borland specifico e
da una settimana, ancora niente risposta.
Frankie

 ha scritto nel messaggio
news:Nj%U9.5699$YG2.1...@twister1.libero.it...



STRACUT
Ho provato a correggere i file di cui ho parlato prima, perň gli errori sono
ricomparsi in altri file! Mah...
Oggi sono stato sul sito della Borland ed ho letto il readme che si trova
anche nel pacchetto del compilatore, ma con maggiori informazioni. Ad
esempio dice di aggiungere una linea all'Autoexec.bat (Win9x) per aggiungere
il percorso. Nella fattispecie: PATH=C:\BORLAND\BCC55\BIN;%PATH%. Per NT ed
altri non ricordo. Ora provo ad inserire questa linea e vediamo cosa
succede. Piů tardi faccio sapere (diciamo stasera, va...).
Frankie

 Frankie
(Wow mi sono quotato da solo) ROTFL
Ho inserito quella linea, ma il risultato è sempre lo stesso: una barca di
errori negli header file. Sul NG della Borland dedicato al
Freecommandlinetools nessuno mi ha risposto. E meno male che non si paga...
Frankie

si anche io lo avevo fatto ...avevo creato anche due file di cui non ricordo
uil nome ..( ilink.cfg e un altro...cfg)
ma nulla!


Newsgroup: it.comp.lang.c++
Titolo: Spazi formattazione cout

Buonasera,
scusate la semplicità della domanda.
In C, se ricordo bene, si poteva assegnare una quantità di caratteri di 
stampa ad una variabile.
Ossia :
printf("%3d",variabile_intera);
E possibile fare lo stesso in C++? In che modo?
grazie in anticipo.
 


il printf va ovviamente bene anche in C++
altrimenti puoi usare std::cout
e formattare l'output con setprecision, setfill, etc.
Marco

Il modo più semplice è di includere l'header iostream.h con il
comando:
#include <iostream.h>
e poi usare cout.
Newsgroup: it.comp.lang.c++
Titolo: problema coi membri pubblici

Ho una Classe di questo tipo
class Pippo {
public:
    void setAmico(Pippo* pippo_ptr);
    Pippo* getAmico(void);
    ...
private:
    Pippo* amico;
    ...
}
Se ho una classe Disney che implementa una lista di puntatori a oggetti di
tipo Pippo, sono abbastanza sicuro di non poter ottenere un puntatore alla
variabile amico accedendo direttamente a tale variabile: come faccio allora
a usare il metodo getAmico dalla classe Disney? Invoco il metodo come se
fosse tramite un puntatore come se fosse un campo di una struttura?
grazie per l'aiuto e scusate l'oscuritą delle mie richieste :-)
Bruno

 wrote:
Non ho capito bene cosa tu intenda fare, ma ho sospetto che l'approccio 
seguito non sia quello corretto...
Comunque Disney potrebbe fornirti un metodo che dato un Pippo* (diciamo
A) ti ritorna un altro Pippo* che e` appunto l'amico di A...
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

 fosse tramite un puntatore come se fosse un campo di una struttura?
Domanda poco chiara, comunque, ad esempio:
class Disney {
    std::list<Pippo*> lalista;
public:
    // snipped
    Pippo* getPrimoAmico() {
        if(lalista.empty()) return 0;
        return lalista.front()->getAmico();
    }
};
Alex


Se la classe Disney contiene dei Pippo non ha per questo un metodo
GetAmico. Se la classe Disney eredita da Pippo, allora puo' avere un
membro getAmico.
In generale, ci sono due modi principali per avere una classe Disney che
ha un metodo getAmico:
1) contenimento e delegazione: Disney "has a" Pippo, e ha una funzione
getAmico() che delega a Pippo
class Disney{
private:
 Pippo p;
public:
 Pippo* getAmico() { return p.getAmico();}
}
2) eredita': Disney "is a" Pippo e ne eredita la funzione membro
getAmico:
class Disney : public Pippo {


 variabile amico accedendo direttamente a tale variabile:
Se fosse una std::list dovresti prima accedere all'elemento che ti
interessa e da quello, che sarebbe un oggetto di classe Pippo, accedere
ai membri del medesimo. Analogamente se la lista fosse un semplice
array. Es.: lista[ n ] -> membro.
EMG
Newsgroup: it.comp.lang.c++
Titolo: opp-c++ per windows

Chied al tutto l'ng se si trova un manuale del c++ ad oggetti per windows
(programmazione applicazioni di Windows).
Fatemi sapere.
Grazie.

 (programmazione applicazioni di Windows).
Sei OT chiedi su it.comp.programmare.win32
Newsgroup: it.comp.lang.c++
Titolo: Sull'overloading...

 return ( op1 + op2 + 3 );
Ma solo perche' conosco come funzioni l'operazione di addizione!
Ho fatto abbastanza confusione? ^_^
Spero abbiate capito: non posso "aggiungere" funzionalita' a un operator
chiamando la versione 'normale' e poi la funzionalita'?
TIA,
Cinos

Ti faccio un esempio:
// Ora.h: interface for the Ora class.
#include <string>
#include <iostream>
using namespace std;
class Ora
{
 friend ostream &operator<<(ostream & , Ora &);
public:
 Ora();
 virtual ~Ora();
 int setOra(int , int );
private:
 int min;
 int ore;
 string _ora;
};
// Ora.cpp: implementation of the Ora class.
#include <iomanip>
#include "Ora.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Ora::Ora()
{
}
Ora::~Ora()
{
}
int Ora::setOra(int or, int mn)
{
 ore = or;
 min = mn;
 _ora = ore + ":" + min;
 return -1;
}
ostream &operator<<(ostream &out , Ora &or)
{
 out << "\nSono le ore:"<<endl;
 out << or.ore <<":"<< or.min<<endl;
 return out;
}
// Test.cpp
#include "Ora.h"
#include <ctime>
int main()
{
 Ora time;
 int or, sec;
 cout << "Digita un ora e un minuto"<<endl;
 cin >> or;
 cin >> sec;
 time.setOra(or, sec);
 cout << time;
 return 0;
}
--
Ciao da Kleidemos
C++ Programmer
Visual C++ 6

 Quando c'e' "10 + 5", vorrei ridefinire l'operator+ in questo modo:
Confondi overload e override.
Con l'overloading, puoi avere funzioni e metodi con lo stesso nome 
simbolico, ma con *parametri di tipo diverso*, e il compilatore 
discrimina in base al tipo dei parametri passati.
Con l'overriding, puoi ridefinire in maniera diversa in una classe 
derivata un *metodo* in una  classe base, ed il compilatore discrimina 
in base al tipo dell'oggetto su cui invochi il metodo.
Non puoi ridefinire una funzione già definita (con la stessa signature), e
     int operator + (int,int) { ... }
è già definita (è builtin).
-- 
   |   \    \  | ___|_  |_  | ianezz a casa sua... :-)
   |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
  _|_/  _\_|  _|____|___|___| 
http://www.linuxtrent.it

 Bene. Mettiamo che io voglia ridefinire questo processo.
Con i tipi definiti da te puoi fare (quasi tutto) quello che vuoi, con i
predefiniti no (e anche con operatori che operano solo su puntatori). E'
possibile tuttavia definire un tipo che sia intercambiabile con gli
interi e che abbia operatori custom. In questo caso, per mantenere la
massima compatibilita' di comportamento, gli operatori dovrebbero essere
tutti friend e non membri della classe. Gli unici operatori per i quali
questo giochino non vale sono && || e (comma).
Ciao
Gian Michele

Ma solo perche' conosco come funzioni l'operazione di addizione!
Creati una classe MyInt che non e' altro che un numero intero. Ridefinisci
tutti gli operatori. In questo caso puoi sommare due interi all'interno
dell'operator+(MyInt,MyInt), non hai problemi di ricorsione. Inoltre
potresti, se hai voglia, provare anche a vedere come fare con gli operatori
bit a bit, "Ma solo perche' conosco come funzioni l'operazione di
addizione!".
Tommy
Newsgroup: it.comp.lang.c++
Titolo: Se qualcuno mi vuole aiutare...

Scusate la domanda da novellino, cosa devo fare per usare per fare
funzionare questo programma?
Premetto che ho il Borland C++ 3.1 (ma con DWORD mi da' errore).
    void GenereCode(DWORD c, DWORD d, char *code)
    {
        DWORD u5, u6, a, b;
        SYSTEMTIME st;
        GetSystemTime(&st);
        u5=MAKELONG(st.wYear, st.wMonth);
        u6=MAKELONG(st.wDay, 0x43);
        a = u5 ^ 0xAAAAAAAA ^ c;
        b = u6 ^ 0xAAAAAAAA ^ d;
        sprintf(code, "%08X%08X-%08X%08X", a, b, c, d);
    }

         u5=MAKELONG(st.wYear, st.wMonth);
Magari DWORD puň essere sostituito con long???? 
-- 
Luc.

Luc.
Bene, ora mi da i seguenti errori:
...	...   
        SYSTEMTIME st;
Undefined symbol 'SYSTEMTIME'
        GetSystemTime(&st);
Function 'GetSystemTime' Should have a prototype
Undefined symbol 'st'
...	...
        u5=MAKELONG(st.wYear, st.wMonth);
Function 'MAKELONG' Should have a prototype
        u6=MAKELONG(st.wDay, 0x43);
...	...
        sprintf(code, "%08X%08X-%08X%08X", a, b, c, d);
Function 'sprintf' Should have a prototype
    }

     }
Allora, per sprintf basta leggere: non c'č il prototipo, quindi devi
includere stdio.h. Per tutto il resto: si tratta di funzioni di Windows,
quindi ci vuole un compilatore per Windows. Per il tempo usa le funzioni in
time.h o in sys/time.h; per MAKELONG non lo so, ma suppongo si tratti di una
funzione che prende le 2 word(ovvero unsigned short int, a 16 bit) (i campi
hanno la w iniziale, e nel codice MS windows sta per il tipo č WORD) e
mettile una appresso all'altra per formare un LONG o DWORD(l'unica
differenza č il segno, entrambi sono long int ,solo che DWORD č unsigned).
Questo si puň fare con:
al posto di MAKELONG(a,b); (a<<16||b);
Chiaro?

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


Hi I'm Demiurgo..........Here's the program (sorry for the bad english):
#include <iostream.h>
void main (void) {
   int a,b,c;
   cout<<"Sort program"<<endl;
   cout<<"Insert first number=";
   cin>>a;
   cout<<"Insert second number=";
   cin>>b;
   cout<<"Insert third number=";
   cin>>c;
    if ((a>b)&&(a>c))
              if (b>c)
                    cout<<c<<"  "<<b<<"  "<<a;
              else
                    cout<<b<<"  "<<c<<"  "<<a;
    if ((b>a)&&(b>c))
              if (a>c)
                    cout<<c<<"  "<<a<<"  "<<b;
              else
                    cout<<a<<"  "<<c<<"  "<<b;
    if ((c>a)&&(c>b))
              if (a>b)
                    cout<<b<<"  "<<a<<"  "<<c;
              else
                    cout<<a<<"  "<<b<<"  "<<c;
}


Newsgroup: it.comp.lang.c++
Titolo: Set come definizione

Vorrei definire in una mia unit un set di numeri (di tipo carattere).
Di solito lo dichiaro cosí:
	Set<char,'0','9'> SetNum;
Poi dal main lo inizializzo con:
	SetNum << '0' << '1' << ecc...
Invece vorrei creare nella unit una "variabile di tipo set" giá inizializzata. Qualcosa del tipo , per dirla in modo barbaro:
	Set<char,'0','9'> SetNumeri << '0' << '1' .... ;
Che potessi usare direttamente includendo questa unit nel mio progetto principale. É possibile? E se non é possibile si puó fare magari con qualche altra definizione di set?
Marco.



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

Ho letto due libri di Schildt, uno mi pare fosse "Guida Completa C++"
e l'altro "Advanced C++", sui titoli non sono certo ma se li conoscete
forse potete capire quali intendo. Non mi sono trovato tanto male,
forse io mi accontento di qualche indirizzamento pratico, ma visto che
gran parte di quello che so (comunque pochino) l'ho appreso li, sarei
curioso di sapere in cosa Schildt sia cosě mancante.
 
              Col. Aureliano Buendia
-._.-._.-._.-._.-._.-._.-._.-._.-._.-._._.-._.-._.-._.-._
Dammi la forza di tollerare le cose che non posso cambiare
Dammi la forza di cambiare le cose che non posso tollerare
Dammi la forza di distinguere le une dalle altre                 
-._.-._.-._.-._.-._._.-._.-._.-._.-._._.-._.-._.-._.-._._.

 curioso di sapere in cosa Schildt sia così mancante.
Il fatto che quello che dice sia spesso errato non ti basta?
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

curioso di sapere in cosa Schildt sia cosě mancante.
quello in cui Schildt e' "mancante" sono sicuro che ti verra'
ampiamente illustrato da altri ben piu' preparati di me in materia...
A mio parere i testi Schildt sono ottimi per "iniziare" (io ho
iniziato da autodidatta con Guida completa C++ una decina di anni
fa...) ma poi vanno affiancati da testi piu' "avanzati e completi"
(vedi Stroustrup & C.). Non bisogna poi sottovalutare il feeling che
ognuno ha con uno o con l'altro autore. Insomma se io dieci anni fa
avessi tentato di iniziare con un mattone stile Stroustrup...
provabilmente ora ci sarebbe un programmatore in meno ;-)
Andrea

provabilmente ora ci sarebbe un programmatore in meno ;-)
Per chi inizia ci sono molti testi più semplici del libro di
Stroustrup ma ugualmente validi, a partire dal famoso libro di
Lippman, il testo di Bruce Eckel(che non ho mai letto, ma molti dicono
che sia di buona qualità), ecc..ecc.
Ciò che bisogna evitare sono le cose sbagliate oppure quelle antiquate
stile i libri che ancora parlano del c++ pre-standard( e che quindi
ignorano gran parte delle feature di cui attualmente il c++ dispone).
Un autore che considera accettabile iniziare i propri programmi con
void main(void) 
a mio avviso va proprio evitato.
Il Ghenio
---------
These are my parting words to you:
those who give up are doomed!
Newsgroup: it.comp.lang.c++
Titolo: Ottenere in automatico indirizzo e tipo di una variabile di classe

ciao a tutti.
Ho questa semplice classe
class B public A {
 public:
   B();
   ~B();
   int m_iMembroUno;
   float m_fMembrodue;
}
dentro il costruttore di B chiamo una funzione derivata da A che si
segna i nuovi membri di B:
B::B{
 funzionediA(m_iMembroUno);
}
il suo scopo e' quello di segnarsi una lista di alcuni dei membri
delle classi derivate (in questo caso B) e poi al momento giusto fare
una sorta di serializzazione di questi membri.
C'e' un modo migliore? Per esempio una define di qualche tipo
inseribile nell'header?
class B public A {
 public:
   B();
   ~B();
   DEFMAGICA int m_iMembroUno;
   DEFMAGICA float m_fMembrodue;
}
cosi' da non dovere chiamare la mia funzione nel costruttore.
In pratica un qualcosa che ottenga tipo e indirizzo della variabile.
Grazie


Se ho capito bene, dovresti utilizzare le funzioni virtuali, non vedo il 
motivo per cui una classe base dovrebbe conoscere i membri delle classi 
derivate.
Es.
class A
{
public:
	A();
	virtual ~A();
	int m_iMembroZero;
	virtual void Serialize();
};
void A::Serialize()
{
	printf("%d\n", m_iMembroZero);
}
class B : public A
{
public:
	B();
	virtual ~B();
	int m_iMembroUno;
	float m_fMembrodue;
	virtual void Serialize();
};
void B::Serialize()
{
	A::Serialize();
	printf("%d\n", m_iMembroUno);
	printf("%f\n", m_fMembrodue);
}
Newsgroup: it.comp.lang.c++
Titolo: Domanda scema da un principiante

Ho una CDialog (IDR_TIMEDIALOG) che deve apparire all'ordine di CMainFrame.
Quale comando uso per farla spuntare?
Graziiiiiiiiie
E.G. er Cicca
er_c...@usa.net
Art. 1: L'Italia è una repubblica progettata per Windows 95.


Dipende...
Se la finestra di dialogo serve per compiere un'operazione senza la quale non e`
possibile andare avanti, eseguila come dialogo modale; se invece deve interagire
con l'utente e contemporaneamente consentire l'interazione con la finestra padre
(oppure trattasi di applicazione basata su dialog) dovresti eseguirla non modale.
Come fare dipende da quale framework utilizzi, con owl si usa Execute() per dialoghi
modali e Create() per dialoghi non modali.
Se invece usi le API alcune possibilita` sono DialogBox per dialoghi modali e
CreateDialog per quelli non modali.
Paolo
----------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  e-mail: 
mar...@cli.di.unipi.it
 
----------------------------------------------------------

CreateDialog per quelli non modali.
Scusa, ho iniziato l'altro ieri a programmare, cos'è un framework?
Cmq uso il Visual C++ 4.0, e preferisco x adesso lavorare con le MFC, alle
api ci penso dopo...


 wrote:
|Ho una CDialog (IDR_TIMEDIALOG) che deve apparire all'ordine di CMainFrame.
|Quale comando uso per farla spuntare?
MFC:
Se modale usa la funzione membro DoModal()
Se non modale istanzi con new la classe e poi usi  ShowWindow() e
UpdateWindow()

api ci penso dopo...
MFC (come normalmente utilizzato) e` un esempio di framework: infatti,
per usarlo, ci si adatta normalmente alla strutturazione che esso
definisce: si deriva una classe dall'oggetto-applicazione, si fanno
le override di metodi come InitInstance ed ExitInstance, se occorre
si definiscono (sempre per eredita`) i tipi di documento e di view,
eccetera.
Alex

api ci penso dopo...
Un framework e` un tool (o meglio una libreria) che dovrebbe semplificare la realizzazione di una
applicazione. MFC, OWL, VCL sono esempi di framework.


Newsgroup: it.comp.lang.c++
Titolo: Aiuto installazione mingv32

Alcune settimane fa ho scaricato da Cygnus mingv32, in quanto
necessito un compilatore in c per implementare le CGI in perl su
Windows95, ora che finalmente ho di nuovo del tempo a disposizione,
non ricordo più tutte le istruzioni che avevo letto a riguardo, se
qualcuno mi aiuta ad installarlo correttamente gli sarei veramente
grato.
Esiste il comando nmake o uno simile in ming32 ?
Avendo già installato DCom, ho bisogno di installare anche le API che
dicono necessarie per ming32 ?
Quali sono i passaggi per l'installazione.
Ringrazio tutti anticipatamente.
Questo è un compilatore in Dos-Windows ?

Questo è un compilatore in Dos-Windows ?
Se dici mingw32, no, e` rigorosamente e solo per Windows
a 32 bit (win95, win98, win/NT).  Una versione DOS del
compilatore gcc esiste, si chiama djgpp, ma va scaricata
da altri siti ancora (che non conosco).
Alex
Newsgroup: it.comp.lang.c++
Titolo: Arltra domanda sconcertante.

::_Kfn,std::less<int>,std::allocator<std::basic_string<char,std::char_trait
s<char>,std::allocator<char> > > >' : identifier was
truncated to '255' characters in the debug information
Che potete dirmi? (oltre al fatto che ultimamente sto stressando un po'
troppa gente...)
Max

 Max

 ha scritto nel messaggio
news:Jsfma.33637$DT4.1...@twister1.libero.it...


 void main()
Ti e` gia` stato detto che main deve restituire int.
        Mauro

 Ti e` gia` stato detto che main deve restituire int.
Secondo lo standard può anche non restituirlo.
Ad esempio il seguente codice potrebbe andare bene:
int main() {
}
--
Domenico Testa - Studente



Se non sbaglio lo standard dice che main *ritorna* un int, che se non
specificato con return è sempre 0 (*se* non sbaglio)

 }
Ma è ben diverso da quello sopra, non ti pare?
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

Newsgroup: it.comp.lang.c++
Titolo: Libreria per messaggi

Premetto che so poco di tcp/ip e di socket. Devo mettere in
comunicazione due programmi via rete. Mi bastano delle funzioni tipo
invia messaggio, vedi se c'e' un messaggio, leggi prossimo messaggio,
risolvi il nome. Non mi serve nulla di piu'? Sto cercando di capire
quanto tempo devo perderci e quanto e' difficile da realizzare.
Prima domanda: mi conviene studiarmi le socket, oppure e' meglio trovare
una libreria che faccia questo senza tante complicazioni?
Poi, esiste una libreria del genere (che si basi sulle socket)?
Grazie.

Poi, esiste una libreria del genere (che si basi sulle socket)?
C'e` la ACE (o ACE++) che si trova in rete, ma non so quanto
bene collabori con le winsock in Win32 (bene, immagino, ma
non lo so di preciso) ne` quanto piu` facili renda poi le cose.
Le socket non sono poi tanto difficili da usare... in passato, ho
postato (e si puo` quindi reperirlo da 
www.dejanews.com
) un
esempietto giocattolo, con due programmini, client e server,
che chiacchieravano appunto via socket.  Ti suggerisco di
trovarlo su Dejanews, darci un'occhiata, e decidere...
Alex

Con le socket puoi facilmente:
1. metterti in ascolto per ricevere le chiamate di altri computer;
2. chiamare un altro computer;
3. spedire e ricevere dati;
Puoi usare direttamente le socket (funzioni socket, bind, listen, accept,
recv, send) oppure la classe CSocket se usi MFC.
Per risolvere il nome se non sbaglio puoi usare la funzione gethostbyname.
Attenzione solo al fatto che se hai bisogno di rispondere a piu' richieste
contemporaneamente potresti aver bisogno di aprire piu' thread (digerita
poco da MFC) oppure usare la clase CAsyncSocket (un po' ostica e
traballante).
Io ho interfacciato direttamente le socket incapsulandole in alcune classi.
Ciao.
--
Antonio Donatiello
Newsgroup: it.comp.lang.c++
Titolo: AIUTO: creare la fase di installazione

ho scritto un programma con c++builder
adesso devo creare la procedura di setup
con c++builder c'è la possibilita di creare un file install o setup
che si occupi dell'installazione del programma che ho scritto?
altrimenti che prg posso utilizzare??
grazie ciao

 che si occupi dell'installazione del programma che ho scritto?
dunque non è questo il ng piu' adatto in quanto tratta solo di C++
indipendentemente dal compilatore e dalla piattaforma che si usa, quindi la
prossima volta posta su it.comp.programmare.win32; detto questo, in ogni
versione del BCB viene data anche una versione dedicata di InstallShield che
ti consiglio di utilizzare per due motivi:
1) La procedura è autoguidata e quindi ti facilita il compito;
2) Da un tocco di professionalita' in piu' alle tue applicazioni.
SISMA
Newsgroup: it.comp.lang.c++
Titolo: API WinSocket

Ciao a Tutti!!!
Sto studiando i socket con le API di Winsocket,
ho provato con Successo i tipici programmini
esempio di Client e Server in C/C++ trovati in rete
Ma Tutti in locale sulla stessa macchina,
rigorosamente in "localhost" o ip conosciuti!
Adesso con un amico vorremo fare delle prove tramite Internet
e Vi chiedo:
Sul mio computer installo il programmino Server,
quali funzioni API mi permettono di rilevare l' indirizzo IP
che il mio provider mi associa di volta in volta?
Sul computer del mio amico ci sarà il programmino client,
c'è il modo che il client possa trovare il mio Server e cioè
ricavare l'indirizzo IP casuale dato di volta in volta dal mio provider
o visto che non ho dominio gli e lo devo passare via email?
Spero di essermi spiegato.
GRAZIE ! ! !
Francesco
Mail: 
ka...@libero.it
Web: 
http://utenti.lycos.it/notes
(Troverete il Domandone Misterioso)

 o visto che non ho dominio gli e lo devo passare via email?
Se ho capito cosa hai bisogno di fare penso proprio che tu gli debba 
mandare il tuo IP con una mail o mezzo simile. Il client non ha modo di 
capire a quale IP deve connettersi da solo, un IP di riferimento devi 
conoscerlo. Questo se usi l'astrazione dei socket, usufruendo di 
middleware (tipo CORBA) forse si riesce a fare qualcosa di più 
sofisticato, ma comunque un punto devi conoscerlo.
CIAO
Matteo

 Spero di essermi spiegato.
qui sei ot però su queste cose....
devi usare un server dns  
www.dns2go.com
 in questo modo il dns punterà
semrpe al tuo nuovo ip
la prossima volta chiedi nei newsgroup adatti allo scopo

 o visto che non ho dominio gli e lo devo passare via email?
hai 3 possibili scelte
-servizi tipo 
no-ip.org
 dal server e programma client che interroga il dns
-servizi tipo 
no-ip.org
 dal server e interroghi manualmente il dns con ping
o traceroute sul client
-icq/e-mail/messenger per comunicare al volo l'ip (o come al slolito sotto
windows 9x "netstat")


Oppure si prende un po' di spazio gratuito su qualche host e lo si usa per
scriverci l'IP. Quando ci si disconnette si cancella l'IP e quando ci si
riconnette lo si riscrive (aggiornato, ovviamente).
Kiuhnm

Qui sei fortemente OT!
Cosa ti fa pensare che questo sia il NG giusto per il tuo problema?
Rivolgiti su: it.comp.programmare.win32, e non crosspostare!
Impara ad usare USENET prima di imparare cosa e' una socket.

Newsgroup: it.comp.lang.c++
Titolo: Documentazione STL

Salve a tutti. Mi farebbe comodo una documentazione delle STL completa, 
con tutte le funzioni, e meglio ancora con qualche esempio di codice. 
Esiste qualcosa di simile *gratis* scaricabile da qualche parte? Formato 
preferibilmente HTML o txt. Grazie.
-- 
Andrea Bergia - studente
Linux Registred User #281550

 preferibilmente HTML o txt. Grazie.
http://www.sgi.com/tech/stl/
dovrebbe andare bene
esempi ce ne sono pochi, perň
--
Lupin85Š - FILSer #2
Founder di #fils
-*Sign in allestimento*-
Newsgroup: it.comp.lang.c++
Titolo: Dove sbaglio?

Sapete trovarmi l'errore in questo codice che ha come scopo l'ordinamento
di un vettore mediante indirizzi.
GRAZIE
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
int main()
{   const int size = 10;
    int i, j;
    int *elemento, vett[size], *vettPtr[size], hold;
    time_t tempo;
    time(&tempo);
    srand( time(&tempo) );
    for (i = 0; i < size; i++)
     { vett[i] = rand(1000);
       vettPtr[i] = &vett[i];
     }
     for(i = 1; i < size-1; i++)
       {  elemento = vettPtr[i];
          j = i - 1;
          while (*elemento < *vettPtr[j] && j >= 0)
            { vettPtr[j+1] = vettPtr[j];
              j--;
            }
         vettPtr[j+1] = elemento;
       }
  }

      { vett[i] = rand(1000);
non ho controllato l'algoritmo, ma questo è sicuramente sbagliato
poiché rand() non ha parametri.
int rand() restituisce un intero pseudocasuale tra 0 e RAND_MAX
RAND_MAX lo puoi definire con un semplice #define
(comunque in effetti mi pare un approccio strano...
Pareva così brutto usare un parametro per rand() ???)
Suggerimento:
Usa gli algoritmi di ordinamento che fornisce il C++
non reinventare l'acqua calda (se non per scopo didattico)
--
Gerolamo

 ha scritto nel messaggio
news:cMSQ7.272833$sq5.13...@news.infostrada.it...


 RAND_MAX lo puoi definire con un semplice #define
Orribile.  No, RAND_MAX non si puo' ridefinire; dipende dal
generatore, e non da te.  Ti informa qual'e' il range del numero che
rand ritorna, e basta.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 rand ritorna, e basta.
Ah.
Questo "particolare" mi era sfuggito.
Grazie!
--
Gerolamo

 ha scritto nel messaggio
news:BS1S7.295377$sq5.14...@news.infostrada.it...


Newsgroup: it.comp.lang.c++
Titolo: Token  non valido per il compilatore

Salve a tutti.
A scopo di debug, mi servirebbe un token non valido per il compilatore,
quindi in grado di produrre codice incompilabile
In questo modo, con opportune #define/#undef, posso verificare a priori di
non fare mai accesso in un certo frammento di codice ad alcune variabili.
L'esempio che segue chiarisce il concetto, ma il punto č: esiste un token
assolutamente e sempre non valido?
Es.
//...
bool try_using(int i) {return true;}
int var1;
//...
void test()
{
#define var1 INVALID_TOKEN
//...
if(try_using(var1));  //<----ERRORE!!!
//...
#undef var1
//..
if(try_using(var1));  //<----OK
//..
}
Grazie
-- 
Beppe

 quindi in grado di produrre codice incompilabile
provo a rispondermi da solo:
sembra che la chiocciolina @ (0x40) non piaccia al compilatore.
Con MSVC++ 6.0 mi ritrovo:
error C2018: unknown character '0x40'
Che sappiate, è standard????
Newsgroup: it.comp.lang.c++
Titolo: cancellare da resource view

 Buongiorno a tutti
Problema In VisualC++
Come faccio a cancellare un qualsiasi oggetto dal
workspace-resourceview(toolbar icona,finestra di dialogo ecc)Nel menu di
scelta rapida c'e solo l'opzione insert e non qualcosa per cancellare
Thanks
--------------------------------
Inviato via 
http://usenet.libero.it

 scelta rapida 
Cos'è un "menu di scelta rapida"?
Se capisci che non siamo in grado di rispondere a queste domande puoi 
intuire che hai sbagliato newsgroup! Ti consiglio di rivolgerti al NG 
"it.comp.programmare.win32", dove sicuramente avrai una risposta più mirata 
e precisa alla tua problematica.
-- 
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.
Newsgroup: it.comp.lang.c++
Titolo: Baco template nel VC

A titolo di curiosita' ecco un simpatico baco del VC sui template.
Se si omette di dichiarare il parametro T* (che comunque non e' usato)
il risultato e' che viene istanziato un solo tipo di template.
Ovvero Niente<pippo>() == Niente<papero>(0)
template < typename T >
void Niente(T*)
{
	const type_info& t = typeid(T);
	printf("%s \n", 
t.name
());
}
class pippo
{
};
class papero
{
};
int main(void)
{
	Niente<pippo>(0);
	Niente<papero>(0);
	Niente<int>(0);
	return 0;
}
-- 
Tieni per te il Papero se vuoi la mia email
Sito Papero -> 
http://utenti.tripod.it/papero

Ovvero Niente<pippo>() == Niente<papero>(0)
Non ho capito.
Il codice da te proposto a me da come output:
class pippo
class papero
int
Che altro dovrebbe dare? Dov'e' il baco?
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556
 
-- 
Posted from 
adsl-21-135.38-151.net24.it
 [151.38.135.21] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Che altro dovrebbe dare? Dov'e' il baco?
Ho postato la versione corretta.
La versione originale bacata e':
template < typename T >
void Niente()
{
	const type_info& t = typeid(T);
	printf("%s \n", 
t.name
());
}
class pippo
{
};
class papero
{
};
int main(void)
{
	Niente<papero>();
	Niente<pippo>();
	Niente<int>();
	return 0;
}
Che a me da solo dei Paperi.
Non che mi dispiace se vengono istanziato solo Paperi, pero' ...
++++
Ho il VC6 SP4, e sono gia' arrabbiato per la mancanza dei template
specializzati (che mi avrebbero fatto comodo). Questo non e' un baco
grave, ma non mi dispiacerebbe se invece di fare dei C# facessero un
buon compilatore C++ e della buona documentazione (visto che tra
l'altro costa pure un mucchio di soldi questo compilatore n.d.p.)


 l'altro costa pure un mucchio di soldi questo compilatore n.d.p.)
Il fatto e' che fare un VC++ piu' conforme porterebbe a M$ pochi $
piu' di quelli che gia' fa. Mentre C#, non tanto in se ma come parte
di .NET, gli portera' piu' $ di quanti byte passino per il tuo modem.


Il fatto e' che fare un VC++ piu' conforme porterebbe a M$ pochi $
Credo che in Microsoft esistano varie correnti di pensiero.
Quella dominante e' pero (secondo me) che gli standard esistono per
essere violati con codice proprietario.



questo e' un caso diverso. Prima definivi. Ora istanzi. Questo e'
corretto.
In ogni caso ho verificato: l'ultima versione del compilatore compila
(ed esegue) correttamente il tuo vecchio esempio (quello con le tre
chiamate con varie classi che ti generava solo paperi).


Guarda che e' scorretto anche secondo lo standard.
Non mi e' ancora chiara la sintassi nella dichiarazione e nella
implementazione con i template.
Durante le ultime ricerche ho visto che e' come se il VC non capisca
la differenza tra template specializzati e funzioni globali
overlodate. Il GCC si comporta meglio

Newsgroup: it.comp.lang.c++
Titolo: E' possibile fare questo ?

Data una classe Pippo e' possibile fare questo ?
class Pippo
{
    /* ... */
};
Pippo p;
if (p)
{
    /* ... */
}
Naturalmente l'if richiede un bool. E' possibile farlo tramite qualche 
overloading di operatore ?

 overloading di operatore ?
certo che è possibile.
io farei l'overloading dell'operatore unario "!".
-- 
          Andrea Spadaccini a.k.a. Lupino         
                    - Catania -                   
Linux Registered User #313388 - Mandrake Linux 9.1

 overloading di operatore ?
Sě. Nelle classi *stream della librearia standard, ad esempio, questo viene
realizzato definendo l'operatore di conversione a void*.
 Pippo::operator void*() const
 {  if( some_internal_check() ) return (void*)this;
    else return 0;
 }
Max


Ti hanno gia' suggerito due strade, io ne metto una terza; nella
definizione di Pippo metti:
operator bool() const {...}
Per chi ti ha suggerito altre strade: a me questa sembra molto piu'
semplice e banale? C'e' qualche controindicazione?
 bye
	av.

 semplice e banale? C'e' qualche controindicazione?
No, la tua e' la migliore secondo me. Uso questa ! (grazie comunque agli 
altri)


Premesso che, a mio modo di vedere, ricorrere a un operatore di conversione 
(anziché dotare la classe di un'apposita funzione membro) in questo caso  
(e in molti altri) non mi pare offra particolari vantaggi, c'è in effetti 
un motivo per cui nelle classi *stream del C++ è stato scelto di definire 
l'operator void*, e non l'operator bool.
Il tipo 'bool' viene all'occorrenza implicitamente convertito in un tipo 
integrale. Questo può rendere certi errori meno facili da individuare.
Ad esempio, se 'std::cin' disponesse dell'operatore di conversione a 
'bool', sarebbe possibile scrivere e compilare:
   int i = std::cin;
oppure (più subdolo):
   std::cin << 1; // ho scritto "<<", ma volevo scrivere ">>"
oppure semplicmente passare 'std::cin' a una funzione che accetti un 'int'.
Max

Newsgroup: it.comp.lang.c++
Titolo: c++ e wxwindows

Salve a tutti,
sto tentando di capire come si possono riuscire a fare i tab
utilizzando la libreria wxwindows. 
Ho provato sovrapponendo wxDialog ma non mi riesce.
Quello che vorrei fare in definitiva e' un frame che al suo interno
abbia gia' predisposti 4 di questi pannelli selezionabili con le
classiche linguette in alto (i tabs).
Sono alla frutta ed ho esaurito le fonti da dove potevo provare a
capire. 
Help!
Grazie
E.p.


Posso darti una mano, ma sul newsgroup giusto .
Uno dei possibili č it.comp.programmare.win32 (cosě potrai usarlo per altre
eventuali domande)
bye
--
------------------------
http://visualwx.altervista.org/
nuova release 0.85 [freeware]
VisualWx rad per c++,python,perl,ruby,lua e wxwindows

 eventuali domande)
Nel caso che invece la piattaforma di riferimento fosse GNU/Linux 
suggerisco it.comp.os.linux.developement
Newsgroup: it.comp.lang.c++
Titolo: RAM

Utilizzando la funzione coreleft() mi sono accorta che il compilatore della
Borland versione 3.0, utlizza solo 60 kbytes di RAM su 24 mega installati.
Vorrei sapere se ciò sia legato al fatto che la versione è molto vecchia o
se esistono delle opzioni per aumentare tale limite.
Grazie
Paola

 scritto nell'articolo
<01bd8865$7f11f680$LocalHost@paola>...

La funzione coreleft() dipende dal tipo di modello di memoria usato nella
compilazione e puo' restituire nei modelli di dati "small" la quantita' di
memoria libera fra la sommita' dello heap e lo stack, mentre nei modelli
"large" restituisce la quantita' di memoria fra il blocco allocato piu' in
alto e la fine della memoria disponibile.
Dalla domanda da te fatta posso intuire che tu abbia bisogno di gestire
tutta la RAM in possesso (24 mega).
Non sono pero' pratico del mondo DOS, pero' posso darti dei consigli:
1) Si potrebbero usare le funzioni che iniziano con il prefisso "far" 
(farmalloc, farcalloc, farfree) per allocare blocchi piu' grandi di 64Kb.
2) Dovresti studiarti come il DOS gestisce la memoria e i limiti per
l'allocazione della stessa (anche per quanto riguarda il compilatore
Borland).
3) Nei manuali in tuo possesso vedere se vi e' la possibilita', se i primi
due punti sono negativi, di poter compilare con un DOS-Extender, che
permette di gestire tutta la memoria estesa, eventualmente creandosi anche
un file di scambio (swap file).
Ciao.
-- 
Jo Parrello.
http://space.tin.it/computer/giparrel
jopa...@tin.it

Paola
      Salvatore DOLCIMASCOLO
   salvo....@NOSPAMteleion.it
(per rispondere, cancellare NOSPAM)
         ICQ : 12611651
http://www.pegacity.it/informatica/case/2400/index.htm

>PGP public key avaiable with "finger
xywza...@helen.cli.di.unipi.it
<<
fingerprint: D1E7 641F 1821 74BA  1836 9B50 B37C 5FA3

se esistono delle opzioni per aumentare tale limite.
Con quel (fantastico) compilatore, ormai obsoleto purtroppo, non andrai mai
oltre i 64k nè con coreleft() nè con farcoreleft(), in nessun modello di
memoria, così come non riuscirai mai ad allocare più di 64k alla volta
nemmeno con farmalloc(), checchè ne dica la guida... l'unico modo davvero
efficiente per lavorare con la RAM è quello di usufruire del gestore di
memoria XMS, hymem.sys; naturalmente attraverso l'assembly o qualche buona
libreria che ancora si trova sparsa per la rete - non certo usando alloc.h!
8-((

...

E usare XMS non e' tanto facile, anche perche' comunque hai il limite di
64k anche per i blocchi di memoria estesa. Ogni volta devi swappare tra
memoria estesa e memoria convenzionale, ed e' una cosa che sconsiglio a
tutti.
Meglio affidarsi ad un DOS-Extender, come per esempio (dovrebbe!!) fa il
Borland C++ con il PowerPack per DOS o faceva (ora non e' piu' venduto) il
Borland Pascal 7 (che poteva creare DLL per dos e per Windows!!). Ce ne
sono tantissimi freeware e shareware, ed alcuni tipo il Phar-Lap entreranno
nella storia del DOS.
Ciao.
-- 
Jo Parrello (
jopa...@tin.it
)
http://space.tin.it/computer/giparrel
Newsgroup: it.comp.lang.c++
Titolo: NEWBIE problemuccio

Ciao a tutti ragazzi sto imarando da zero l'tlizzo di c++
come editor utilizzo dev C++ 4.9.8 in italiano.
Ora espongo il mio problema:
Mi sono studiata le basi teoriche e su carta ho fatto molti esempi.
Premetto che programmo già in java e VB.net;
Ora andando a scrivere il piu' stupido e solito primo listato:
----------------------------------------
#include <iostream.h>
main()
{
	cout << " CIAO MONDO! ";
	return (0);
}
----------------------------------------
tutto bene compilandolo non mi da nessun tipo di errore rilevanteper il 
corretto funzionamento.
Ma andando a eseguire il codice appare per una frazione di secondo,
la finestra di console e poi sparisce subito impedendo di vedere
l'output del programma.
secondo voi come mai ? (lo so che state ridendo ma non me la prendo ;) ).
Grazie pr le risposte.
Stefy

 
devi far girare il programma su una consolle già aperta
-- 
Hai recensioni nel cassetto di musica, cinema, letteratura,fumetti??
Ascolta e pentiti e se hai tempo vergognati
http://tonysuper.altervista.org

 devi far girare il programma su una consolle già aperta
"Console".
-- 
SiMoStro

 >
O lo esegui su una finestra dos già aperta, o inserisci una funzione di
input ( getchar(), getch() presente in stdio.h)

 l'output del programma.
Aggiungi 
system("PAUSE"); 
prima di "return 0;", cosi' ti chiedera' di premere un tasto prima di 
chiudere la finestra testuale.
Dan

 secondo voi come mai ? (lo so che state ridendo ma non me la prendo ;) ).
A parte tutti gli errori che ci sono in questo piccolo esempio (oddio hai
messo su google "ciao mondo" e hai copiato il primo strafalcione che ti si è
presentato), prova a mettere getchar(); prima di return, oppure
system("pause"); per fare in modo che la console non si chiuda alla
terminazione del programma.
  #include <iostream>
   using namespace std;
   int main() {
       cout << "Hello, world!" << endl;
        system("pause");
       return 0;
   }

 ha scritto nel messaggio
news:aN%Wc.146229$OR2.7...@news3.tin.it...



Grazie a tutti per le pronte risposte!
Ciao da Stefania

 Stefy
Aggiungi
std::cin.get ();
prima di return 0;
HTH
===
Gianni

 system("PAUSE"); 
io non sono molto favorevole a questa situazione, poiche` e` 
sostanzialmente non portabile. Ad ogni modo funziona.

 #include <stdlib.h>
#include <cstdlib>

 Ad ogni modo funziona.
Yes!
Newsgroup: it.comp.lang.c++
Titolo: CArray o vector??

Conviene usare CArray o vector se entrambi fanno la funzione che uno vuole??
Quale dei due è più veloce??

Quale dei due è più veloce??
Suppongo che CArray sia una classe alternativa che si trova nelle MFC,
quindi conviene utilizzare std::vector che é invece standard.
Le classi di MFC non sono minimamente riutilizzabili al di fuori di
Windows, in quanto si appoggiano alle API del so.
Il Ghenio
---------
// TODO: Place your ass here

Newsgroup: it.comp.lang.c++
Titolo: Programmazione hardware e simili

Vabbè, so che in questi casi si usa direttamente l'Assembler
senza pensarci due volte....
però io vorrei imparare a programmare le interfacce con l'hardware
del mio pc, ad es. porta seriale, porta parallela, porta firewire,
porte usb, etc......etc.....
Si può fare in C++ o si deve solo ricorrere all'assembler?
Esistono libri di testo aggiornati che parlano dell'argomento?
Sapete mi hanno colpito molto gli ultimi numeri della rivista "Dev", di cui
però sfortunatamente ho letto solo la copertina in .pdf......sigh!!!
e dicevo, c'erano degli articoli davvero sfiziosi sulla programmazione
della porta seriale, dei cellulari Nokia, e roba simile,
naturalmente tutto mediante C++.
Grazie per chi mi vorrà indicare qualche documento, libro di testo
aggiornato,
sito con manuali di qualità, e simili......
Saluti
Francesco
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 sito con manuali di qualità, e simili......
Ciao, purtroppo al momento non posso essere più preciso.
Io ho "programmare Windows" 5a edizione di Petzold però non c'è tutto quello
che cerchi, prova a vedere in rete su qualche motore di ricerca. Per Linux
probabilmente trovi molto di più, per Windows penso che ci sia meno
materiale.

 sistema operativo che utilizzi.
Quindi sono sufficienti documentazioni relative al particolare sistema
operativo
usato per usare, tramite API, l'hardware, ho capito bene ? E' cosě?
in tal modo me ne posso anche sbattere tranquillamente dell'architettura
intera.....
es. un Intel P4......
Sei stato gentilissimo.
Grazie e Ciao


Newsgroup: it.comp.lang.c++
Titolo: Componenti Delphi 2.0 <-> C++ Builder

Saluti a tutti,
possiedo la versione 2.01 di Delphi e sto pensando di acquistare
C++Builder.
Vorrei sapere se, e in che modo, e' possibile utilizzare i componenti
OCX (Formula One, Vspeller, componenti internet) allegati a Delphi con
il C++Builder.
Grazie.

Esattamente come fai con Delphi.
-------------------------
    Armando Colombo
C/S & Intranet Consulting
 
http://www.acolombo.com
-------------------------

--

Grazie mille,
E' anche possibile installare gli stessi identici componenti
installati da Delphi ?
Mi spiego meglio: e' possibile installare dentro C++ builder ed
utilizzare i componenti OCX forniti con Delphi in modo da non dover
comprare la versione Developer ? (Sono uno studente ...)
Grazie ancora.


 comprare la versione Developer ? (Sono uno studente ...)
--


[...]
Newsgroup: it.comp.lang.c++
Titolo: constness

Salve,
Sto utilizzando una libreria con delle funzioni C che spesso prevedono 
tra i parametri dei (char *), parametri che in realta' potrebbero essere
benissimo invece dei (const char *). Nella mia applicazione in C++, utilizzo
invece varibili di tipo string. 
Il mio problema (niente di grave, per carita') e' che vorrei passare a queste
funzioni il (const char *) ottenuto con il metodo c_str() delle stringhe,
ma ovviamente il compilatore non apprezza temendo che le funzioni di libreria
che invoco possano provare a modificare i parametri che gli passo.
es.
int funzioneDiLibreria (char *msg); 
...
int MiaClasse :: mioMetodo (const string &s)
{
   return funzioneDiLibreria (s.c_str());
}
La cosa e' piuttosto noiosa, infatti devo castare s.c_str() a (char *) e
comunque sorbirmi un warning.
A dire il vero, ho notato che egcs chiude un'occhio e da il warning solo
in assenza del cast, mentre un'altro compilatore, per Digital Unix, da 
proprio un errore se non uso il cast (e quindi non compila)
Credo che questo sia un problema abbastanza frequente quando si utilizzano
librerie C in applicazioni C++, non avendo il C problemi di "strict constness".
Qualcuno conosce un modo pulito ed elegante per ovviare all'inconveniente ?
(che non sia quello di copiare la stringa su un buffer temporaneo ;-)
*Fabio*
-- 
Java Users:
Due to the holiday next Monday, there will be no garbage collection.

*Fabio*
Puoi usare const_cast<char *>(xxx) per fare il cast. E' forse 
altrettanto
noioso, ma vagamente piu' elegante. :) 
-- 
God is Real, unless declared Integer.

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

Esiste, in rete, un compilatore C++ free per Windows ?
Grazie a tutti
Luigi

Esiste, in rete, un compilatore C++ free per Windows ?
vedi faq su 
www.programmazione.it
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------