mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Funzioni globali

Come si fa ad impostare delle variabili globali a tutti le classi di un
progetto?
In particolare sto creando una dll utilizzando ATL e vorrei che quando uno
dei componenti in essa contenuti viene istanziato vengano letti dei valori
dal registro di sistema e che tali valori siano accessibili da tutte le
classi della dll.
Ho pensato di creare una classe CSetup i cui data members sono proprio i
valori che a me interessano. Tali valori potrebbero essere inizializzati nel
costrutore della classe. Il problema e`: devo includere in ogni classe del
mio progetto un data member di classe CSetup per accedere a tali valori?
Sarebbe bello avere delle variabili o delle funzioni globali accessibili
senza dovere passare un apposito oggetto
Ho provato a creare una classe con metodi static ma non so bene come si
usano e mi sono bloccato con errori di tipo 'undefined external symbol' etc.
etc.
Ogni aiuto mi sarą molto prezioso....
Ciao e grazie,
Mario



etc.
Usando attributi e metodo "static" ci sarebbe il vantaggio che l'oggetto "CSetup" non verrebbe istanziato per ogni oggetto della classe in cui è inserito (come dicevamo prima), ma ce ne sarebbe solo una copia. In ogni caso avresti un oggetto "CSetup" per ogni classe diversa.
-----
Se non vuoi utilizzare direttamente un oggetto globale (sappiamo quanto le variabili globali siano odiate... e fonte di problemi) potresti definire sempre l'oggetto globale (come nell'esempio che ho scritto all'inizio), ma fare in modo di passare un riferimento all'oggetto a tutti gli altri oggetti delle varie classi che in questo modo non accederebbero direttamente all'oggetto globale. Avrebbero quindi un "data member" come riferimento all'oggetto "CSetup".
class MyClass
{
   CSetup *setup;   // puntatore alla configurazione
   MyClass(CSetup *p) { setup = p; };
}
// Valorizza il puntatore
MyClass::MyClass(CSetup *p)
{
   setup = p;
};
void MyClass::MyMethod()
{
   setup.Parameter...   // Usa il membro interno alla classe
}
-----
Spero di esserti stato di aiuto.
Ciao,
Angelo.

Ho visto che mi hai risposto molto dettagliatamente, ti ringrazio moltissimo
e metto subito in pratica (avevo aggirato il problema per questioni di
tempo...).
Ancora grazie,
Mario

Newsgroup: it.comp.lang.c++
Titolo: Risposta urgente

Domani devo presentarmi ad un esame , il mio progetto è pronto, ma mi
servirebbe parlare con qualcuno di voi se è connesso via e-mail per subito.
grazie


Ma scusa, perchè non posti sul NG le parti che ti lasciano dubbioso?
(ovviamente non mandare migliaia di righe di codice!!!)
--
Gerolamo
"In teoria non c'e' differenza fra la teoria e la
 pratica...  ma in pratica c'e'"
Newsgroup: it.comp.lang.c++
Titolo: Fogli Excel

Salve!
Vorrei fare un programma che mi salvi dei dati su memoria di massa su un
file  *.xls, con i dati opportunamente ordinati nelle tabelle.
Se è possibile come si può fare? esistono dei tutorial in rete a tal
proposito?
Grazie!!!

 ha scritto nel messaggio
news:O6VN9.20385$Q%4.64...@news1.tin.it...


grazie e buon natale pure a te!

jazzman900 ha scritto:

Ho un package ottimo: JExcelApi
Purtroppo me lo hanno passato al lavoro e non ho l'URL dal quale 
scaricarlo :(
prova a cercare con Google.
So di certo che esiste un gruppo su Yahoo: 
http://groups.yahoo.com/group/JExcelApi

Newsgroup: it.comp.lang.c++
Titolo: Dal loop non si esce...

Quando ci si trova all'interno di un ciclo tipo:
while (!infile.eof())
    {
    legge_una_riga_dal_file
    invia_la_riga_sulla_seriale
    }
Come si deve fare per continuare a gestire gli eventi tipo riduci a
icona, ingrandisci, chiudi, senza dover aspettare di essere usciti
 dal loop ?
Grazie


ICQ #34602650

]

  dal loop ?
Li gestisci all'interno del loop, immagino.
Comunque "while (!infile.eof())" e' il classico errore dei
principianti arrivati dal Pascal; cfr. la FAQ di comp.lang.c, Q/A
12.2, che comincia:
12.2:   Why does the code
                while(!feof(infp)) {
                        fgets(buf, MAXLINE, infp);
                        fputs(buf, outfp);
                }
        copy the last line twice?
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

        copy the last line twice?
E quale sarebbe la soluzione?

"Ueilà" <shea_o...@shannara.elf> writes:

Quella di leggersi la risposta.
A mo' di mamma che predigerisce il cibo e lo rigurgita nella bocca
delle sue creaturine troppo poco sviluppate per essere in grado di
mangiar da sole, `ti porgo cotale risposta:
A:      In C, end-of-file is only indicated *after* an input routine has
        tried to read, and failed.  (In other words, C's I/O is not like
        Pascal's.)  Usually, you should just check the return value of
        the input routine (in this case, fgets() will return NULL on end-
        of-file); often, you don't need to use feof() at all.
        References: K&R2 Sec. 7.6 p. 164; ISO Sec. 7.9.3, Sec. 7.9.7.1,
        Sec. 7.9.10.2; H&S Sec. 15.14 p. 382.

Newsgroup: it.comp.lang.c++
Titolo: Sample REVERSE in VC++

Salve! Sono nuovo del NG, e avrei bisogno di un favore.
Qualcuno potrebbe mandarmi in privato l'esempio REVERSE incluso in MSDN?
Non lo trovo più e mi è indispensabile per capire il funzionamento
dell'editing audio a basso livello.
Grazie in anticipo a chi mi aiuterà.
Marco
--
INCCTQAAACLRO
"Now it is time to see how you died.
Remeber that death is not the end,
But only a transition."
(Fatal Tragedy, Dream Theater)
"Amo quella tazza larga e corta
Con quel beccuccio è ancora più corta
Amo quella tazza è un incanto
Non è nuova ma piace tanto"
(Kate, La Tempesta del Secolo, S. King)

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: DirectX 7 e cursore del Mouse Dannaz Dannaz...

Se pur ci sia scritto che settando le DX7 inexclusive e full screen non ci
sia alcuna possibilità di usare il cursore di sistema del mouse a me riesce
e anzi non riesco a farlo andare via!
ho praticamente solo copia incollatoi pezzi degli esempi in u progetto mio
ed è subito apparsa sta cosa.
non riesco a farlo sparireeeee
è tutto settato uguale
la crlasse della finestra è la medesiam le flag delle sueprfici sono le
stesse... la risoluzione anche!
come cavolo faccio a farlo sparire?
il bello è che c'`e scritto che per usare un cursore bisogna implementarselo
da soli e non c'`e modo di usare quello di sistema... MAH!
w l'exclusivemode | fullscreen
anzi fullscream! dati che fra un po mi girano e mi metto a gridare come un
matto.
 bye bye
:)

SCUSATEEEEEEEEEEEEEEEEEEEEEEEEEEE
ho capito il mio grossolano errore
bastava aggiungere all'evento
        case WM_SETCURSOR:
            SetCursor(NULL);
            return 0L;
vabbeh ma non c'era scritto da nessuna parte anzi c'`e scritto che non c'`e
modo di usare il cursore di windows.......
bah sono pazzerelli alla microsoft.

Newsgroup: it.comp.lang.c++
Titolo: seq. di escape

Qual'è la seq. di escape che, scrivendo un file di testo (.txt), permette di
andare a capo ?
Ho provato di tutto:
\n
\r
\r\n
\n\r
....
....

 wrote in message
news:8i4pbl$vvp$1...@lacerta.tiscalinet.it...


 andare a capo ?
\n
EMG
Newsgroup: it.comp.lang.c++
Titolo: Domanda su virtual

Ciao a tutti.
Ho avuto un problema strano su una virtual; in pratica, io ho definito una
classe base (astratta):
class CBase
{
protected:
....
public:
    virtual unsigned int f(char* Param1);
//Implementata nel .cpp.
    virtual bool f(char* Param1, char* Param2) = 0;         //Virtuale pura,
ma con signature diversa
};
E da questa, una derivata:
class CDerived: public CBase
{
protected:
...
public:
    bool f(char* Param1, char* Param2);
//Implementazione della virtuale pura.
};
Fin qui, sembra tutto regolare. Senonche', quando chiamo:
CDerived Derived;
Derived.f("prova");
il compilatore (Visual C++ 7.1) mi dice che "CDerived::f does not take 1
parameter(s)".
Quello che non capisco e': perche' il compilatore non chiama il primo
overload di "f", cioe' quello nella classe base?
La classe base viene ereditata come pubblica, il metodo e' pubblico, va bene
che e' virtuale, ma non e' puro e non e' reimplementato nella derivata.
Certo, il workaround e' semplice (quanto noioso): basta overloadare anche la
prima versione nella derivata, e dentro qui chiamare la versione base, ma
non ha senso (per me, almeno).
Qualcuno sa spiegarmi questo comportamento strano?

il compilatore ha segnalato questo problema anche a me..
Premesso che ho usato lo stesso compilatore (vs 2003), credo abbia qualche
bug, anche perchè dichiarando non virtual la funzione f con un solo
parametro segnala lo stesso errore, a dirla in modo semplice pare che non
digerisca l'overload delle funzioni virtual... però ci sono due
alternative...
o quando la invochi specifichi per esteso il nome... o nell'header usi la
direttiva using CBase::f;
così va...
antonio

 overload di "f", cioe' quello nella classe base?
http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6
Max

Newsgroup: it.comp.lang.c++
Titolo: Inizializzazione matrice

Salve,
mi pare di ricorda che in C++ fosse possibile inizializzare una
matrice assegnando i valore per colonne e non per righe, ma non
ricordo come dovessero essere disposte le parentesi quadre.
Ad es. come posso ottenere la matrice:
1 2 3
4 5 6
7 8 9
nel seguente codice?
int M[][] = {1, 4, 7,
                2, 5, 8,
                3, 6, 9};
Nel modo in cui l'ho scritto io assegna i valori alle righe... per
assegnarli alle colonne come si fa?
Ciao

> ricordo come dovessero essere disposte le parentesi quadre.
Intendevo parentesi graffe :-)

 ricordo come dovessero essere disposte le parentesi quadre.
Il C/C++ non ha il concetto di matrice, nel linguaggio, quello che puoi 
fare è un array di array. A quel punto puoi interpretare tu se gli array 
rappresentano righe o colonne.
E.
Newsgroup: it.comp.lang.c++
Titolo: parsing parametri

Salve a Tutti,
Dovrei fare un programmino in c++ ansi che accetta in ingresso vari
parametri tipo "-a 4 -b 60 -f pippo.txt" per usarli
poi come valori di variabili.
Avete per caso un esemio gia' fatto per farmi vedere come si fa oppure un
link ad una articolo sull'argomento ?
Devo usare scanf ( ) ?
Grazie,
Marco

 parametri tipo "-a 4 -b 60 -f pippo.txt" per usarli
prova a fare una ricerca su getopt()
--
Ciao.
Maurizio
P.S.: eliminare _NO_SPAM per rispodere in privato


Ti ringrazio, e' la soluzione che cercavo ma fa solo sotto linux da quanto
ho capito,
non c'e' per windows ? Io uso bloodshed devc++ 4.01
http://www.bloodshed.net/devcpp.html
Ciao

 non c'e' per windows ? Io uso bloodshed devc++ 4.01
L'ambiente dos di windows non lo conosco, ti consiglio di provare su
it.comp.programmare.win32
o se no potresti anche andare a vedere che cosa contengono le variabili:
argc e argv, che ti vengono passate come parametri nel main.


non c'e' per windows ? Io uso bloodshed devc++ 4.01
Penso che ci sia e funzioni, al massimo ricompili i sorgenti, stai
solo attento alla licenza (penso sia LGPL quindi non dovrebbero
esserci problemi).
-- 
Marco Barisione (ICQ 84277092)

Newsgroup: it.comp.lang.c++
Titolo: problemino ino ino

Ciao!
vi è mai capitato usando MSVisualC++ 5.0 che cliccando sull parte sinistra
dello schermo (finestra workspace) sul nome di un metodo il cursore anzichè
posizionarsi sul corpo di tale metodo si posizioni in posti diversi o venga
visualizzato un messaggio che sostiene di non poter trovare la funzione
desiderata (sebbene esista)?
WHY? qual'è il file che contiene questi riferimenti? com'è possibile farlo
rigenerare?
Grazie 1000!
(se possibile rispondetemi anche per e-mail)
mauro...@bg.flashnet.it

 wrote in message
7rd22a$fan$1...@news.flashnet.it...


Newsgroup: it.comp.lang.c++
Titolo: "Veri" puntatori ad array.

Salve a tutti.
Mi sono da poco imbattuto nella notazione
dei puntatori a "vettore" in C/C++.
Non la classica, per intenderci, questa:
int (*p_x)[n]
Da quello che ho capito l'operazione p_x + 1
dovrebbe puntare alla prima posizione di memoria
oltre il mio array e sizeof(p_x) = sizeof(int) * n.
Innanzitutto correggetemi se ho sbagliato qualcosa.
La mia domanda invece era...è necessaria una
notazione di questo tipo? O meglio, che vantaggi
ha rispetto ad una dichiarazione tradizionale?
Grazie mille a tutti!!

 ha rispetto ad una dichiarazione tradizionale?
Non capisco cosa intendi con "tradizionale". Comunque se l'oggetto a cui 
fai riferimento č l'intero array, allora userai int (*p)[n], se invece 
vuoi accedere agli elementi utilizzerai int *p[n]. Nel primo caso, perň, 
sarebbe piů naturale dare un nome all'oggetto con un typedef, visto che 
l'array viene trattato come unico oggetto, piuttosto che come un array.
E.


Per classico intendevo la notazione int var_name[n].
Mi piacerebbe sapere quando conviene usare uno e quando l'altro,
per esempio se uso il tradizionale non ho informazione sul
numero di elementi (che passerň come parametro magari).
Grazie.
Kap.
Newsgroup: it.comp.lang.c++
Titolo: [OT] Linguaggio D

Per chi non lo sapesse, è uscito un nuovo linguaggio: D.
http://www.digitalmars.com/d/
Per chi lo sa e ha visitato il sito, cosa ne pensa?
Magari sottoscrivete it.comp.lang dove ho iniziato un thread. Ho postato
anche qui perchè "D" è ritenuto il successore di C++ quindi... ancora il
compilatore è alpha, però da quanto ho letto mi pare molto interessante.
Grazie
--
Luigi
E-mail: 
cybe...@email.it
ICQ #46240443

> Per chi non lo sapesse, è uscito un nuovo linguaggio: D.
??? E' dal 1999 che è iniziato il progettio...................
Non è ancora nemmeno standardizzato ( e le previsioni nn sono rosee ) e non
esisto praticamente compilatori, e non esiste nemmeno una reale esigenza ad
un nuovo linguaggio (il c++ è già molto complesso di per se!) e tu ci vieni
a dire che è USCITO UN NUOVO LINGUAGGIO, PER CHI NON LO SAPESSE?????
BHA'

 a dire che è USCITO UN NUOVO LINGUAGGIO, PER CHI NON LO SAPESSE?????
Non tutti stanno 24h su 24 in rete. Non tutti hanno sottoscritto tutte le
newsletter della rete. Non tutti hanno l'abbonamento a ogni rivista
informatica esistente.
ciao


 ciao
Si ma su un newsgroup che si chiama it.comp.lang.c++ non ci stanno mica
esperti di cucina!?!

 esperti di cucina!?!
Ma che centra! Ovviamente la conoscenza del settore informatico sulla
programmazione in questo NG č medio/alta, ma non per forza tutti sanno
tutto!

Newsgroup: it.comp.lang.c++
Titolo: Ordinamento di array di tipo int

Come posso ordinare degli array di tipo int?
Esistono altre funzioni oltre qsort?
Grazie, Tiziano.

 Esistono altre funzioni oltre qsort?
Certo che si; io ti consiglio di usare std::vector e non arrays,
ma comunque ecco un esempio...
MLO 5 $ cat foo.cxx
#include <iostream>
#include <algorithm>
int main() {
  const size_t x = 10;
  int array[x] = { 1, 0, 2, 9, 3, 8, 4, 7, 5, 6 };
  std::sort(array, array+x);
  std::copy(array, array+x, std::ostream_iterator<int>(std::cout,
  "\n")); 
  return 0;
}
MLO 6 $ g++ -ansi -Wall -o foo foo.cxx && ./foo
0
1
2
3
4
5
6
7
8
9
MLO 7 $ 
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it
Newsgroup: it.comp.lang.c++
Titolo: [Forse OT] Domandone DLL

Ho un programma che č stato fatto con il LabWindows/CVI della National
Instruments e sotto win 3.1, e all'interno di questo progetto č stata usata
una vecchia DLL/LIB di visual basic che si chiama VBPRINT.DLL e ora questo
progetto deve essere importato su WinNT e quindi su un'architettura win32 e
non piů win16 ovviamente le dll sono diverse, non sono riuscito a trovare in
rete la libreria di cui ho bisogno che č la vbprnt32.dll perň deve essere
precedente alla versione 2.0 perchč altrimenti mi cambiano gli header ed č
tutto diverso le funzioni di questa libreria utilizzate sono:
InitializePrinter
DonePrinting
PrintHeadLine
SetParagraphSpacing
CopyActiveWindowToClip
SetUpColumns
PrintColumnText
EndColumnText
EndColumnHeaders
MoveYPos
Chiunque abbia la dll e la lib della versione a 32 bit se me la potrebbe
passare mi farebbe un'immenso favore

 potrebbe passare mi farebbe un'immenso favore
it.comp.programmare.win32
ciao
--
Gerolamo
E' in corso la votazione di it.comp.software.webserver
Se sei interessato alla creazione di questo NG, leggi il messaggio:
news:MK.it.comp.softw...@news.nic.it
Newsgroup: it.comp.lang.c++
Titolo: Programmi per lo scambio di file

E' un pň che ho la pazza idea di sviluappare un programma per trasferire 
file tipo i classico napster ma mi sono soffermato a pensare e a 
ripensare per risolvere gli innumerevoli problemi che si hanno in questi 
programmi. Il piů oneroso č la ricerca di file che impiega sempre molto 
tempo a causa del sommarsi dei vari calcoli e processi che deve subire il 
pacchetto di query per la ricerca. A questa problema si puo sopperire 
solamente sviluppando un sistema centralizzato o avere nei singoli server 
un chage di richieste e risposte ma questa seconda idea non mi allieta 
molto!!!
Per prima cosa allora userei un protocollo UPD al Posto del TCP cosě 
risparmio un nei pacchetti di connessione e recupero banda . Bigogna in 
ogni caso mettere un check sum per controllare la correttezza del 
pacchetto!Se usiamo questa tecnica ci conviene inviare le risposte 
direttamente al cliente e non rimettere i pacchetti in rete in maniera da 
congestionare le ricerche!
Per sapere che server sono online bisogna solo inserie una funzione di 
ping a cui ogni client risponde con la propia ip e l'ora del segnale.
Per identificare i computer usare un numero identificativo a 12 byte !!!
Per il download ci sto ancora pensando . Si puň fare basato su protocollo 
HTTP come fanno molti altrimenti pensavo un portocollo compresso ma non 
so che rese e con che risultati . Solo il trasferimento dei file avviente 
in tcp il testo in UPD!!!
Che ne pensate voglio commenti feedback e tutto il possibile. Se qualcuno 
č interressato all'idea cerco collaboratori!!!
GRAZIE
	<SAX>


IMHO e` inutile continuare a creare doppioni su doppioni con un paio di funzioni
in piu` o in meno.
Se vuoi lavorare su qualcosa di grosso, le comunita` di sviluppo OpenSource
AFAIK sono sempre contente di nuove persone che apportano contributi...
Un paio, solo per dare un'idea, di progetti interessanti che pero` sono ancora
molto "sperimentali"...
http://gift.sourceforge.net
http://lopster.sourceforge.net
Ovviamente tutto questo *IMHO*
Adieu,
-- 
Lestat de Lioncourt                            |             Ciro Mattia Gonano
  JabberID: 
les...@jabber.students.cs.unibo.it
 |       Undergraduate Student in
  ICQ#: 52631406                               |            Computer Science at
  URL: 
http://www.CS.UniBO.It/~gonano
          |          University of Bologna
         <powered by Linux Slackware 8.1-beta2 on Kernel 2.4.18-xfs>

congestionare le ricerche!
Mumble non vorrei dire una cavolata, ma solitamente nelle connessioni
ad internet (degli utenti normali) si utilizza solo il tcp/ip......
Vorresti far installare il protocollo UDP a tutti i client?!
NM


Quando si "installa TCP/IP" solitamenete questo include anche UDP.
In effetti dire TCP/IP e' un po' improprio ma si usa cosi'.
Alessandro.

 
beh, altrimenti, al posto di chiamarsi "TCP/IP" si chiamerebbe "TCP" e basta
:)))

Newsgroup: it.comp.lang.c++
Titolo: ?? Stampa ??

1) Chiedo scusa, cosa devo fare x stampare delle stringhe?
    Cioè invece di "printf" esiste un analoga istruzione il cui output è
verso la stampante?
2) Che differenza c'è tra le istruzioni di output    "printf"   e "cout"
???
Grazie.
e scusate la banalità delle domande...
:-)
Acrosstheuniverse

 ???
Intanto printf è ereditata dal C; comunque la differenza sostanziale è che
cout è un ostream, per cui puoi usarlo con una qualunque classe scritta da
te ridefinendo l'operatore "<<", mentre printf è una funzione, e la puoi
usare solo con i tipi predefiniti. Inoltre quest'ultima è più maneggevole
per formattare l'output.
Ciao,
Cecco

Newsgroup: it.comp.lang.c++
Titolo: new di array multidimensionali

per allocare array multidimensionali (per esempio bidimensionali) io 
conosco solo il sistema che consiste nell'allocare prima un array di 
puntatori e poi fare un ciclo...
per esempio
   float **a =new (float *) [N];
   for (int i=0;i<N;i++) a[i]=new float[M];
esiste una sintassi piu' sintetica?
-- 
Hai recensioni nel cassetto di musica, cinema, letteratura,fumetti??
Ascolta e pentiti e se hai tempo vergognati
http://tonysuper.altervista.org

 esiste una sintassi piu' sintetica?
Prova con i vector<> 
-- 
Luc

 puntatori e poi fare un ciclo..
Prima di postare a volte si potrebbe fare una ricerca per vedere se qualcuno
ha già postato qualcosa di simile:
per esempio:
int (*color) [255][255]=new int[255][255][255];
ti alloca già tutta la matrice tridimensionale.
Newsgroup: it.comp.lang.c++
Titolo: Novellino? di piu'!

Salve a tutti,
mi e' bastato un solo sguardo a questo Ng per capire QUANTO sono lontano
dalle idee che mi erano venute in mente (cioe' che ne avresi saputo
parecchio su C, C++)
Sono solo 5 mesi che conosco l'esistenza di questi linguaggi, e ne sono
rimasto affascinato.
Dopo un inizio con il corso universitario di C++ e spolveratine di C vorrei
poter continuare, e saperne un po' di piu'.
Uso il Turbo C++ della Borland 7.0 che, per quello che ci sapevo fare e'
ottimo.
Un consiglio:
come continuare la "scalata" al C,C++?
sono un po' scoraggiato... ne so proprio poco!
Giuliano
--
----------------------------------------------------------------------------
------------
Se c'è un Ng più adatto alle mie domande sarà gradita l'indicazione
Grazie.
If you know the right Ng where to ask for it, please let me know.
Thanks.

ottimo.
Visto che sei già in zona Borland probabilmente ti troverai bene
con C++ Builder. Io personalmente lo preferisco a MS, ma è questione
di gusti.
Ciao.

come continuare la "scalata" al C,C++?
Un buon compilatore aggiornato: fra quelli gratic, egcs e` veramente buono,
gcc 2.8.2 non e` malaccio; nel campo commerciale, con IDE grafica ecc,
C++ Builder 3 Standard, per esempio, se puoi averlo a buon prezzo.
Qualche buon testo aggiornato (io suggerirei, nell'ordine):
    Lippmann e Lajoie, "C++ Primer", 3a edizione
    Stroustrup, "The C++ Programming Language", 3a edizione
    Myers, "Effective C++" 2a edizione e "More Effective C++"
Questi sono forse i migliori, ma ce ne sono anche altri molto validi:
    Eckel, "Thinking in C++"
    Stroustrup, "Design and Evolution of the C++ Language"
    Lippmann, "Inside the C++ Object Model"
    ecc ecc.
Alex
Newsgroup: it.comp.lang.c++
Titolo: Metodo getline

Sto facendo uno stupido interprete di comandi interattivo per
debuggare semplicemente un programma.
Il ciclo principale e'
while(1)
{
	cout<<">";	//write prompt
	cin.getline(command_string, max_command_length);
	... //dispatch and execute command
}
Il problema e' che getline() ritorna solo dopo il secondo newline. Il
motivo?
___
Fabio Forno
"Vi aspetta l'esplorazione delle ignote possibilita' 
dell'esistenza" - Q in "All Good Things..."
=============================================
scia...@inorbit.com

Hello, world!
You entered: "Hello, world!"
MLO@axcdf4 15 $ 
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

programma.  La prova:
 
Non va nel compilatore, per la precisione nell'implementazione delle
STL :((( (Uso il VC++ ver 5.0) Infatti se includo <iostream.h> va
tutto bene, se uso invece <iostream> si presenta il problema. Il
comportamento anomalo, con il semplice loop che hai fatto e' il
seguente: 
1° getline: ci vogliono due newline
2° : basta un getline, ma in buff viene messo il terminatore di
stringa '/0'
3° : sempre un solo getline, ma in buff c'e' l'input del getline
precedente
4° : come il 3° e cosi' tutti i successivi?
Qualcun altro ha avuto lo stesso problema con le STL del VC?


 tutto bene, se uso invece <iostream> si presenta il problema.
Allora basta che ti fai un file chiamato IOSTREAM e ci metti dentro
#include <iostream.h>
EMG

#include <iostream.h>
Grazie, ma e' scoperto che e' un bug riconosciuto e c'e' pure il fix:
It is indeed a bug in getline(). (And I'm glad to hear that it's fixed
in VC++ 6.) On line 160 of <string> and line 293 of <istream>, change
"snextc" to "sbumpc". These and other bug fixes for the Standard C++
Library included with VC++ 5 are doc'd at:
 
http://www.dinkumware.com/vc_fixes.html


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

Questo è il problema:
ho bisogno (ma non sono capace di!) lanciare un programma Dos sotto Windows.
Tutto questo deve accadere durante l'esecuzione di un altro mio programma
(scritto col C Builder).
Per farlo volevo usare la CreateProcess(..) ma ci sono milioni di parametri
a me incomprensibili.....
Non è che si potrebbe avere un esempio? -tipo CreateProcess("ciao",
"c:\\ciao.exe", NULL, NULL, eccecc); -
La "ciliegina sulla torta" è che devo poter catturare l'output (
ad.es
. di
"ciao.exe") per poterlo gestire nella mia applicazione.
Grazie a chiunque possa aiutarmi!
Steo



a me incomprensibili.....
Ti ho detto almeno mille miliardi di volte di non esagerare!!!
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

?????
Steo

Newsgroup: it.comp.lang.c++
Titolo: map

Dato il seguente codice:
#include <map>
#include <string>
#include <vector>
//#include <iostream>
using namespace std;
int main(){
        typedef string cognome;
        typedef vector<string> nome;
        typedef map<cognome,nome>::value_type valtype;
        map<cognome,nome> anagraf;
//      anagraf.insert(valtype("Abruzzo","Silvio"));
        return 0;
}
come posso fare per aggiungere alla mappa elementi del vettore.
Grazie.
-- 
Abruzzo SIlvio
goku_...@libero.it
silvi...@aruba.it
Linux Machine 219721
^_____^

 come posso fare per aggiungere alla mappa elementi del vettore.
  nome& vect = anagraf["Abruzzo"];
  vect.push_back("Abruzzo");
  vect.push_back("Silvio");
Ma non sono sicuro che intedessi questo. Nel tuo esempio valtype č un
   pair< const string, vector<string> >
Non capisco bene cosa stessi cercando di fare con quella insert() che hai
commentato.
Max

Max M. wrote:

Non mi č molto chiaro. Dunque, io voglio definire per ogni cognomi un 
vettori di nomi. Penso che l'assegnamento che hai fatto tu sia giusto, 
anche se non l'ho capito. Cmq, come faccio ora a estrarre un elemento?
Credo di non essere ancora in grado.
Grazie
-- 
Abruzzo SIlvio
studente, 16 anni


 Grazie
BENE! ^____^ CI SONO RIUSCITO!!!!!!!
#include <map>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int main(){
        typedef string cognome;
        typedef vector<string> nome;
        typedef map<cognome,nome>::value_type valtype;
        map<cognome,nome> anagraf;
        nome vect;
        vect.push_back("Silvio");
        vect.push_back("Antonina");
        anagraf["Abruzzo"] = vect;
        cout <<*(anagraf["Abruzzo"].begin()+1);
       return 0;
}
Ecco il nuovo codice.


 Credo di non essere ancora in grado.
Non capisco che cosa ti sfugga. Forse non padroneggi bene il concetto di
reference?
Max

 reference?
Si, finalmente c'è lo fatta, sono riuscito a capire come funzionano le 
mappe.
-- 
Abruzzo SIlvio

Newsgroup: it.comp.lang.c++
Titolo: Parentesi graffe su notebook

Spero di non essere OT(eventualmente ditemi dove postare il messaggio), ma
le graffe di fatto non vengono quasi mai usate fino a quando non si comincia
a programmare.
Il mio problema è che in un portatile con tastiera italiana(che dovrei
acquistare) tali tasti non esitono(vero?) e devono essere riprodotti con la
sequenza ALT-123 ALT-125 utilizzando il tastierino numerico.
Tuttavia nemmeno il tastierino esite, o meglio è "nascosto" tra i tasti,
quindi ad ogni semplice graffa dovrei ogni volta attivarlo, quindi digitare
la combinazione ed infine disattivarlo, per un totale di 6 tasti per un
carattere!!
Esiste la possibilità di modificare il layout di tastiera (DOS/Windows)in
modo tale da utilizzare combinazioni impostate dall'utente più semplici ed
immediate da digitare(come ALT-7 e ALT-0 di Linux KDE?)
Grazie
Marco

carattere!!
Se sei fortunato, dovrebbe supportare altGr+shift+[ e altGr+shift+] :-)
--
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=000PZ
0
if you want, I can send you the (free) C++ source code.

 sequenza ALT-123 ALT-125 utilizzando il tastierino numerico.
Se lo devi ancora acquistare, prendilo con la tastiera americana,
che contiene tutti i tasti necessari per programmare.
	Mauro


Il problema è che il notebook in questione è in offerta proprio perchè a
detta del commesso ha la tastiera italiana(ed è venduto in Svizzera)...

Newsgroup: it.comp.lang.c++
Titolo: overload e ereditarietà

ho una classe:
------------------------
class TScacchiera
{
 ...
public:
 void valore(int x, int y, int n);
 int valore(int x, int y);
};
------------------------
e una figlia in cui devo reimplementare la funzione membro void valore(int,
int, int):
------------------------
class TSolver : public TScacchiera
{
 void valore(int x, int y, int n);
};
------------------------
e la reimplemento:
------------------------
void TSolver:valore(int x, int y, int n)
{
 TScacchiera:valore(x,y,n);
 ...
}
------------------------
il problema è che nel main c'è una chiamata a TSolver::valore(int, int)
(quella non reimplementata) e mi dice che non è stata dichiarata e che il
candidato è TSolver(int, int, int). Quello che ho fatto è fare una
reimplementazione fuffa:
------------------------
class TSolver : public TScacchiera
{
 void valore(int x, int y, int n);
 int valore(int x, int y) {return TScacchiera::valore(x,y);}
};
------------------------
e tutto funziona, ma mi chiedo, perché è necessario? (gcc-4.1.0)

 e tutto funziona, ma mi chiedo, perché è necessario? (gcc-4.1.0)
Perche' la ricerca della funzione da chiamare parte dallo scope piu'
interno e si muove verso quello piu' esterno, ma si ferma nel primo
scope in cui c'e' almeno una funzione con il nome cercato. Qui cerca
una funzione con paramentri compatibili con quelli della chiamata da
risolvere e se non la trova si lamenta. Per ovviare al tuo problema
puoi inserire in TSolver l'istruzione
using TScacchiera::valore;
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Icone nella task bar?

Chi mi puō aiutare per pietā?
Io vorrei che all'avvio del mio programma non si vedesse la finestra (e
quello OK) e poi vorrei che apparisse nella task bar (vicino all'orologio)
apparisse un'icona che una volta clickata 2 volte mi apra la finestra del
programma. Eventualmente mi piacerebbe che premendo il tasto destro appaia
un popup menų.
Aiutatemi vi prego indicandomi qualche links oppure facendomi vedere dei
sources?
Grazie in anticipo.
--
Posted from 
pop01-acc.tin.it
 [212.216.176.64]
via Mailgate.ORG Server - 
http://www.mailgate.org

...
Ciao,
l'area in cui vuoi l'icona si chiama Tray area.
Puoi trovare qualcosa sulle msdn (la funzione che ti interessa si chiama
Shell_NotifyIcon).
Qualche valido esempio lo puoi trovare su
 
http://www.codeguru.com
Ciao

A parte codeguru....
http://www.dundas.com/vcpp/articles/systray.htm

Newsgroup: it.comp.lang.c++
Titolo: Informazioni HW sul PC

Salve ragazzi, qualcuno saprebbe dirmi se esistono dei metodi in C++, con i 
quali è possibile venire a conoscenza, del sistema operativo, della capacità 
della ram e del processore, del PC in uso? 

Il_Puntatore wrote:

Non in C++ standard, devi rifarti all'API della tua piattaforma 
specifica:
it.comp.programmare.win32
it.comp.os.linux.development
Newsgroup: it.comp.lang.c++
Titolo: DLL & Timer

Ambiente VisualC++.
Dovrei da una DLL andare periodicamente ad eseguire un'operazione di
interrogazione su un file. Mi servirebbe quindi un "timer" che al suo click
mi chiami una mia routine. Qualcuno può darmi una mano su come fare?
Il tempo di click che mi interessa é attorno ai 100mS
Grazie a tutti anticipataente!
marco.t...@iname.com


Puoi usare una SetTimer(...) con una callback ma il fatto di essere
chiamato o meno dipende dal dispatching dei messaggi da parte del
programma principale.
Una alternativa che offre piu' garanzie e' usare un thread separato;
in questo caso invece di un timer usi la chiamata Sleep(DWORD ms)
in un loop.
HTH
Andrea


Newsgroup: it.comp.lang.c++
Titolo: HELP, per piacere!

Ciao a tutti e Auguri :-)
La mia intenzione era questa. Alla pressione del bottone, doveva apparire al
suo fianco un popup menu. Premetto che non è possibile creare il menu
direttamente dalle risorse, perché non posso scrivere le stringhe di default
(preferisco "farle variare" usando una String table, in modo da poter
cambiare lingua al programma in qualsiasi momento).
La domanda è: perché il seguente codice disegna un menu:
* con il giusto numero di items (fin qui OK)
* con le stringhe degli items nulle (in pratica, è largo circa 4 pixel, cioè
solo il bordo)
* nel punto 0,0 dello schermo, e non di fianco al bottone?
*** BEGIN CODICE ***
void CRadiomaticDlg::OnBtndiskmanager()
{
 CString caption;
 CMenu mnu_Diskmanager;
 RECT info;
 mnu_Diskmanager.LoadMenu(IDM_DISKMANAGER);
 // adding items to menu
 caption.LoadString(IDS_MENU_CLOSEMENU);
mnu_Diskmanager.ModifyMenu(IDM_DISKMANAGER_ITMCLOSEMENU,MF_STRING,NULL,capti
on);
 // displaying menu
 GetDlgItem(IDC_BTNDISKMANAGER)->GetClientRect(&info);
 int res=MesS(info.left,ID_MSG_OK,NULL,"ciao");
mnu_Diskmanager.TrackPopupMenu(TPM_LEFTALIGN,info.left,info.top,GetActiveWin
dow(),NULL);
 mnu_Diskmanager.DestroyMenu();
}
*** END CODICE ***
Grazie a tutti per la risposta - saluti e Auguri :-)
Marco Zanon (
m.z...@usa.net
)
http://www.geocities.com/SiliconValley/Peaks/6455
(BUY CDS AT THE LOWEST PRICES through my site!!!
Zamorano fan page, free MIDI mailing list, Music db...)

mnu_Diskmanager.TrackPopupMenu(TPM_LEFTALIGN,info.left,info.top,GetActiveWi
n
left e top del rect di una GetClientRect sono SEMPRE 0,0,
perche` sono in coordinate-cliente della finestra stessa;
TrackPopupMenu invece richiede coordinate di schermo.
Puoi mappare fra i due sistemi di coordinate col metodo
ClientToScreen di qualsiasi CWnd (ad es. la stessa che
ottieni dalla GetDlgItem): passi il puntatore al RECT, che
il metodo stesso modifica (per completezza: c'e` anche
un metodo per la mappa inversa, ScreenToClient [ma
qui non ti serve]).  Non ho esaminato l'altro problema,
vediamo intanto se si risolve questo che sembra semplice.
Alex
Newsgroup: it.comp.lang.c++
Titolo: Creare runtime un bottone in c++

abbiamo urgenza di creare una serie di bottoni in runtime con il
builderc++5
grazie
***************************************
messaggio inviato tramite HostSearch.it
---------------------------------------
---> 
http://www.hostsearch.it/newsgroup
***************************************

 grazie
Siete OT su questo NG. Provate su it.comp.programmare.win32 o sulla
documentazione del builder :P

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

Come esercizio devo creare 2 funzioni: una che concatena 2 stringhe ed una
che copya una stringa sull'altra. (Lo so che esistono già funzioni del
genere in string.h ma è un esercizio). Queste funzioni devono tornare una
stringa ho provato a creare questo programma:
#include <iostream.h>
#include <string.h>
char *mia_strcpy(char *s1, const char *s2);
char *mia_strcat(char *s1, const char *s2);
int main(){
 char s1[80], s2[40];
 cout << "Inserisci prima stringa" << endl;
 cin.getline(s1, 80);
 cout << "Inserisci seconda stringa" << endl;
 cin.getline(s2, 80);
 cout << "Ecco le stringhe concatenate: " << mia_strcat(s1, s2) << endl;
 cout << "Ecco la stringa 2 copiata sulla stringa 1: " << mia_strcpy(s1, s2)
<< endl;
 return 0;
}
char *mia_strcat(char *s1, const char *s2){
    char s3[90];
 while (*s1!='\0')
  ++s1;
 for (; *s1=*s2; s1++, s2++);
  return *s1;
}
char *mia_strcpy(char *s1, const char *s2){
 for (; (*s1=*s2) != '\0'; s1++, s2++);
 return *s1;
}
Ma mi vengono dati questi errori:
Compiling...
cpystring.cpp
D:\Cpp\copystring\cpystring.cpp(35) : warning C4172: returning address of
local variable or temporary
D:\Cpp\copystring\cpystring.cpp(42) : error C2440: 'return' : cannot convert
from 'char' to 'char *'
        Conversion from integral type to pointer type requires
reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
cpystring.obj - 1 error(s), 1 warning(s)
Come posso risolvere?
Grazie

 wrote in
news:nQQob.78320$
e5.29...@news1.tin.it
: 

Leggendo quello che ti dice il compilatore....
invece che ritornare *s1 devi ritornare s1 (senza *)

 ha scritto nel messaggio
news:Xns9426BA956E19Dgi...@213.140.2.16...

ho provato ma non funziona

 Grazie
Prego,
Nids
Newsgroup: it.comp.lang.c++
Titolo: Passaggio di Array per riferimento

Salve, ho un problema con gli array:
Come mai questa funzione non modifica il valore della variabile
globale 'dati' ?
La variabile č cosě definita:
char	dati[100];
Poi viene chiamata la funzione:
taglia_dati ( dati );
Questa č la funzione:
void taglia_dati(char mac[])
{
	char seps[]   = " ,\t\n";
	char *token;
	int i = 0;
	char *valore	=	NULL;
	token = strtok( macc, seps );
	while ( i < 2 )
	{
		valore	=	token;
		token = strtok( NULL, seps );
		i++;
	}
	mac	=	valore;
};
Io vorrei che 'dati' all'uscita della funzione abbia lo stesso valore,
mentre in questo modo dai rimane com'č, mentre mac prende il valore di
'valore'.
Grazie in anticipo.
Giacomo

         mac     =       valore;
Il problema č qui. Il puntatore mac nel quale decade l'array passato lo
fai semplicemente puntare da un'altra parte e non vai a modificare
quindi l'array globale che rimane inalterato. Devi invece copiare i dati
da valore a mac. Comunque anche il resto della funzione č tutta
sbagliata. Riguardatela con attenzione.
EMG

EMG
Giacomo


Ad esempio:
int valore[ 10 ];
int mac[ 10 ];
per copiare non puoi fare
valore = mac;
ma una cosa come
for ( int i = 0; i < 10; i++ )
    valore[ i ] = mac[ i ];
EMG

EMG
Giacomo

 Io ho fatto questa funzione:
Che comunque, a parte il fatto che le costanti per il tipo bool sono
scritte in minuscolo (true e false), funziona ma tronca al primo spazio.
EMG
Newsgroup: it.comp.lang.c++
Titolo: Liste

Dato:
vector<classe> vettore;
std::vector<classe>::iterator i;
con:
i-vettore.begin;
posso ottenere l'indice dell'elemtno i-esimo all'interno del vettore. E'
possibile fare la stessa cosa anche per le liste della STL (cioč ottenere la
posizione dell'elemento all'interno della lista rispetto all'elemento
iniziale)?
Grazie e ciao
Antonio

 all'elemento iniziale)?
In generale, puoi sempre scrivere
  std::distance( i1, i2 );
ma soltanto nel caso di iteratori random-access (come quelli di
std::vector<>) questa funzione ha complessità costante (ed esegue
semplicemente i2 - i1). Negli altri casi, esegue ++i1 fino a quando i1==i2
e restituisce il numero di incrementi eseguiti.
Max

 iniziale)?
Eccoti un esempio funzionante. Tieni presente che list non implementa
l'accesso diretto all'elemento ennesimo e quindi si deve per forza
avanzare di un passo alla volta, con efficienza evidentemente minore.
#include <iostream>
#include <vector>
#include <list>
int main()
{
    int a[] = { 1, 2, 3, 4, 5 };
    std::vector < int > v( a, a + sizeof( a ) / sizeof( a[ 0 ] ) );
    for ( std::vector < int >::iterator i = v.begin(); i != v.end(); ++i
)
        std::cout << *i << '\n';
    std::vector < int >::iterator i = v.begin();
    std::cout << "Il terzo elemento e': " << *( i + 2 ) << "\n\n";
    std::list < int > l( a, a + sizeof( a ) / sizeof( a[ 0 ] ) );
    for ( std::list < int >::iterator i = l.begin(); i != l.end(); ++i )
        std::cout << *i << '\n';
    std::list < int >::iterator j = l.begin();
    for ( int i = 0; i < 2; ++i ) ++j;
    std::cout << "Il terzo elemento e': " << *j << '\n';
    std::cout << std::endl;
    return 0;
}
Ai più esperti chiedo: come mai il Borland C++ 5.5.1 mi dà i seguenti
warnings? Sbaglio qualcosa nel codice?
Warning W8008 include\vector.h 213: Condition is always false in
function __init
_aux<int *>(int *,int *,_RW_is_not_integer)
Warning W8066 include\vector.h 214: Unreachable code in function
__init_aux<int
*>(int *,int *,_RW_is_not_integer)
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: Esecuzione automatica e simili.

Salve a tutti.
Mi è stato chiesto di realizzare un programmino per W2000 Server che esegua
il reboot del sistema a determinate ore della giornata. (non chiedetemi
perchè)
Fin qui nessun problema ma il fatto è che lo deve fare anche se non c'è
nessun utente loggato nel sistema e c'è quindi la solita finestrella che
dice di premere CTRL+ATL+CANC per eseguire il Login.
Un programma, anche se in esecuzione automatica, a quanto ne so viene
caricato durante il Login e quindi se nessun utente sta utilizzando il Pc,
l'applicazione non è in esecuzione ed il reboot non avviene.
Mi potreste dare qualche consiglio.
C'è modo di indicare che un programma debba essere caricato automaticamente
a prescindere dal fatto che ci sia un utente ?

a prescindere dal fatto che ci sia un utente ?
Il tuo problema si risolve scrivendo un servizio.
Ti imposto il follow-up su it.comp.programmare.win32, qui
dentro si discute degli aspetti standard del C++.
-- 
The Follet

Newsgroup: it.comp.lang.c++
Titolo: " lista di adiacenza"

Mi potete dire dove trovare informazioni su questo argomento ? (quello del
topic)
p.s
libri in ita sarebbe il top ;)
grazie ciao

Gooooogle? Adjacency list? Linked list, graph representation?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


MM non avevo fatto caso al nome in inglese .. "Adjacency list model"
Spiego velocemente come sono arrivato fino a questa domanda.
In pratica sto studiando gli algoritmi di Celko per gestire delle gerarchie
stoavo googlando a più nn posso
e mi sono inbattuato in questo:
http://www.dotnethell.it/newsgroups/ReadMessage.aspx?MID=47x27068
Quindi cercavo informazioni perchè mi era parsa una buona soluzione.

Newsgroup: it.comp.lang.c++
Titolo: Problema con libreria fmod

Salve,
ho un problema con le librerie FMOD multimediali. In dettaglio:
1 - nel mio sorgente C ho messo l'include di FMOD.H;
il sorgente è:
#include <fmod.h>
main {
FSOUND_Init(44100,32,0);
}
la compilazione è ok
2 - ho linkato l'oggetto con la libreria FMODLCC.LIB;
tutto OK
3 - nella cartella di lavoro ho copiato il file FMOD.DLL;
4 - ma al momento dell'esecuzione mi da il seguente messaggio di errore:
ERROR: PIPPO.EXE E' COLLEGATO ALL'ESPORTAZIONE MANCANTE FMOD.DLL: 
FSOUND_INIT.
Il problema esiste pure con qualsiasi altra funzione.
Grazie anticipatamente a chi mi vorrà aiutare.
Andrea 

Intanto qui si parla di C++ e non di C. In secondo luogo trattiamo di
C++ standard e non di librerie specifiche. Ti prego di cercare un
newsgroup piu' vicino all'argomento del tuo messaggio.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: g++: quale versione per Solaris?

Ciao a tutti,
ho una domanda da fare: devo fare il porting su Solaris di un programma
scritto in C, multiprocesso, di rete (comunica via socket con altri
programmi), e con accesso a db Oracle (tramite ProC/C++).
Ho sentito dire che g++ versione >= 3 ha problemi tali per cui e'
consigliabile usare la versione 2.95.3; qualcuno di voi ha esperienze da
riportare in proposito, siano esse positive o negative?
Grazie in anticipo,
Luigi Rubino.

 ho una domanda da fare: ...
Scusate, credo di aver sbagliato ng, mi sposto su it.comp.lang.c.
Un saluto a tutti,
Luigi.

luigi wrote:

Credo che sia meglio gnu.g++.help
--
Andrea Spadaccini - Catania (Italy)
Mail: _
lupin85...@libero.it
ICQ#: 91528290
 - It is not important what you believe, only that you believe -
Newsgroup: it.comp.lang.c++
Titolo: Ancora sulle dll...

Dai primi tentativi che ho fatto per utilizzare le dll sono emersi i
seguenti dubbi/problemi:
1) Dato il seguente codice:
/////////file calldll.cpp
#include <windows.h>
#include <iostream.h>
void main(void)
{	
	FARPROC pFunc;
	//chiamo la dll:
	HINSTANCE istanza=LoadLibrary("mydll.dll");
	if (pFunc= GetProcAddress(istanza, "funzione")) pFunc();	
	else cout<<"Problema nel trovare la funzione!"<<GetLastError()<<endl;
	FreeLibrary(istanza);
}
//////////file mydll.cpp
#include <iostream.h>
#include <windows.h>
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason,LPVOID
lpReserved)
{
	//esegue solo al caricamento:
	if (dwReason==DLL_PROCESS_ATTACH) cout<<"Iinizializzazione..."<<endl;
	return TRUE;
}
_declspec(dllexport) void funzione(void)
{
	cout<<"Funzione..."<<endl;
}
non funziona. Nel senso che riesce a caricare dinamicamente la dll ma
non trova la funzione funzione().
Probabilmente mi sfugge qualcosa di essenziale...
2) Da quanto ho capito ci sono due modi per utilizzare le dll: il modo
statico e dinamico. Quello dinamico dovrebbe essere più o meno quello
che ho realizzato io sopra (a proposito: non ci sarebbe una soluzione
più elegante che non utilizzi puntatori a funzioni o schifezze
simili?) poi dovrebbe esserci il modo statico che richiede il
linkaggio con un file .lib che contiene le definizioni. La domanda è:
che vantaggio c'è a usare una dll se poi è usata staticamente? Tanto
valeva usare una libreria statica e buonanotte!
3) Sembra che in termini di funzioni e risorse posso inserire ciò che
voglio in una dll, ma da quanto ho capito non posso inserire classi
c++, esatto?
GRAZIE.

GRAZIE.
Prego.
Mat

Purtoppo anche dopo aver inserito:
_declspec(dllimport) void funzione(void);
il mio programma continua a non trovare la funzione!

Purtroppo anche dopo aver inserito 
__declspec(dllimport) void funzione(void);
Il programma continua a non trovare la funzione!


l' errore é in questa riga 
 if (pFunc= GetProcAddress(istanza, "funzione")) pFunc(); 
ed ha a che fare col fatto che tu chiami una funzione "sbagliata";
"funzione" é il nome C e NON quello CPP
Ciao
Mat

>/////////file myldll.cpp
Se tu cambi il nome ai file in file.C non dovresti avere problemi;
Ciao
Mat

c++, esatto?
Sí, puoi -- stai solo attento a una cosa: se la tua EXE e tutte le
DLL usano la stessa versione (DLL a sua volta) delle runtime C,
no problem, altrimenti (se linki i runtime del C separatamente a
ogni modulo, non usando la DLL dei runtime C) considera che
ciascun modulo ha il suo "mondo" separato, quindi NON mischiare
allocazione/liberazione di memoria fra moduli diversi, input/output
sullo stesso stream da moduli diversi, e cosí via; queste cose
possono facilmente succedere per sbaglio se le classi che
esporti (sempre con __declspec(export)) dalle DLL hanno
alcuni metodi che sono inline e altri no (meglio evitarlo!) o se
erediti una classe A, definita nel modulo AM, da una classe B
definita nel modulo BM (soprattutto se ci sono alcuni metodi
virtuali in override in A).
Alex
Newsgroup: it.comp.lang.c++
Titolo: Non riesco ad overloaddare l'operatore >>

Perche con questo pezzo di codice aggiuntivo alla mia classe Sito
inline istream& operator>> ( istream& a, Sito& h )
{	cout << "\ncodice? "; a >> h.codice; a.get();
	if ( h.codice >= 0 )
	{	cout << "nome? "; a >> 
h.name
;
		cout << "corrente artistica? "; a >> h.correnteArtistica;
		cout << "superficie? "; a >> h.superficie;
	}
	else
		cout << "codice erroneo";
	return a;
}
il compilatore (MVisualC++ 6.0)
mi da questo mess di errore
c:\programmi\microsoft visual studio\myprojects\progettino\sito.h(60) : error
C2084: function 'class istream &__cdecl operator >>(class istream &,class Sito
&)' already has a body
Help me
-- 
Posted from 
ppp-62-10-170-60.dialup.tiscali.it
 [62.10.170.60] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

mi rispondo da solo 
CHE SCEMO avevo messo questo codice dopo 
#ifndef
#define
#endif
SCUSATE ANCORA RAGAZZI


mi rispondo da solo 
CHE SCEMO avevo messo questo codice dopo 
#ifndef
#define
#endif
SCUSATE ANCORA RAGAZZI...


 }
devi definirla come friend:
friend inline istream& operator>> ( istream& a, Sito& h )
{
....
}