mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Da novellino C e C++

Salve. Chiedo scusa per il crosspost, ma seguo solo da qualche giorno
entrambi i NG e non ho le idee chiare su quale dei due sia piu'
pertinente per i miei problemi.
Sono un biologo e finora scritto dei programmi personali, alcuni dei
quali anche complessi, con Clipper 5.2. Ho sempre ritenuto quel
programma ottimo, soprattutto per la gestione dei database. Vorrei
imparare a programmare il C, di cui ho appreso i rudimenti attraverso
lo studio degli Elementi di programmazione di H.Schildt, McGraw-Hill,
1991 (quello di cui su it.comp.lang.c si e' detto peste e corna in
questi giorni) e un corso per il C della Jackson uscito anni fa nelle
edicole. Sempre attraverso le edicole qualche anno fa avevo anche
acquistato anche un corso di informatica della De Agostini al quale
erano associati anche alcuni programmi completi di licenza d'uso. Con
sorpresa ho visto che il "Turbo C" della Borland, associato a quel
corso, e' in realta' un "Turbo C++" versione 1.01.
Per capirci qualcosa di piu' ho acquistato il testo "Da C a C++" di
Greg Perry, Mondadori, 1995, che ho cominciato da poco a leggere; ma
da tutte queste letture affrettate e forse maldigerite sono nati
alcuni dubbi. Non ho capito, ad es., se la versione di C++ in mio
possesso sia o meno conforme allo standard AT&T. Non ho capito se
questo mio TC++ possa creare dei problemi per programma scritti in
puro C (chiedo scusa se l'espressione non dovesse essere corretta).
Soprattutto non so cosa mi convenga fare: iniziare lo studio del C++
saltando la tappa intermedia di perfezionamento del C, oppure
approfondire la conoscenza del C (in questo momento molto elementare e
carente) prima di passare al C++? Mi conviene comprare una versione
recente di questi linguaggi, oppure posso tranquillamente utilizzare
quella che ho (fra l'altro le mie attuali disponibilita' economiche
non sono eccessive)?
Grazie
Alex
Sent via Deja.com 
http://www.deja.com/
Before you buy.

non sono eccessive)?
Ci sono diversi compilatori free molto aggiornati... vedi sopra.
Paolo
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

 Clipper e` ormai considerato morto dalla stessa casa produttrice (la
Io suggerirei anche Visual FoxPro.
Lo uso da anni (da quando è uscito windows 3.1) per la programmazione su
basi di dati sotto windows e mi sono trovato benissimo. Tra l'altro per chi
viene da linguaggi xbase non è molto difficile, e dalla versione 3.0
esistono anche gli oggetti, anche se molto più "à la VB". L'unica cosa di
cui si sente pesantemente la mancanza sono i code-block :-)
Ciao
--
Alessandro Monti
Newsgroup: it.comp.lang.c++
Titolo: Sondaggio del giorno: chi usa NULL?

Per un momento, visto che l'argomento 0 vs NULL e' tornato alla ribalta e ha
fatto nuove vittime...
Senza rispondere alle risposte degli altri, e senza altri commenti, facciamo
un censimento (per puri fini statistici e nulla piu'):
Chi di voi usa 0 per indicare il puntatore nullo, chi usa NULL e chi usa
indifferentemente entrambi?
Io sono per il NULL.

Io sono per il NULL.
Ci fa piacere, basta con queste cazzate, per cortesia, torniamo a
parlare di C++.
-- 
Andrea Laforgia
#exclude <windows.h>

Newsgroup: it.comp.lang.c++
Titolo: traduzione da c++ a pascal....

Ciao a tutti!
Volevo chiedere se qlcn potrebbe gentilmente tradurmi queste righe di
porgramma da c++ a pascal. Grazie 1000
/* Caricamento della Matrice che conterrà i valori estratti */
  for(i=0;i<10;i++)
  {
    for(k=0;k<5;k++)
    {
      do
      {
        presente=false;
        val=rand()%89+1;
        for(j=0;j<5;j++)
        {
          if(val==lotto[i][j])
          presente=true;
        }
      }
      while(presente);
      lotto[i][k]=val;
    }
  }
/* Stampa dell'estrazione */
  cout<<"Per vedere l'estrazione del giorno premere un tasto\n";
  system("PAUSE");
  system("CLS");
  cout<<"L'Estrazione del lotto del giorno 10/05/06 e` la seguente\n";
  for(i=0;i<10;i++)
  {
    cout<<"\n";
    cout<<ruote[i]<<"\n";
    for(j=0;j<5;j++)
    {
      cout<<lotto[i][j]<<"  ";
    }
  }

 porgramma da c++ a pascal. Grazie 1000
Se dovessi tradurre dal francese al tedesco chiederei a un tedesco, non 
a un francese.
E.

 a un francese.
E non è neppure vero in assoluto; perchè anche andando su un gruppo di
Pascal, non è detto che troveresti chi conosce il C++ di default.
Insomma, l'OP è semplicemente OT :)
-- 
Salvatore

 porgramma da c++ a pascal.
http://it.wikibooks.org/wiki/Pascal
ciao
Newsgroup: it.comp.lang.c++
Titolo: pipe e redirezione di stdout in Windows (aiuto)

Voglio lanciare (spawn) un eseguibile (no GUI, output su stdout) da un
progamma C per win (con classica GUI) e
catturare il suo output. Ho provato con il codice scritto sotto (preso
dall'help di MS Visual C++ 5.0) ma non funziona.
Si tratta di una pipe, ma quando copio il WRITE_HANDLE su stdout mi da
errore (errno = EBADF, "Bad file number").
Perche' ?
Ma soprattutto come posso fare?
Grazie a tutti. (ma piu' che altro a chi mi risponde :-)
Ecco il codice che ho provato:
   const int  READ_HANDLE  = 0;
   const int  WRITE_HANDLE = 1;
   const int  OUT_BUFF_SIZE = 512;
   char szBuffer[OUT_BUFF_SIZE];
   int nExitCode = STILL_ACTIVE;
   HANDLE hProcess;
   int hStdOut;
   int hStdOutPipe[2];
   // Create the pipe
   if(_pipe(hStdOutPipe, 512, O_BINARY | O_NOINHERIT) == -1)
       exit(1);
   // Duplicate stdout handle (next line will close original)
   hStdOut = dup(_fileno(stdout));
   // Duplicate write end of pipe to stdout handle
   if(dup2(hStdOutPipe[WRITE_HANDLE], fileno(stdout)) != 0)
       exit(2);  // E' qui che mi si ferma...
   // Close original write end of pipe
   close(hStdOutPipe[WRITE_HANDLE]);
   // Spawn process
    hProcess = (HANDLE) spawnlp(P_NOWAIT, "miofilename", "miofilename",
NULL );
   // Duplicate copy of original stdout back into stdout
   if(dup2(hStdOut, _fileno(stdout)) != 0)
        exit(3);
   // Close duplicate copy of original stdout
   close(hStdOut);
   if(hProcess) {
      int nOutRead;
      while (nExitCode == STILL_ACTIVE) {
         nOutRead = read(hStdOutPipe[READ_HANDLE], szBuffer, OUT_BUFF_SIZE);
         if(nOutRead)
            fwrite(szBuffer, 1, nOutRead, stdout);  // cosi' naturalmente lo
rimetto sullo schermo ma e' per prova
         if(!GetExitCodeProcess(hProcess,(unsigned long*)&nExitCode))
            exit(4);
      } // while
   } // if

catturare il suo output. Ho provato con il codice scritto sotto (preso
Sospetto che il problema possa essere che lo stdout del "programma
per win con classica GUI" *non* e` aperto.  Potresti provare a lavorare
piu` a livello di API, con CreateProcess per generare l'altro processo,
che ti permette di controllarne le handle standard (e anche, a differenza
di altri schemi di "spawn", di farlo partire con la console *nascosta*,
almeno sui sistemi che supportano correttamente questo, come NT).
Alex

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

Dove scaricare?

 Dove scaricare?
Vuoi scaricarti il contenuto di tre CD???
EMG
Newsgroup: it.comp.lang.c++
Titolo: Namespace, aiuto.

Sapete dirmi dov'č l'errore?
/* pippo.h */
namespace pippo {
 void chiama (){
  cout << "Ciao dal namespace Pippo" << endl;
 };
}
/* main.cpp */
#include <iostream>;
#include "pippo.h";
using namespace pippo;
int main (int argc, char* argv[]) {
 pippo::chiama;
 return 0;
}
Non ho nessun errore di compilazione (solo 2 warning causati dalla presenza
di argc e argv che non sono usati), ma quando faccio partile l'eseguibile
non ho nessun output, cioč non appare "Ciao dal namespace Pippo".
Grazie
--
Posted from [195.223.215.6] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 }
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

Ridondante (nessun peccato :-).
Quindi cosa devo fare per eliminare la ridondanza?


Newsgroup: it.comp.lang.c++
Titolo: #define and const

1) #define SOMETHING 100;
2) const int SOMETHING = 100;
Does a c++ compiler generate a bigger executable from code using
coding style 2)?
BT
 
-- 
Sent by guangbutun from hotmail subpart  from  com
This is a spam protected message. Please answer with reference header.
Posted via 
http://www.usenet-replayer.com/cgi/content/new

 
If the constant's address is not taken, the code will probabily be the same...
(in C++). Depend on your compiler, but generaly the code is the same.
Remember this is true only for plain data types, not for classes or struct...
and style 2 is type safe (that is the most important advantage).
Paolo
--
Paolo Marotta
Home: 
http://web.tiscalinet.it/paolo_marotta
Master's Level in C++ Certified by Brainbench
http://www.brainbench.com/transcript.jsp?pid=2440649

 and style 2 is type safe (that is the most important advantage).
use 2, the binary will be about the same size, and consts have many more
advantages.  If you insist on using the first version, at least do
yourself the favor of:
#define SOMETHING ((int)100)
also, you shouldn't put semicolons on the end of your defines, since
they'll be included

 #define SOMETHING ((int)100)
<pedantic>
    The cast to int is redundant, since (100) is already of type int.
</pedantic>
    However, I do agree that using 'const' in favor of '#define" is
generally a good thing:
    - Any decent compiler will generate the same code as long as the
address of the const is never taken.
    - You get the benefits of C++'s strong type system
    - You can place them inside of namespaces
    I'm ssure that there are many others that aren't coming to mind
right now.
-- 
Clark S. Cox III
clar...@yahoo.com
http://www.whereismyhead.com/clark/



Why?  100 is an int -- the cast does nothing.
-- 
Michael M Rubenstein

 #define SOMETHING ((int)100)
That seems (IMO) useless (and you are also using an old C-Style cast)...


That seems (IMO) useless (and you are also using an old C-Style cast)...
It doesn't *seem* useless, it *is* useless. The constant 100 already
has type int. A programmer should have a clue what types constants
are in the language he or she is using.
Newsgroup: it.comp.lang.c++
Titolo: getline(istr,str);

Qualcuno mi sa dire cosa c'è di sbagliato in questo codice:
while(ch != 'N' && ch != 'n')
    {
        cout<<"\nInserisci nome: ";
        getline(cin,nome);
        cout<<"\nInserisci numero: ";
        cin>>numero;
        rubrica[nome]+=numero;    // rubrica é una map<string,int>
    inizio:
        cout<<"\nVuoi inserire ancora? [s/n]: ";
        cin>>ch;
        switch(ch)
        {
            case 'S': case 's' :
                    break;
            case 'N': case 'n' :
                    return;
            default :
                    cerr<<"\n\t\t\tTasto non valido! Digitare s/n..."<<endl;
                    goto inizio;
        }
    }
}
output:
void print(map<string,int>& rubrica)
{
    clrscr();
    cout<<"\n\n";
    typedef map<string,int>::iterator MI;
    for(MI m=rubrica.begin(); m !=rubrica.end(); ++m)
    {
        cout<<m->first<<"\t"<<m->second<<endl;
    }
}
a parte i commenti sull'eventuale scarsa eleganza (è solo un'esempio), il
problema in esecuzione é questo:
Inserisci nome:   XXXX YYYY  'Enter'
Inserisci numero: 1234567    'Enter'
Vuoi inserire ancora? s/n  // se l'opzione è 's' succede questo....
Inserisci nome:
Inserisci numero:_        // si salta direttamente al secondo inserimento
                                   // come se nello stream fosse rimasto un
carattere '\n'.
A qualcuno risulta niente del genere?
Grazie per l'aiuto
Red

  cin>>ch;
--
Gerolamo

 svuota quel che c'č in cin suppongo un invio che rimane


Newsgroup: it.comp.lang.c++
Titolo: niente opengl sulla nuova versione di windows

leggete qui:
http://www.petitionspot.com/petitions/openglvista

 
Lo fanno apposta, e una petizione non li ferma di sicuro. Comunque e' 
meglio che niente...
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org
Newsgroup: it.comp.lang.c++
Titolo: Contenitori

Ciao a tutti!
Ho bisogno di creare due classi che qui chiamerò A e B;
Ciascuna avrà come attibuto un contenitore della libreria standard del 
C++ che conterrà oggetti di tipo X.
Voglio sfruttare per gli oggetti di classe X tutte le caratteristiche 
della programmazione ad oggetti: ereditarietà, polimorfismo ecc...
Inoltre un'istanza di X dovrà poter essere contenuta 
"contemporaneamente" sia nel contenitore di un oggetto della classe A 
che di un oggetto della classe B (oppure in due oggetti di classe A).
Ora mi domando come devo definire gli attributi contenitori delle classi 
A e B.
Devo scrivere:
vector<X> contenitore;
oppure
vector<X *> contenitore;
?
Quale delle due dichiarazioni è giusta nella mia situazione?
Grazie.
Ciao!

 vector<X *> contenitore;
Ma xché in questo ng nessuno si degna di darsi, almeno per un
mesetto, una letta a qualche libro?!
Qualche volta (sempre?!) cascano le braccia!
Almeno un'occhiata ai capitoli 14 e 15 di Thinking in C++...
Mica leggere Alexandrescu o Sutter, ma almeno Eckel...
Ohibò...
Scusate per la polemica!
Ciao.


Ciao,
Purtroppo stai solo facendo una gran confusione. Ti consiglio di studiare il
C++ su qualche buon testo (o con qualche insegnante) che ti aiuti a fare
chiarezza di tutti quei concetti che hai tirato in ballo senza nessuna
apparente comprensione degli stessi.
"...ciascuna (delle classi A e B) avrà come attributo un contenitore..."
oppure "...definire gli attributi contenitori delle classi..." sono frasi
che non significano niente.
"vector<X> contenitore;" istanzia un contenitore di nome "contenitore", del
tipo "vector", che contiene (copie di) oggetti della classe "X".
"vector<X*> contenitore;" istanzia un contenitore di nome "contenitore", del
tipo "vector", che contiene puntatori ad oggetti della classe "X".
Cosa abbia tutto questo a che fare con ereditarietà, polimorfismo ecc. non è
per niente spiegato nella tua domanda.
Studia come si deve.
Saluti,
fabiomdf
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/
Newsgroup: it.comp.lang.c++
Titolo: Turbo C++, Visual C++ o Dev-C++ per imaparare e poi spero continuare?

Come fa oggetto chiedo consiglio.
Ciao

Come da oggetto chiedo consiglio.
Ciao

> Come da oggetto chiedo consiglio.
Come l'abito non fa il monaco, l'ide non fa il programmatore.
Per scrivere semplici programmi di prova (e quindi iniziare), anche g++ da 
riga ti comando va bene.
Poi uno vale l'altro, vedi con quale ti trovi meglio. Ma tieni bene a mente 
che lo standard e' uno, ma le implementazioni hanno spesso (sempre?) dei 
difetti e delle estensioni.
Per far riferimento ai tuoi esempi:
Dev-C++: e' un front-end essenziale per mingw/g++, nel caso non sia 
abbastanza completo puoi provare eclipse con CDT che e' un po' piu' 
completo.
Di visual studio ti consiglio la 2005, la piu' recente e aggiornata dal 
punto di vista dello standard (attenzione alle estensioni pero'!). Ne esiste 
anche una versione free (Express Edition).
Di Turbo C++ ho sentito che sta uscendo (o e' uscita?) una nuova versione 
(!!!). Non ho avuto ancora occasione di provarla, quindi non so aiutarti... 
di certo l'ide della 1.0 era eccezionale, ma non mi sentirei di consigliare 
un compilatore del 1990 nel 2006!
--*PaN!*, che ha l'obbligo di usare TC++ 1.01 settimanalmente...

 un compilatore del 1990 nel 2006!
Intendevo quello nuovo: 
www.turboexplorer.com
Ciao e grazie

 > anche una versione free (Express Edition).Si intendo quello.
Attenzione con Visual c++ express, spesso e volentieri viene usato
codice nel dialetto microsoft
se vuoi imparare il c++ (quindi programmini console di pochi file)  è
molto meglio il devc++ (anche come velocità di compilazione esecuzione
e  risorse richieste, occupa una 20 di mega al massimo)
usando l'express è molto facile ritrovarsi davanti codice del genere
/* esempio console application cosi come gerata da vc++.net */
using namespace System;
int main(array<System::String ^> ^args)
{
    Console::WriteLine(L"Hello World");
}
e in + tipi generics, assembly, stronglytyped resource ecc..., è c++
questo? NO! al limite è .net
se invece ti interessa programmare anche un pò di interfacce grafiche,
va bene anche il vc++.net, ma a quel punto  perchè non usare c#, o
vb.net
? hai le stesse porcherie, quanto meno usano una sintassi +
pulita,

Io attualmente sviluppo in Visual studio express 2005 ma te lo 
sconsiglio!
E' fatto benissimo, ma come qualcuno diceva, utilizza un dialetto c++ 
proprietario MS. Il mio consiglio cade su dev-cpp (che tuttora uso) o 
su code-block!
Entrambi sono muniti di gcc 3.4 ciò ti permette di compilare sia sotto 
win che linux. 
In più è abbastanza più di bocca buona rispetto al VC che spesso ti 
blocca la compilazione per casting non espressi.
Ciao

 blocca la compilazione per casting non espressi.
Se l'OP cerca uno strumento per scopi didattici questo potrebbe
risultare un difetto piuttosto che un pregio.
Ciao,
Nicola

 risultare un difetto piuttosto che un pregio.
Inoltre, se l'"essere di bocca buona rispetto ai casting non espressi" 
dovesse essere un pregio, potremmo dire che in generale C e' meglio di 
C++...
--
Marco
Newsgroup: it.comp.lang.c++
Titolo: PROBLEMA con API FindFirstFile e FindNextFile!!!

Salve,
ho fatto un algoritmo che ricerca in tutto l'hd ricorsivamente usando le API
FindFirstFile e FindNextFile ma queste API non leggono le directory che sono
read-only (come c:\Programmi, ecc..) e, di conseguenza, l'algoritmo salta
tutti i file e le directory che sono contenute in directory read-only!
Ho cercato nell'help ma non ho trovato nessuna opzione da settare...come
posso fare?
Grazie
Demetrio Filocamo (
dfil...@tin.it
)

tutti i file e le directory che sono contenute in directory read-only!
Io le uso senza problemi e mi leggono tutti i files; probabilmente hai
sbagliato tipo di ricerca, o quando controlli se si tratta di una
directory controlli solo se dwFileAttributes e' uguale a
FILE_ATTRIBUTE_DIRECTORY senza considerare l' OR con gli altri
attributi.
Spero di esserti stato d'aiuto,
ciao.
---===| Benez |===---

Newsgroup: it.comp.lang.c++
Titolo: creare icone

                                    Problema:
Devo creare un'icona da un'immagine,
senza utilizzare il controllo ImageList.
X farlo utilizzo le API :
  CreateIconIndirect
  DrawIcon
In questo modo:
Private Sub Command1_Click()
  Picture1.Cls: Picture1.Refresh
Dim myico As ICONINFO
  myico.fIcon = True
  myico.hbmMask = Picture1.Image
  myico.hbmColor = Picture1.Image
  hdcICO = CreateIconIndirect(myico)
    DrawIcon Picture2.hdc, 0, 0, hdcICO   ' x il fondo
    Picture1.Print "MyIco" 'disegno o scrivo qualcosa
    hdcICO = CreateIconIndirect(myico)
    DrawIcon Picture2.hdc, 0, 0, hdcICO  ' x l'icona
    Picture2.Refresh
    DestroyIcon hdcICO
End Sub
a questo punto ho l'icona disegnata in Picture2
ma è comunque un'immagine (quindi .bmp) e non posso caricarla in
    Me.MouseIcon = hdcICO
Forse vi sembrerà strano;  ma non sono stato capace di convertire hdcICO in
.ICO  .
Mi dite qual'è L'API in questione o il metodo x farlo.
Qualsiasi consiglio o suggerimenti è bene accetto.
ringrazio in ogni caso    
orf...@tin.it

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
P.S. per tutti gli altri: sentivate la mancanza di questo messaggio,
vero? :-)

 vero? :-)
Comunque il suo codice era in VB, quindi il NG piu' logico e', direi, ICLVB.
Ciaotutti,
*

 vero? :-)
Ti servirebbe risponditore automatico :)
-- 
Rhymes
rhy...@myself.com
" ride or die "
Newsgroup: it.comp.lang.c++
Titolo: numerical recipes in c++

Salve,
qualcuno sa dove posso comperare questo libro senza dover aspettare che mi
venga recapitato dopo 1 mese e mezzo, come mi e' stato detto dalla libreria
universitaria della mia citta'?
Qualcuno conosce librerie in area Romagna o anche Bologna che lo hanno senza
doverlo prenotare?
Grazie 
E.p.

 doverlo prenotare?
Io l'ho preso qui:
www.pangloss.it
Xndr!

 dalla libreria universitaria della mia citta'?
http://www.gorilla.it/gorilla/product.asp?sku=0521750334&dept%5Fid=
ciao
-- 
Gerolamo


Scusa se invece di risponderti ti faccio una domanda io:
che differenza passa con "Numerical Recipes in C"?
Cambia solo il linguaggio utilizzato negli esempi?
 bye & Thanks
	av.
Newsgroup: it.comp.lang.c++
Titolo: Implementazione coda

Qualcuno me la puo' implementare Grazie.....

 Qualcuno me la puo' implementare Grazie.....
Tze'! Scaricati i sorgenti delle librerie STL e guardati
come sono implementate le code.
-- 
Remove _NOTRASH to answer me!

 wrote in message
news:G0wB9.5141$Ka3.1...@twister1.libero.it...


 Qualcuno me la puo' implementare Grazie.....
Quando ha finito, gia che c'e', puo' venire qui a fare il mio lavoro al
mio posto?
Grazie,
Nicola
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


ma vafammocc a mammt stu strunz ma che t pienz che ca' a gent nu tten nu
cazz a fa comm a te? piglu nfacc

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

Ho alcune domande sulle classi di iostream:
1) La classe ostream dispone di un metodo che implementi una sorta di
printf?
Ho sentito che ci sono (per esempio con cout) cout.write(...) e
cout.format(...) ma la seconda non esiste mentre la prima mi dà un
comportamento molto strano lasciando supporre che non sia quello il suo uso.
2)So che può sembrare una domanda banale ma che hader devo dichiarare per
accedere alla classe ostream?
3) Le funzioni che scrivo per oggetti ostream e istream (pes esempio
operator<< per un'ipotetica classe matrice) possono funzionare anche per gli
oggetti delle classe ifstream ofstream rispettivamente?
Grazie
e ciao
Antonio

 ha scritto nel messaggio
news:SJ3L9.34402$t_1.3...@tornado.fastwebnet.it...


 la documentazione per maggiorni info.
Attenzione che i[o]strstream sono classi non standard e obsolete, che
lavorano su  puntatori a caratteri piuttosto che su stringhe. Meglio
usare istringstream e ostringstream, dichiarate in <sstream>
Ciao,
Nicola

 per accedere alla classe ostream?
dipende da cosa ci devi fare: se devi usare solo riferimenti o puntatori 
ad ostream va benissimo <iosfwd>. Ad esempio:
#include <iosfwd>
class MiaClasse
{
public:
        friend ostream& operator<<(ostream&, const MiaClasse&);
        friend istream& operator>>(istream&, MiaClasse&);
};
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

Newsgroup: it.comp.lang.c++
Titolo: Rendere un processo invisibile...

Vorrei Sapere Come fare per rendere invisibile un mio programma, cioč fare
in modo che quando premo ctr+alt+canc il mio programma non appaia tra quelli
elencati.. il tutto ovviamente sotto Win9x grazie anticipatamente ciao a
tutti

 Vorrei Sapere Come fare per rendere invisibile un mio programma, cioè fare



E' facilissimo, basta fare cosě:
}
Newsgroup: it.comp.lang.c++
Titolo: Informazione su BOOST

Salve,
vi faccio una domanda al volo su BOOST (mi serve qualcosa di 
standard-compliant): esistono dei tools per scrivere parser ?
Devo leggere un file di testo da me creato e vorrei farlo in maniera 
automatica, non rigo per rigo. Mi pare di aver letto che BOOST prevede 
questo, qualcuno sa aiutarmi ??
Potrei scriverlo con flex++, solo che non so come e' messo sotto 
Windows, su cui sto sviluppando.
Grazie !

 wrote 

Ma non fai prima a dare una occhiata al sito?
Ad ogni modo, dipende da quello che devi fare, c'e':
- spirit (LL parser)
- regex (regular expressions)
Sono due cose completamente diverse, ma non so cosa tu intenda per "file
di testo", le regular expressions potrebbero andare piu' che bene.
Altrimenti spirit (se ad esempio devi fare parsing di un linguaggio).
Tommaso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Tommaso Galleri ha scritto:

Devo leggere dei dati da un file e creare degli oggetti di una classe 
utilizzando questi valori, potrebbe andare bene anche regex...
Grazie

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

	Qualche settimana fa' ho letto dei messaggi che consigliavano
di iniziare a programare con Dev C++ piuttosto che con TC lite per
questioni di "template e librerie": ora ho un problemino stupido
chenon riesco a risolvere...una volta compilato il programma la
finestra del DOS si visualizza troppo velocemente e  non vedo i miei
risultati, con Turbo c++ usavo lo User Sceen e li vedevo. Come si puo'
fare con il Dev c++??
Grazie
Alaves

 Grazie
prego
-- 
Abruzzo Silvio
studente, 16 anni
goku_...@libero.it
silvi...@aruba.it
^____^


io ho provato, ma non funziona. Questo il codice che ho provato:
#include <iostream>
using namespace std;
int uscita;
void total (int x);
int main()
{
 int t;
 total(5);
 total(6);
 cout<<"Inserire un numero: ";
 cin>> t;
 total(t);
 std::cin.get();
}
void total(int x)
{
 int sum=0;
 int i,count;
 for(i=1; i<=x; i++)
 {
  sum=sum + i;
  for(count=0; count<10; count++)
               cout<<" .";
  cout<<"La somma corrente e' "<< sum << '\n';
 }
}
Inoltre ho un altro problema: perche i caratteri accentati me li legge male
nell'output e sono costretto a mettere le accentate fasulle (tipo e', o',
etc..)?
Grazie


 }
Io ho risolto il problema aggiungendo un'altro 
        cin.get();
credo, ma non ne sono per nessun motivo convito e aspetto spiegazioni, che 
quando si preme invio al cin >> t, questo riempie un buffer, che cin.get() 
trova pieno, e quindi pensa che l'invio sia stato giù premuto.
Ciao.




When executing my dos program, it closes automatically. How I can
change this ?
You can use an input function at the end of you source, like the
following example :
#include <stdlib.h>
int main()
{
system(PAUSE);
	return 0;
}
Newsgroup: it.comp.lang.c++
Titolo: Punto di Ingresso nella DLL

Qualcuno sa spiegarmi come fare a inserire un punto di ingresso per una DLL
creata con il Visual C++ 6.0.
Devo usarla in un progetto Visual Basic. La funzione Declare sembra corretta
ma quando richiamo la funzione presente nella DLL mi dice che non trova il
punto di ingresso!
Cos'è questo punto di ingresso?
A me serve solo avere una funzione fatta in C che sia richiamabile da Visula
Basic!
Qualcuno sa aiutarmi?

Qualcuno sa aiutarmi?
sei sicuro che nel tuo codice VisualC++ ci sia qualcosa del tipo:
#ifdef _cplusplus
extern "C" {
#endif
int __declspec(dllexport) Foo(int a){
    return a+1;
}
#ifdef _cplusplus
}
#endif

> 
http://www.geocities.com/sunsetstrip/stage/7787
 <<
<<<<<<<<<<<< 
DucaCr...@iol.it
 >>>>>>>>>>>>>>
*** C'è sempre un precipizio per ogniuno di noi
*** E' li che ci aspetta, prima o poi ci prenderà
*** Non è possibile evitarlo, è sciocco non vederlo
*** Intanto però, è giusto vivere.
                                               (M. La Neve)

 Qualcuno sa aiutarmi?
  Se la DLL esporta funzioni per VB deve contenere un file .DEF che contiene la
chiave EXPORTS seguita dal nome della funzione seguita da @1.
La funzione deve essere definita con _stdcall.
Ricerca nell'help EXPORTS.
Ciao.

#endif
Per farsi chiamare da Visual Basic, bisogna che la Foo sia
anche STDCALL (o WINAPI, __stdcall, ecc ecc).
Alex
Newsgroup: it.comp.lang.c++
Titolo: cerco aiuto

Scusate, ho trovato alcuni dei vostri indirizzi sulla newsgroup di c++ e c.
Volevo chiedervi alcune cose.
1) Come si fa ad acquisire e mandare i dati dalla porta parallela? e dalla
seriale?
2) Come si istalla djgpp (preso da ioProgrammo)?
Dopo aver decompresso i file zip nella cartella c:\djgpp\, cosa devo fare?
Quale file *.exe è l'editor di C++, quale di Pascal, quale di Assembler?
3) Come si usa la modalità grafica in Borland C++ o in Borland Pascal?
Avete degli esempi da mandarmi?
Sapete dove posso trovare informazioni?
grazie se mi risponderete
rispondetemi via e-mail (non sempre vado a vedere la newsgroup)
(mailto:
ivan...@tiscalinet.it
)
Ivano

 rispondetemi via e-mail (non sempre vado a vedere la newsgroup)
Se tu non hai tempo per il newsgroup perché pensi che il NG abbia tempo per
te?
Sullo specifico delle domande non so risponderti.

commerciali (VC++ BC) e non. 
Veramente qui non si parla per nulla nemmeno di C++ per quello c'e' un
NG che si chiama proprio it.comp.lang.c++ !
mentre questo e' it.comp.lang.c e basta !
anche perche' non sono proprio identici C e C++ !
Augusto Pucci
Webmaster di Prospektiva On-line
http://go.to/Prospektiva

 NG che si chiama proprio it.comp.lang.c++ !
Purtroppo questo messaggio è in cross-posting con it.comp.lang.c++...
EMG

anche perche' non sono proprio identici C e C++ !
Ma va`... ;)
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

Ecco allora ti devo dare ragioner un'altra volta sul fatto che il
cross post e' una forma di maleducazione non indifferente, soprattutto
quando palesemente il problema col C non c'entra un poiffero.


 quando palesemente il problema col C non c'entra un poiffero.
Ecco, magari in questo caso si, diventa maleducazione multipla rispetto
al singolo off-topic.
EMG

Si, non certo in generale, ma quando due NG trattano argomenti cosi'
diversi palesemente, o addirittura in lingue diverse !


Prima di dare del cornuto all'arbitro considera che può semplicemente non
avere visto ;-)
Non avevo notato che c'era un bel X-post. Comunque qui su it.comp.lang.c++ è
OT.
---
Livio Cavallo
Newsgroup: it.comp.lang.c++
Titolo: "Mutable" keyword: a cosa serve?

Penso che il subject sia chiaro... ;)
Ciao,
<manoo>

Penso che il subject sia chiaro... ;)
Si`:-).
Quando dichiari un oggetto "const", puoi intendere che esso
e` LOGICAMENTE costante, ma volerti egualmente riservare
la possibilita` di aggiornare, fisicamente, suoi campi che non
inficino la sua (logica) "costanza".  Allora, dichiara questi campi
"mutable".
Esempio tipico: supponi di avere una classe X, con un operator()
const, che accetta un long e torna un long, facendo un mucchio di
conti per calcolare il risultato.  Cercando di ottimizzare, noti che
spesso questo operator() e` chiamato ripetutamente con lo stesso
argomento per parecchie volte -- basterebbe ricordarsi il precedente
risultato e, se l'argomento non cambia, tornare quello.  Scrivi allora:
// la classe esistente:
class X {
    // varia altra roba, poi:
public:
    long operator(long) const;
};
// versione ottimizzata:
class cachedX: public X {
    long latestArg;
    long latestResult;
    bool cacheValid;
public:
     cachedX(): cacheValid(false) {}
    long operator(long l) const {
        if(!cacheValid || l!=latestArg) {
            latestArg = l;
            latestResult = X::operator(l);
            cacheValid = true;
        }
        return latestResult;
    }
};
Tutto bellissimo, *MA*... come vedi,
cachedX::operator() ha bisogno di potere
aggiornare i tre campi -- come fa, visto
che e` un metodo const?!  Soluzione:
basta dichiarare quei tre campi con la
keyword mutable:
// versione ottimizzata _corretta_:
class cachedX: public X {
    mutable long latestArg;
    mutable long latestResult;
    mutable bool cacheValid;
// ecc ecc
e tutto va liscio...!
Alex

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

Ciao a tutti. Dopo avar imparato abbastanza bene il c++ ho voluto creare un 
interfaccia grafica (con l'ambiente visuale del  vc++). Il problema č che 
non rieco a inserire il mio codice,a gestire gli eventi, a leggere da un 
edit box,ecc.... Ho provato a leggere il codice che lui crea automaticamente 
ma non lo capisco, perchč ci sono(ovviamente) classi e metodi  dichiarati in 
qualche libreria delle MFC che non so cosa fanno. Siccome le MSDN si perdono 
strada facendo, vi volevo chiedere se esistono tutorial sulle MFC o librerie 
per creare interfacce grafiche un pň piů semplici da usare. Grazie in 
anticipo.
-- 
Saluti a tutto l'ng da Raffaele 

 ha scritto nel messaggio 
news:sqd4e.1169119$35.43...@news4.tin.it...

Newsgroup: it.comp.lang.c++
Titolo: header, definizioni e dichiarazioni varie


"O Signore, se c'e' un Signore, salvate la mia anima, se ho un'anima."
                                    -Preghiera d'uno scettico

 E' tutto giusto secondo voi?
Generalmente nel file header vengono inserite solo le *dichiarazioni* di
classi, funzioni gloabali ecc... In questo modo, se in un alltro file ti
servono le funzioni che hai dichiarato (ed implementato) precedentemente,
basta includere il file header, con lo scopo di far sapere al compilatore
che le classi e le funzioni dichiarate al suo interno esistono e sono
implementate da qualche parte: ci penserà poi il linker a risolvere le varie
chiamate andando a ricercarne il codice negli altri file linkati. Questo
approccio ha diversi vantaggi: innanzi tutto se stai lavorando ad un
progetto grosso avrai vari file *.h ed i relativi file *.cpp: una volta
compilato il tutto , se devi modificare il codice di uno dei file lasciando
gli altri invariati, alla successiva compilazione ti verrà ricompilato solo
il file che hai modificato, risparmiando tempo di compilazione. Inoltre non
è necessario che l'implementazione di quello che hai dichiarato in un header
sia fornito come codice sorgente, ma può essere anche compilato
precedentemente e fornito sottoforma di file oggetto, lib ecc... il che è
esattamente quello che viene fatto quando includi un header della libreria
standard (non di template) ed utilizzi una delle sue funzioni.
Diverso è il discorso se usi i template, per i quali è necessario fornire
dichiarazione ed implementazione tutte insieme.
Ciao, spero di non averti confuso le idee, e di non aver detto cavolate
(data l'ora ;-)
Cecco
Newsgroup: it.comp.lang.c++
Titolo: Maledetti DIB !!!!!!!

Qualche tempo fa ho esposto un problema che mi assilla già da un po'
Ho una matrice di COLORREF da visualizzare e l'unico modo per farlo e non
invecchiare davanti al computer è quello di incapsularla in un bitmap DIB( a
proposito , ringrazio ancora Gianpaolo ), ma ..... come diavolo si fa ?
Problema n°1
CreateDibSection , tra le tante cose, vuole un HDC, già , ma di cosa ?
Gli devo dare  in pasto ( col cast of course ) una CDC ? Una CPaintDC ?
Una CClientDC ? Siccome la chiamata la devo fare da CView::OnInitialUpdate
ho supposto mi dovessi inventare una CDC da dargli in pasto per
accontentarlo
Problema n°2
Sempre lei mi chiede una variabile ppvbits = "pointer to variable to receive
a pointer to the bitmap's bit values" ( stile l'ho saputo dall'amica del
fratello della cognata che ha il padre....). Non era meglio un puntatore che
un puntatore al puntatore ?
Problema n°3
Devo passarle una struttura BITMAPINFO, ma nel campo RGBQUAD, cosa cavolo ci
devo mettere, tutti i suoi colori ? Ma se ancora nemmeno li so!!!!!!!!
Problema n°4
A sua volta BITMAPINFO ha astrusità notevoli :
biYPelsPerMeter, biXPelsPerMeter, biClrUsed......
Problema n°5
Tutti questi problemi perderebbero di importanza con la paroxetina, ma
preferirei non usarla.....
Specifico che me ne sbatto della resa grafica , raccomanderò chi darà una
occhiata al mio programma di guardarlo almeno a 16Kcolori!!
Mi viene un dubbio...........io ho le MFC 4.0..........non è che nelle
versioni successive sia comparsa per caso una classe CDIBitmap ?

versioni successive sia comparsa per caso una classe CDIBitmap ?
magari... :(
Gianpaolo Bottin
- The truth is out there -

Newsgroup: it.comp.lang.c++
Titolo: [MSVC] Operazioni su double

Aiuto ragazzi!
La mia prof di mate si è accorta di qualche errore nel mio programma per
plottare funzioni!
Quando il risultato di una funzione è infinito, come ad esempio
sen(log<e>(radq(0))), come faccio a capirlo?
Internamente, la variabile assume il valore -1.#IND000000000, ma non riesco
a fare un if per intercettarlo...
Idem per quando non è definito, come radq(-1)...
Ho inoltre sentito parlare delle eccezioni floating point. Cosa sono?
Possono essermi utili? Se si, come si usano?
Purtroppo non ho MSDN e la bolletta è troppo alta per usare intensivamente
quella online...
Thanks
Kojak
vrke...@hotmail.com
http://space.tin.it/io/viscorci

 Possono essermi utili? Se si, come si usano?
Purtroppo, il C++ standard non ti permette quel controllo
precisissimo sulle anomalie floating-point che l'hardware
moderno rende possibile; bisogna usare approcci specifici
della data piattaforma di interesse.  Dovresti quindi porre
la tua richiesta nel gruppo relativo alla piattaforma su cui
lavori, ad es. it.comp.programmare.win32 se Win 32bit.
Alex


Spero di non sbagliare ma questi 'eventi' (ossia divisione per zero,
infinito) si gestiscono
tramite i segnali.
Ti consiglio di leggere l'header signal.h.
Manlio Perillo
Newsgroup: it.comp.lang.c++
Titolo: Borland C++ Builder Profesional

Come posso cambiare gli ITEMS di un COMBOBOX durante l'esecuzione di un
porgramma.
Esempio quando cliccko un pulsante la lista di opzioni del COMBOBOX deve
cambiare.
Magari č una domanda stupida, ma non so proprio come fare.
Grazie in anticipo
--
Ciao da Marco "Kaiser" Baldo
sata...@quipo.it
ICQ#: 55765146
FantaBasket PRO Home Page:
http://www.fortunecity.com/olympia/michaels/749/
Membro del SSIFC
----------
cell. 0347-8248718

>Come posso cambiare gli ITEMS di un COMBOBOX durante l'esecuzione di un
porgramma.
La property Items di un combobox e' una classe TStringList, quindi devi
usare i metodi di questa classe.
Per esempio, ComboBox1->Items->Add("Nuova stringa"); per aggiungere,
ComboBox1->Items->Delete(index) per togliere la riga individuata dall'indice
'index' (0-based), ComboBox1->Items->Clear() per rimuovere tutte le linee.
Ciao e buon Natale
--
Stefano Tempesta
TSoft - 
www.tempesta.org
in...@tempesta.org

cambiare.
Semplice. Sul codice dell' evento OnClick del bottone inserisci:
ComboBox->Items->Clear();  //per cancellare gli items.
ComboBox->Items->Add(nomeitems);  //per aggiungerne degli altri.
gli items non sono altro che delle stringhe.
Ad ogni modo questo non é il newsgroup adatto per parlare di
programmazione per Win32. C'é già un newsgroup fatto apposta per
questo argomento e si chiama:it.comp.programmare.win32.
Il Ghenio
Newsgroup: it.comp.lang.c++
Titolo: Uso di Winsock

Qualcuno potrebbe indicarmi i passaggi base per creare un server e un client
usando Winsock?
Ho cercato dei Tutorial nella rete ma sono tutti confusi e contraddicentisi
l'un l'altro!
E poi quello che scrivono non funzia!
Grazie
Luca Paganelli
52629494

 usando Winsock?
Chiedi su it.comp.programmare.win32.
Bye,
 Emmanuele.
-- 
Emmanuele Bassi         |             [ 
http://digilander.iol.it/ebassi/
 ]
emmanue...@iol.it
  |
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

Newsgroup: it.comp.lang.c++
Titolo: Esistenza di un path

Esiste una funzione per sapere se un path esiste??
Gianluca
PS: mi serve sotto  BCB 1

 PS: mi serve sotto  BCB 1
Puoi utilizzare GetFileAttribute o  FindFirstFile o qualche cosa di simile.
Guarda nel help MS Win32 SDK (in BCB1 lo hai stò help).
Bye
Matteo

WIN32_FIND_DATA fd;
if (FindFirstFile("dir/"), &fd) == INVALID_HANDLE_VALUE)
{
 CreateDirectory("dir",0);
}
On Sun, 14 May 2000 08:01:35 GMT, 
ato...@antispam.libero.it
 (Atomo77)
wrote:

Newsgroup: it.comp.lang.c++
Titolo: Quesito su dati / puntatori a dati

Vorrei chiedere un parere a chiunque voglia rispondermi. Ho appena finito di
sviluppare una classe che implementa una lista bidirezionale generica (un pò
per necessità, un pò per esercizio); all'interno di ogni nodo ho posto il
puntatore all'oggetto, ad es.:
Lista <int> *l;    /*  l contiene oggetti di tipo int*.  */
Per le operazioni di inserzione / estrazione di oggetti utilizzo puntatori
ad oggetti, perciò ho delle funzioni del genere:
template <class T> void Lista <T>::inserisci (T*);
template <class T> T* Lista <T>::estrai (void);
Ho scaricato dal web del codice in cui le liste vengono implementate ponendo
all'interno dei nodi l'oggetto in sé, non il suo puntatore, avendo quindi
delle funzioni del tipo:
template <class T> void Lista <T>::inserisci_alternativo (T);
template <class T> T Lista <T>::estrai_alternativo (void);
In questo caso si possono avere dei problemi. Ad esempio la lista è vuota e
si cerca di estrarre un elemento che quindi non esiste. Utilizzando i
puntatori restituisco NULL, non utilizzando i puntatori cosa devo
restituire? Credo che la mia sia la soluzione più funzionale, ma vorrei
sapere il parere di qualcuno più esperto di me. Faccio questa domanda
adesso, visto che la mia lista è ancora abbastanza ridotta da essere
(eventualmente) corretta. Grazie a tutti e ciao
                                                    Marchisio Stefano

 (eventualmente) corretta. Grazie a tutti e ciao
Sinceramente non mi sembra che la tua soluzione sia molto funzionale, per
quello che ti ho scritto sopra, ma anche la soluzione alternativa non mi
convince. Io avrei fatto così:
template <class T> void Lista <T>::inserisci (const T&);
template <class T> bool Lista <T>::estrai (T&);
In questo modo hai vari vantaggi: intanto non usi i puntatori (sempre che
sia un vantaggio ;-), inoltre, in inserisci, passando un oggetto per
riferimento anzichè per valore, non viene creata una copia di esso, e nel
caso questo sia grosso è una cosa buona. Per quanto riguarda la estrai, se
la lista è vuota torni false, altrimenti torni true; il riferimento passato
lo usi per copiare l'oggetto che sta per essere eliminato.
Inoltre forse ti converrebbe fare più di due metodi di inserimento ed
estrazione, per inserire ed estrarre sia in testa che in coda. Così potresti
riutilizzare il codice per implementare altre strutture dati.
IMVHO ;-)
Ciao,
Cecco

Per la mia lista ho implementato diverse funzioni di estrazione e inserzione
(oltre ad altre). Volevo solo sapere se ci sono modi migliori di gestire la
faccenda, tutto qui. So che ci sono liste già fatte, ma mi serve (anche) per
fare esercizio. Grazie dell'aiuto
                                    Marchisio Stefano
P.S.: solo una cosa: il tipo 'bool' fa parte dello standard o no? Io ho il
compilatore Borland C++ 3.1 e non lo riconosce.

 compilatore Borland C++ 3.1 e non lo riconosce.
E' standard.
Ciao,
Cecco

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

Sapreste consigliarmi una buona guida per il c++? Sono migliori quelle della
McGrow Hill o Jackson?
Grazie

McGrow Hill o Jackson?
Ho da poco postato le FAQ... 
Paolo
Newsgroup: it.comp.lang.c++
Titolo: Matematica e programmazione

Qual'è il linguaggio di programmazione ideale per chi fa matematica??
ciao
Stefano

...


Stefano
Secondo me il Pascal.
Forse lo uso ormai da quando e' nato :-))
E quando facevo Matematica all'universita' hanno
scelto di far studiare quello.
Adesso uso moltissimo delphi.
(+ un bel po' di altri)
Ciao
Claudia Caloi
----------------------
www.caloisoft.com

Stefano

Qual'è il linguaggio di programmazione ideale per chi fa matematica??
Mathematica? Oppure Fortran se non vuoi un linguaggio interpretato...
=========================================================
    Christian Prinoth        For replies please remove
 
c.pr...@flashnet.it
     ANTISPAM from the address
=========================================================
     Homepage: 
http://village.flashnet.it/~fn023975/
=========================================================
    PGP Public key available on request - Fingerprint:
    B69F 01B0 5558 9094 55EF  3572 EED1 6F1B DAFF 2853
=========================================================

Qual'è il linguaggio di programmazione ideale per chi fa matematica??
Dipende.
Se vuoi fare "prototyping", cioe' testare rapidamente idee che ti vengono
per vedere se hanno un minimo di senso, allora ambienti (piu' che "linguaggi")
come Mathematica, Matlab, Maple ecc sono assolutamente consigliabili. Per
la mia limitata espereinza, Mathematica e' piu' "general purpose" e meglio
attrezzato per la parte simbolica, Mathlab e' migliore per la parte numerica,
ma su questo potrei sollevare un vespaio di polemiche e quindi tienilo solo
per un'opinione da un non esperto.
Se, per contro, vuoi realizzare codici "da produzione", allora devi andare
verso linguaggi compilati e librerie matematiche. Storicamente il Fortran
e' quello venuto prima (gia' il nome ...), ma in questo momento io consiglio
comunque il C++. Puoi sempre linkarci le librerie Fortran che ti servono se
proprio devi, a parte che molte sono state tradotte o lo saranno. Pero' si
programma *troppo* meglio, soprattutto per codici matematici di grandi
dimensioni. Esperienza personale. In piu' adesso hai la STL in cui ci sono
tante utilities che ti fanno risparmiare un sacco di tempo senza perdere
in qualita' dell'implementazione, anche senza andare verso librerie
specializzate che sono molto scomode se prevedi di distribuire la roba che fai.
                                               Saluti
                                               Antonio
Antonio Frangioni                      Research Associate  |  I have gained ...
Dip. di Informatica - Corso Italia 40 - 56125 Pisa, Italy  |  the colour of the
Ph +039-50-887216                
www.di.unipi.it/~frangio
  |  corn.   [Exupery]
Newsgroup: it.comp.lang.c++
Titolo: array di struttura

Salve,
        mi sono imbattuto in questa linea di codice per me incomprensibile e 
volevo sapere se per caso rendeva una variabile un array di una struttura 
gi� predefinita:
sb = (WAVEHDR**) malloc(sizeof(WAVEHDR**) * system_buf_num); 

 dell'array � un puntatore a WAVEHDR.
Ti ringrazio. Nella struttura WAVEHDR ho un campo "lpdata" di tipo LPSTR.
trovo di difficile comprensione questa riga:
sb[i]->lpData = (LPBYTE) malloc(system_buf_len);
perch� viene usato il (LPBYTE) ??
grazie 

 sb = (WAVEHDR**) malloc(sizeof(WAVEHDR**) * system_buf_num);
A rigor di logica, questa istruzione non è valida, nel senso che
dovrebbe essere sizeof(WAVEHDR*) - un solo asterisco.
Nei fatti funziona solo perché le dimensioni dei puntatori sono
evidentemente uguali, a prescindere dal tipo puntato.


Puoi spiegare meglio il tuo punto di vista?
Il tuo appunto l'avrei trovato sensato nel caso contrario, ovvero
avendo:
T ** x = (T**) malloc(sizeof(T*) * k);
avrei fatto notare come l'istruzione funzioni solo perché sizeof(T*)
== sizeof(T**), ma non ci trovo niente di sbagliato/invalido
nell'usare malloc nella forma
T x = (T)malloc(sizeof(T)*k)
per ogni T (magari eccetto 'char' dove sizeof() lo considererei
ridondantemente errato)

 T x = (T)malloc(sizeof(T)*k)
malloc ritorna T* non T

 Puoi spiegare meglio il tuo punto di vista?
Non è un punto di vista. E' una constatazione.
Se hai:
T* p;
L'allocazione corretta per 10 T è:
p = ( T* ) malloc( sizeof( T ) * 10 );
Perché tu allochi memoria per 10 T, quindi devi considerare la
grandezza del valore puntato, non per dieci puntatori a T.
Se hai T con sizeof(T) > sizeof(T*), infatti, quell'istruzione può
essere molto pericolosa.

 ugualmente...ma la sto buttando l� eh.
Perfetto. Stavo cercando di costruire un sistema di buffers da passare poi a 
funzioni waveIn. Questo � il codice:
#define system_buf_len 4096
 int i=0;
 int num_buff = 5;
 WAVEHDR *buffer = (WAVEHDR *) malloc(sizeof(WAVEHDR)*num_buff);
 for (i=0; i<num_buff; i++)
 {
  buffer[i].lpData                = (char *) malloc(system_buf_len);
  buffer[i].dwBufferLength  = system_buf_len;
  buffer[i].dwFlags             = 0;
  waveInPrepareHeader(phvi, &buffer[i], sizeof(WAVEHDR));
  waveInAddBuffer(phvi, &buffer[i], sizeof(WAVEHDR));
 }
credi che sia corretto un'approccio del genere?
grazie