mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Vector e classi

Questa č la mia classe :
class Ced2kLink
{
public:
 bool SetLink(char *strLink);
 ~Ced2kLink();
 Ced2kLink();
 char *ed2k;
 char *FileName;
 char *FileSize;
 char *Hash;
 char *Estensione;
 bool State;
private:
 void GetExtension();
};
Come mai se provo a fare cosi mi da un errore ?
Ced2kLink ed2kLink;
std::vector <Ced2kLink> ed2kLinks;
ed2kLink.SetLink(".......");
ed2kLinks.push_back(edwkLink);
questo č l'errore :
Debug Assert Failde!
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

 ha scritto nel messaggio
news:HOGnc.228823$rM4.9...@news4.tin.it...

precisazione , la funzione č questa :
   ed2kLink.SetLink(buffer);
   ed2kLinks.push_back(ed2kLink);
   fgets(buffer, 1024, fStream);
   if (buffer[0] == '1') ed2kLink.State = TRUE;
   InsertIntoListview(hWnd);
   MessageBox(0,ed2kLinks[0].ed2k,0,0);
   ed2kLink.~Ced2kLink();
ho notato che praticamente la chiamata al distruttore gli da un bel po
fastidio !

 fastidio !
...bisognerebbe vedere anche il resto del codice, comunque riguardo 
quest'ultimo punto della chiamata al distruttore, io personalmente 
lavoro in maniera differente [e per ora mi sono sempre trovato bene], 
cioe':
- se devi chiamare *tu* il distruttore, in un certo punto del codice, ti 
conviene allocare *dinamicamente* l'oggetto con new, e distruggerlo con 
delete (l'operatore delete chiama il distruttore).
- se allochi l'oggetto sullo stack (come mi pare che faccia tu) il 
distruttore viene chiamato in automatico, ad esempio quando l'oggetto 
stesso esce di scope... 
Forse nel tuo codice,  oltre alla tua chiamata "forzata" al distruttore, 
segue anche la chiamata "automatica", e questo crea problemi?
Se hai esigenza di forzare *tu* una chiamata al distruttore, opterei per 
l'allocazione dinamica (new/delete).
Spero ti possa essere utile...forse altri ti potranno dire di piu'.
Ciao,
Dan

 ha scritto nel messaggio
news:MPG.1b09aa917...@powernews.libero.it...

Forse ho capito , in pratica diccome sono puntatori le variabili dentro la
classe , quando faccio il push gli indirrizzi dei puntatori vengono passati
al vector , e quando invoco il distruttore per deallocare la memoria , non
puo perche sta in comune con quello del vector ! Penso sia cosi perche ho
fatto un po di prove ! Quindi come posso far e?


No, non hai capito. Se l'oggetto è automatico non devi chiamare esplicitamente
alcun distruttore. Se l'oggetto è allocato con 'new' userai 'delete' per
distruggerlo, e non dovrai comunque invocare esplicitamente alcun distruttore.
(C'è una sola circostanza in cui occorre invocare esplicitamente il distruttore,
ma lo imparerai quando studierai il 'placement new'.)
Max

 char *ed2k;
sostituito con:
  std::string ed2k;
e idem per gli altri membri (FileName, ecc.)
Ciao
Dan

 ha scritto nel messaggio
news:MPG.1b09df00d...@powernews.libero.it...

Oki grazie ad entrambi!
Newsgroup: it.comp.lang.c++
Titolo: differenza tra . e ->

sempre cercando di capire le funzioni sulle liste (devo costruirmele da solo
non posso fare affidamento su librerie) mi sono imbattuto in una cosa(per
me) strana:
parto da questo pezzo di codice:
void writelist(cella* ptr)
{
 while (ptr) {
   cout << ptr->dato << " ";
   ptr = ptr->succ;
   }
cout << endl;
}
la struttura della cella è la seguente:
struct cella
{
float dato;
cella* succ;
};
come si vede nella funzione sopra io passo alla funzione writelist un
puntatore alla cella (e non una cella) ma nonostante questo è possibile
scrivere, compilare ed eseguire la riga
    cout << ptr->dato << " ";
se invece scrivo   ptr.dato  il compilatore mi dice che non è possibile
accedere al campo dato perchè ptr è un puntatore (giustissimo)
ma allora qual'è la differenza tra . e -> e soprattutto concettualmente cosa
significa ptr->dato visto che ptr e un puntatore a cella e non un tipo
cella?
stessa cosa per quest'altro pezzo di codice:
void metti(cella*& ptr, float x)
{
cella* nodo=new cella;
nodo->dato=x;
nodo->succ=ptr;
ptr=nodo;
}
nella main dichiaro un puntatore a cella inizalmente contenente NULL
cella* start=NULL;
che poi passo alla funzione metti e alla funzione writelist.
Nodo è un puntatore a cella e non una cella per cui non capisco come si
possa assegnare a nodo il campo dato.
Ah naturalmete le due funzioni (inspiegabilmente per me) lavorano
perfettamente: la funzione metti inserisce i dati nella lista al contrario e
la funzione writelist stampa la lista.....ma non capisco neanche come
diavolo il compilatore abbia capito una cosa (per me) assurda.
Sono alla frutta ragazzi, aiutatemi voi per piacere.
Grazie.

 si possa assegnare a nodo il campo dato.
č appunto il caso in cui usi '->', che prima dereferenzia e poi accede
membro x.
-- 
Gerolamo
Newsgroup: it.comp.lang.c++
Titolo: ereditarietà da std::pair

ho un problema che proprio non capisco, dovrebbe essere molto semplice:
#include <vector>
#include <iostream>
using namespace std;
class Classe : public pair<float,float>  //definisco una classe che contiene
variabili, la faccio ereditare da pair, così ho già tutti gli operatori
definiti
{
public:
    float &a;
    float &b;
    Classe(): pair<float,float>(10.,5.), a(first), b(second) {cout
<< "costruito\n";};
};
class Vector : public vector<Classe>
{
public:
    Vector(int n) : std::vector<Classe>(n) {}; //dovrebbe chiamare i
costruttori di Classe per n volte, giusto?
};
int main()
{
    Vector vec(10);
    vec[0].a = 10;
    cout << vec[0].a << endl; //output 0
    cout << vec[0].b << endl; //output 0
    cout << vec[1].a << endl; //output 1.413e-45
    cout << vec[1].b << endl; //output 0
    return 0;
}
tra l'altro, perché "costruito" viene stampato solo una volta e non 10?

 tra l'altro, perché "costruito" viene stampato solo una volta e non 10?
La butto li', non so se sia corretta, e' solo un'ipotesi...
Chiama 10 costruttori, ma solo la prima volta quello che hai scritto tu, 
poi 9 volte il costruttore di copia.
O anche una sola volta quello che hai scritto tu, poi 10 volte il 
costruttore di copia.
Non ricordo se il comportamento nello standard e' descritto fino a 
questo livello; prova a seguire la costruzione di vec nel debugger e 
vedi come si comporta.
  bye
	av.

 costruttori di Classe per n volte, giusto?
Sì. Ma non è detto che debba chiamare quel costruttore che hai definito tu.
In effetti, il vector viene popolato copiando n volte un'instanza
temporanea oppure l'instanza passata come secondo argomento del costruttore
del vector.
Però il nostro costruttore copia, per i motivi che ho detto, produce cose
orrende poiche lascia potenzialmente in giro reference associati a membri
'first' e 'second' di oggetti già distrutti.
Gli "strani" valori che stampa i tuo programma sono gli effetti indefiniti
dell'uso di reference non più validi.
Regola indicativa generale: se definisci un costruttore, allora molto
probabimente dovrai c
Max

 
Ops. Qui avevo cominciato a enunciare la "law of the big three", ma poi la
pigrizia ha prevalso e ho preferito inseririre una dritta per cercare su
Google, dimenticandomi pure di cancellare il paragrafo incompleto. :)
MM

wiso ha scritto:

Aggiungi alla classe Classe il seguente copy-constructor:
     Classe(const Classe & classe):
     pair<float,float>(classe.a, classe.b), a(first), b(second) {
     cout << "costruito di copia\n";};
La costruzione del vector crea una copia temporanea dell'oggetto di tipo 
Classe, e da questo ne crea n copie.
Il copy-constructor implicito inizializza i campi a e b delle 10 istanze 
a riferirsi agli omonimi campi dell'oggetto temporaneo. Quando questo 
viene distrutto, le 10 a e le 10 b si riferiscono a spazzatura.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 ho un problema che proprio non capisco, dovrebbe essere molto semplice:
come sempre, grazie mille a tutti
Newsgroup: it.comp.lang.c++
Titolo: Version Informations in C++ Builder

Ciao a tutti!
Vorrei sapere se esiste un metodo per ricavare da codice le informazioni
sulla versione
mostrate nella dialog "Project Options/Version Info" del Builder 5 Pro;
mi spiego meglio: considerando che esistono delle macro che ad esempio
contengono
la linea di codice corrente ed altre cosette utili, mi chiedo se ne esista
una che viene
espansa nel numero di versione del progetto, in modo da far cambiare
dinamicamente
tutte le informazioni riguardanti la versione del programma agendo solo
dall'apposita dialog e ricompilando tutto.
Grazie e chiunque risponda.
------------------------------------------
Paolo
paoloc...@hotmail.com


sono contenute nel file .res che ha lo stesso nome del progetto, solo
che il file e' binario...
-- 
Ciao, gengisdave
http://digilander.iol.it/gengisdave

Scusa, ti invio direttamente il codice di un mio modulo che fa proprio
quello che ti serve... funziona con le VCL di BCB, anche se non
sarebbero necessarie... vedi tu...
/*
VersionEx : Version Extension
NOTE
non necessiterebbe delle VCL
VERSION HISTORY
1.0:    prima versione
1.01:   corretto piccolo bug, c'era ancora un Application->ExeName
*/
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "VersionEx.h"
VS_FIXEDFILEINFO *Vfi;
void retrievevfi(AnsiString sFileName);
//---------------------------------------------------------------------------
#pragma package(smart_init)
void retrievevfi(AnsiString sFileName)
{
    DWORD d, c = GetFileVersionInfoSize(sFileName.c_str(), &d);
    if (!c) Vfi = NULL;
    char *buffer = new char[c];
    GetFileVersionInfo(sFileName.c_str(), NULL, c, buffer);
    unsigned int vfi_len;
    VerQueryValue(buffer, "\\", (void **) &Vfi, &vfi_len);
}
AnsiString __fastcall GetFileVersionString(AnsiString sFileName)
{
    retrievevfi(sFileName);
    if (!Vfi) return "";
    unsigned int maj, min, rel, bld;
    maj = (Vfi->dwFileVersionMS & 0xffff0000) >> 16;
    min = Vfi->dwFileVersionMS & 0x0000ffff;
    rel = (Vfi->dwFileVersionLS & 0xffff0000) >> 16;
    bld = Vfi->dwFileVersionLS & 0x0000ffff;
    AnsiString retval;
    retval = AnsiString(maj) + "." + AnsiString(min);
    if (rel) retval = retval + " beta " + AnsiString(rel);
    if (bld) retval = retval + " build " + AnsiString(bld);
    return retval;
}
unsigned int __fastcall GetFileVersionMajor(AnsiString sFileName)
{
    retrievevfi(sFileName);
    if (!Vfi) return 0;
    return (Vfi->dwFileVersionMS & 0xffff0000) >> 16;
}
unsigned int __fastcall GetFileVersionMinor(AnsiString sFileName)
{
    retrievevfi(sFileName);
    if (!Vfi) return 0;
    return Vfi->dwFileVersionMS & 0x0000ffff;
}
unsigned int __fastcall GetFileVersionRelease(AnsiString sFileName)
{
    retrievevfi(sFileName);
    if (!Vfi) return 0;
    return (Vfi->dwFileVersionLS & 0xffff0000) >> 16;
}
unsigned int __fastcall GetFileVersionBuild(AnsiString sFileName)
{
    retrievevfi(sFileName);
    if (!Vfi) return 0;
    return Vfi->dwFileVersionLS & 0x0000ffff;
}
Newsgroup: it.comp.lang.c++
Titolo: encoding dei sorgenti

Una domanda banale, anche se la risposta non credo che lo sia.
Non so se lo standard dica nulla in merito, ma un sorgente che codifica 
può o deve avere?
Oltre a questo, ovvero oltre lo standard, il gcc e il msvc come si 
aspettano che sia codificato un sorgente da compilare?
Utf-8 per il gcc e windows-1252 per il compilatore microsoft?
In sintesi per scrivere del codice simile:
const char *p[] = "€";
come questo:
const wchar_t* q[] = L"òàùèì";
devo prima sapere con che encoding salvare il sorgente che poi andrò a 
compilare.

 compilare.
Secondo me ti conviene fare un po' di prove, anche perche' non e' detto 
che gcc si comporti uguale in tutte le piattaforme (anche in dipendenza 
da impostazioni dell'utente).
  bye
	av.

 compilare.
Devi vedere se con il compilatore che usi puoi specificare l'encoding del 
file, perchè altrimenti il compilatore utilizzerà probabilmente l'encoding 
specificato per il locale corrente.
Per il GCC e VCC ho trovato, dopo una veloce ricerca:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15500
http://stackoverflow.com/questions/1660712/specification-of-source-
charset-encoding-in-msvc-like-gcc-finput-charsetcha
In particolare, il GCC ha le opzioni:
-fexec-charset=charset
-fwide-exec-charset=charset
-finput-charset=charset
[1] WG14/N1256 Committee Draft — Septermber 7, 2007 ISO/IEC 9899:TC3
Ciao  Manlio

 specificato per il locale corrente.
Se questa cacca di google news funzionasse ti avrei evitato la fatica
di postare. Per un post che arriva, due si perdono nel nulla.
Anche se così però mi sarei privato della sorpresa di scroprire che
non leggi solo i news group su Python :-)
Alla fine della fiera a me interessano solo il GCC e MSVC. Forse
domani anche il MinGW, ma è una battaglia aziendale ancora da
combattere quella. Di fatto tutti e due i compilatori accettano di
buon grado UTF-8, che come scelta multipiattaforma, almeno nel mio
caso, è la più comoda. Non ho cercato di capire che GCC accetta codice
codificato UTF-8 con il preambolo, ma essendo uno standard mi aspetto
di si.
La mia sorpresa è stata scoprire che di default per il GCC un wchar_t
è a 4 byte, che mi sembra una scelta un poco sprecona. Anche se dal
punto di vista strettamente tecnico la più "corretta" da certi punti
di vista algoritmici.
Sono poi rimasto ancora più sorpreso che la codifica tra stringhe di
wchar_t e l'encoding corrente è stato standardizzato, ma non sono
riuscito a farlo funzionare. Almeno non usando codice C++, ma solo con
codice C :-(. Poi windows e linux usano per i locali stringhe
identificative differenti, il che è una rottura fi scatole infinita.
E pensare che tutto e nato dalla necessità di avere una libreria
multipiattaforma sull'I/O. Il problema che ho è sui nomi dei file e
delle eventuali stringhe "costanti" dentro il codice. Per quel che mi
interessa le API di accesso al file system di Linux usano codifiche
UTF-8, mentre da tempo immemorabili su Windows sono UTF-16. Boost, che
personalmente mi sta molto sulle scatole, il problema lo risolve. Ma
non nel modo in cui noi lo usiamo in azienda.
Ciao, e grazie a tutti quelli che mi hanno risposto.
Newsgroup: it.comp.lang.c++
Titolo: Database - Accesso ad Access

Se usi il Visuali C++ versione 1.51 (16 bit) devi usare direttamente le
funzioni ODBC. Dalla versione 2.0 in poi ci sono delle classi (che io non
ho ancora usato).
Sulla versione 5.0 ci sono dei wizard che ti permettono di creare lo
scheletro di un'applicazione di accesso a database.
Inoltre il class wizard ti permette di associare una classe di passaggio
tra le variabili del programma ed i campi delle tabelle specificando per
ogni campo il nome del membro della classe.
Scusa se sono un po' vago ma ho fatto solo alcune prove.
Se invece usi il Visual Basic le cose sono piu' semplici: puoi utilizzare
in modo visuale i DataControl per accedere a tabelle o query su database e
collegare i controlli dei form ai campi del data control.
In alternatvia da codice ci sono degli oggetti (database, table, snapshot,
dynaset, etc.) che ti permettono di aprire tabelle, cercare, aggiungere e
tutto il resto.
Dal Visual Basic 4.0 puoi utilizzare delle griglie (DBGrid) per vedere
l'intera tabella o associare una tabella ad una list box (DBList).
Ciao.
-- 
Antonio Donatiello
anto...@sanpaolo.com

Come si fa a "collegarsi" ad un database Access ? 
dipende da quale compilatore usi, il Visual C++ 5.0 come gia' le
versioni precedenti, contiene un insieme di classi e di wizard che
rendono l'accesso ai database Access molto semplice.
Gianpaolo Bottin
- Live Long and Prosper -

Newsgroup: it.comp.lang.c++
Titolo: rinominare un file

 > int rename(const char *oldname, const char *newname);
In un file C usa "#include <stdio.h>" ma in un file C++ dovresti usare "#include
<cstdio>".
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556
Newsgroup: it.comp.lang.c++
Titolo: cast

Ciao,
In C posso scrivere:
void *linealg;
double (*stepf)(struct OPTIMIZER *opt, double *dir, double stepsz);
stepf = linealg;
Ma in C++ viene visualizzato il seguente messaggio di errore:
ANSI C++ forbids implicit conversion from `void *' in assignment
Come posso risolvere il problema?
Grazie in anticipo,
Maurizio

 Come posso risolvere il problema?
void *linealg;
typedef double (*PF)(struct OPTIMIZER *opt, double *dir, double stepsz);
PF stepf;
stepf = (PF)linealg;
Pela

 wrote in message
news:3BEBDB48...@diit.unict.it...

Idealmente in C++ dovresti cercare di evitare l'uso di void* (tranne che
per rarissimi casi in cui stai manipolando semplicemente memoria che non
contiene nulla, come nel caso degli overload di new e delete).
In alternativa puoi sempre usare un cast.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

Newsgroup: it.comp.lang.c++
Titolo: stray '\240'

Come mai quando vado a richiamare una mio listato in c++(anche MOLTO)
semplice,mi appare l'errore  stray '\240'  ?Nessuno di voi saprebbe dirmi a
cosa è deovuto.
Grazie!

 a cosa č deovuto.
Nel tuo sorgente č rimasto qualche carattere NO-BREAK SPACE (ISO 8859-1, 
dec 160, oct 240). Scopri come c'č arrivato ed eliminalo.
Max

Newsgroup: it.comp.lang.c++
Titolo: HELP Puntatori di puntatori

Sono un principiante e ho bisogno di chiarire alcune cose:
Io so che per dichiarare un puntatore e assegnarlo ad una variabile si
scrive per es. :
int i;
int *pi=i;
con cout<<*pi; visualizzo il contenuto di i mentre se scrivo
cout<<pi visualizzo l'indirizzo di memoria;
In questo caso invece:
 double** m;
 m = new double *[dimr];
 for (int i=0; i<dimr; i++){
  m[i] = new double [dimc];
 }
for (int a=0; a<dimr; a++){
  for (int b=0; b<dimc; b++){
   cout<<"Inserire il "<<cont<<" elemento della matrice : ";
   cin>>dato;
   *m[b]=dato;
   cont++;
  }
 **m++; è giusta questa dichiarazione per far avanzare di una posizione il
mio puntatore di puntatori, indicando cos' il vettore successivo????
Per favore aiutatemi GRAZIE MILLE!!!!!!

 
 Un semplice m++ andava bene.
Acc, mi accorgo solo ora che sei lo stesso a cui giorni fa avevo suggerito
di usare vector<T> anzichè gli array.  Beh, come non detto, sarà qualche
tipo di idiosincrasia. :-)
Max
Newsgroup: it.comp.lang.c++
Titolo: Cbuilder... Posso usare il c?

Salve avendo trovato il cbuilder 3 in una rivista ho pensato
perche non cominciamo a studiare il cpp?
Volevo pero' farvi una domanda riguardo questo ambiente di sviluppo	
Volevo sapere se posso includere dei file fatti in ansy c dentro i
miei prog fatti in cpp...
Grazie
--------------------------------------------------
Brayan Fix Kirys Solfory
E-Mail: 
Ki...@technologist.com
 
For Free Software go to: 
http://Kiryssoft.cjb.net

miei prog fatti in cpp...
Ehm... ANSI C....
Certo, lo puoi fare con qualche accortezza sull'uso dei nomi.
Vedi l'utilizzo di 'extern "C"'.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------
"There is nothing better for understanding a kangaroo
 than seeing it jump." [D.Grune, C.J.H. Jacobs]
-----------------------------------------------------

Vedi l'utilizzo di 'extern "C"'.
Ok grazie

Newsgroup: it.comp.lang.c++
Titolo: Specializzazione parziale template ed operatori

Salve,
in una classe
template < typename Real, int SIZE >
class UVector
{
...
definisco l'operatore * per il prodotto Scalare per un vettore in questo
modo:
template< typename Scalar, typename Real, int SIZE >
	friend UVector< Real, SIZE > operator*( const Scalar & S, const
UVector< Real, SIZE > & V );	// S * V		
l'implementazione:
// S * V
template< typename Scalar, typename Real, int SIZE >
UVector< Real, SIZE > operator*( const Scalar & S, const UVector< Real,
SIZE > & V )
{
	UVector< Real, SIZE > Result;
 
	Result = V*S;
 
	return Result;
}
Compilato senza problemi.
Se nel main pero' cerco di invocare l'operatore ( con un'istruzione tipo
: '3.0f * a' con a di tipo UVector< float, 2 > ) ottengo il simpatico
internal compiler error:
Compilazione in corso...
main.cpp
xxxxxxxx\main.cpp(20) : fatal error C1001: ERRORE INTERNO DEL COMPILATORE
         (file compilato "msc1.cpp", riga 2701)
         Per ulteriori informazioni, scegliere Supporto tecnico dal menu
? di Visual C++
         o aprire il file della Guida relativo al supporto tecnico.
Non riesco a capire quale parte di codice e' 'sporca'...
Grazie a tutti,
Bruno Ripa

Non riesco a capire quale parte di codice e' 'sporca'...
Non hai mostrato un esempio minimo compilabile che generi il
problema e quindi non ti so aiutare (capire dov'e' l'errore
in codice che non viene fatto vedere e' difficilino).
Ho visto anche in passato che codice errato che usa pesantemente
i template con VC++ spesso si traduce in un internal error invece
che in un messaggio di errore.
Comunque se puo' aiutare il codice che segue che ho scritto
al volo e che mi sembra minimale ma abbastanza simile a
quello che fai tu (un vettore n-dimensionale parametrizzato
sul campo scalare che definisce un prodotto per scalare
- anche di altro tipo - e che con v*k che rimanda a k*v)
da me compila sia con VC6 che VC2003.
HTH
Andrea
#include <iostream>
template<typename SType, int N>
struct UVector
{
    SType x[N];
    UVector()
    {
        for (int i=0; i<N; i++)
            x[i] = SType(0);
    }
};
template<typename SType, int N>
std::ostream& operator<<(std::ostream& s, const UVector<SType, N>& x)
{
    s << "(";
    for (int i=0; i<N; i++)
        s << " " << x.x[i];
    s << " )";
    return s;
}
template<typename SType, int N, typename FType>
UVector<SType, N> operator*(FType k, const UVector<SType, N>& v)
{
    UVector<SType, N> v1;
    for (int i=0; i<N; i++)
        v1.x[i] = v.x[i] * k;
    return v1;
}
template<typename SType, int N, typename FType>
UVector<SType, N> operator*(const UVector<SType, N>& v, FType k)
{
    return k * v;
}
int main()
{
    UVector<double, 2> p;
    p.x[0] = 10;
    p.x[1] = 20;
    std::cout << p*2 << 2.3121*p << "\n";
    return 0;
}
Newsgroup: it.comp.lang.c++
Titolo: __declspec(thread)

Qualcuno sa dirmi se la direttiva
__declspec(thread)
e' portabile o specifica del Visual C++ ?
In questo caso esiste un modo standard per
allocare variabili statiche relative a un thread ?
Grazie in anticipo
Simone

 allocare variabili statiche relative a un thread ?
Non vi e` nessun modo in C++ Standard di fare
nulla di specifico relativamente ai thread.
Alex

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

Sono un programmatore alle prime armi.
Vorrei chiedervi se esiste un sito o un CD-ROM che contenga un tutor
(possibilmente in italiano) che aiuti per esercizio a fare semplici
programmi interattivamnte.
Grazie per le eventuali risposte.



In italiano puoi trovare un tutorial scritto da me tempo fa all'indirizzo
http://www.geocities.com/SiliconValley/Foothills/6336
 
Non e` aggiornato allo standard, ci sto lavorando, ma ti potrebbe
comunque aiutare a capire comunque i concetti di base.
Paolo
----------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  e-mail: 
mar...@cli.di.unipi.it
 
----------------------------------------------------------

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

Cerco materiale di c++(appunti esercizi ecc) !!!
Grazie in anticipo


cosa in particolare ??
Newsgroup: it.comp.lang.c++
Titolo: AIUTOOO!!!! link librerie Vc++6.0

Esiste qualcuno che sappia dirmi se è possibile  in qualche modo linkare
librerie Vc++6.0 con Vc++5.0 ???
Grazie 1000 a chiunque abbia la cortesia di rispondermi.
--
Giancarlo Cadei
---------------------------------------------
E-mail:
 
g...@softsolutions.it
---------------------------------------------

librerie Vc++6.0 con Vc++5.0 ???
Almeno in teoria...: se le librerie e gli oggetti sono tutti "a release",
cioe` rigorosamente privi di informazioni di debug, non dovrebbe
essere necessario fare niente di particolare; se l'uno o l'altro ha
informazioni a debug, probabilmente non si puo` fare; se le hanno
tutti e due, _sicuramente_ non si puo` fare.
In altri termini: il formato "base" degli oggetti e librerie non e`
cambiato; le info di debug sono invece cambiate radicalmente
(per supportare le tante nuove feature del debugger).
Il tutto, come dicevo, "in teoria", perche` qui non abbiamo ancora
cominciato a "mischiare le carte" in questo modo...
Alex

Newsgroup: it.comp.lang.c++
Titolo: Richiesta di aiuto

Ciao ragazzi,
sono un nuovo membro del ng
e vorrei che qualcuno mi spiegasse le funzioni in informatica
Grazie in anticipo

 ha scritto nel messaggio
news:2KtJ7.113170$sq5.5...@news.infostrada.it...

Guardati in tutorial di Paolo Marotta, che puoi trovare al seguente
indirizzo:
http://www.programmazione.it/Articles/corso/index.htm
Ciao,
Cecco

Newsgroup: it.comp.lang.c++
Titolo: Programmare applicazioni TCP/IP

Ciao!
 Mi trovo nella necessita' per un progetto di realizzare un semplice
programma in architettura client / server.
In pratica dovrebbe fare una connessione testuale al server e
interpretare le risposte.
Sia client che server programmati in c++.
Qualcuno conosce spunti, siti, librerie gia' pronte?
Grazie!

 wrote in message
news:6bPgOEQPC0Jkvr...@4ax.com...


Cerca 'socket' nella tua documentazione.
il problema e' che dovrebbe essere il piu' portabile possibile... che
tu sappia esistono librerie ANSI da poter usare?

 wrote in message
SNDpOEiKf4MP8e...@4ax.com...

No.  Ma le socket ("alla Berkeley") sono, pragmaticamente
parlando, piuttosto portatili.
Alex

 tu sappia esistono librerie ANSI da poter usare?
quello che fa per te sono sicuramente le librerie APE
sono multipiattaforma , includono anche molte altre funzionalita'
,sono coperte dalla licenza d'uso GNU GPL 
le puoi trovare:
http://www.voxilla.org/projects/projape.html
-- 
=========================================
 HELP!! ... per rispondere rimuovere
  il virus WINZOZZ dalla mia e-mail !!!
=========================================

 
Un'altra interessante soluzione è ACE (Adaptive Communication Environment)
 
http://www.cs.wustl.edu/~schmidt/ACE.html
Max
Newsgroup: it.comp.lang.c++
Titolo: Aiuto!!! Stampa!

Salve a tutti,
sto cercando di imparare a stampare in c++ tramite le sole API di windows,
quindi senza usare MFC o OWL...
Ho cercato degli esempi tra le cartelle del Borland c++ 4.52 che ho
acquistato tempo fa, ho cercato tra i manuali del
compilatore, tra altri 4 manuali che ho acquistato in libreria, tra una
marea di tutorial su internet, ma niente, di stampa
su windows usando le sole API non c'e' traccia...
Ho gia' mandato una richiesta giorni fa, ma quello che ho ottenuto (da
persone tra l'altro gentilissime),
e' di sentirmi dire che e' facile, che e' come scrivere su una finestra,
ecc...ecc...
Mi hanno mandato frammenti di codice allo scopo, ma essendo alle prime armi
non sono assolutamente in grado di
implementare quei codici in un programma funzionante... :-(((
Ora, vi chiedo, visto che la cosa per tanti e' cosi' semplice (per me
assolutamente no!!!!)
Se c'e' una persona cosi' gentile da mandarmi uno straccio di programmino
che mi stampi "Ciao Mondo" su una stampante generica, in modo che io possa
studiarmelo ed imparare questa cosa, avra' la mia gratitudine, e magari una
copia del programmino semplice semplice che dovrei scrivere (se questo gli
puo' interessare....).
L'eventuale sorgente me lo potete mandare nel corpo del messaggio sul
newsgroup, oppure come allegato in posta.
Grazie a tutti per l'attenzione,
Andrea

,

Charles Petzold, fin dalla prima edizione del suo libro,
dedica due capitoli interi alla stampa.
Piu' chiaro di cosi', direi che non e' possibile essere.
Se non impari da li' e dagli esempi dell'SDK ...
Sent via Deja.com 
http://www.deja.com/
Share what you know. Learn what you don't.
Newsgroup: it.comp.lang.c++
Titolo: "travasi" di indirizzi

salve a tutti
domanda a risposta secca:
definisco
int *a
posso fare una cosa del genere
a=x.mostraindirizzo()
dove mostraindirizzo è un metodo (di una classe) che restituisce come valore
di ritorno un puntatore ad un oggetto non int ma, in questo caso, una
struttura creata dall'utente?
credo che si possa fare ma forse con qualche accortezza ma quale?
purtroppo non posso la variabile a come puntatore a tale struttura da me
definita per questioni di ....... "astrazione dati" :-)
grazie a tutti per l'attenzione
ivan

"Ivan Sofa n.1" <dromeda...@inwind.itDELETE> wrote in message
news:jVS%9.82539$ZE.22...@twister2.libero.it...

Uhmmmmm.....
penso che a colpi di cast tu possa anche riuscire ad ottenere quello che
vuoi, ma col C++ ci sono miliardi di modi piu' puliti, forse un po' piu'
faticosi, per evitare queste furbate in stile C.
Descrivi un po' meglio questo tuo esempio e magari si puo' vedere come
sarebbe meglio fare.
Maurus

 ha scritto nel messaggio
news:b1oulr$15hf36$1...@ID-125555.news.dfncis.de...
CUT CUT CUT
| Descrivi un po' meglio questo tuo esempio e magari si puo' vedere come
| sarebbe meglio fare.
|
| Maurus
|
niente, ho già verificato che è un operazione non valida ma fortunatamente
ho trovato una soluzione di gran lunga migliore al mio problema utilizzando
un banalissimo typedef al punto giusto.... ah, l'astrazione dati! :-)))
grazie cmq e sayounara!
ivan
ps. purtroppo non posso verificare il funzionamento del mio programma
proprio per quel solito problema di .obj..... sob........ :-((

Newsgroup: it.comp.lang.c++
Titolo: restituzione puntatori

Se una funzione membro di una classe deve restituire un puntatore ad un 
array di interi, quali sono le giuste sintassi per la definizione e la 
dichiarazione?
                                                Grazie 



Francesco wrote:

IMHO, questo è il metodo migliore:
class Class
{
	typedef int vector[5];
public:
	vector * metodo()
	{
		static int dummy[5];
		return &dummy;
	}
};
ma se proprio vuoi divertirti:
class Class
{
public:
	int (* metodo())[5]
	{
		static int dummy[5];
		return &dummy;
	}
};
HTH
-- 
"E' solo dopo aver perso tutto che siamo liberi di fare qualsiasi cosa."
"buuuhhhhhhhhhhrrrrrrr"
Newsgroup: it.comp.lang.c++
Titolo: Piccolo sondaggio sui compilatori -in altre parole vorrei un consiglio :)-

Ciao a tutti. Non voglio assolutamente alimentare una polemica furiosa
-come ho gia' fatto a mio malgrado tempo fa riguardo Windows 95...-
sull'argomento: vorrei soltanto sapere quale compilatore usate e il
motivo per cui ne siete soddisfatti o meno. Non vorrei che da qui si
partisse verso un lungo thread dove ci si scanna solo commentando le
idee degli altri: vorrei piuttosto che ognuno esprimesse le proprie
mettendo in chiaro quelli che sono veramente i punti di forza. Siccome
di VC 5 non sono per niente contento mi devo decidere a comprare un
altro compilatore e, non sapendo quale scegliere, ho pensato di
rivolgermi a voi. Ringrazio fin d'ora chi vorra' perdere due minuti a
rispondermi.
Cordialmente,
Gianni Rondinini, programmer and designer at Pierre s.n.c.
e-mail: 
pie...@mail.asianet.it
homepage: 
http://www.geocities.com/SiliconValley/park/7666
Red Hat Linux 4.1 user since 6/16/97
Windows NT 4.0 Server user since 6/27/97
If a railstation is a place where trains stop, what is a workstation?

altro compilatore e,
Cosa ha VC5 che non va? (Non interpretare male la mia domanda: sto
solo chiedendo. Io uso il VC4.1 perche' mi e' capitato tra le mani...
per quello che devo fare io, uno vale l'altro.)
-Gabriele

...
In effetti il VC5 non ha avuto un gran successo...
Personalmente mi piacciono i prodotti Borland: il BC5 deve essere un ottimo
prodotto (io uso il BC 4.5) per lo sviluppo C/C++ tradizionale, altrimenti
il C++Builder offre la potenza del C++ con la facilita' del VB/Delphi
(assomiglia moltissimo a Delphi) ma preclude lo sviluppo di applicazioni
DOS. Se utilizzi le MFC ti consiglio di provare il VC 4.x (mi semra che
l'ultima versione sia la 4.2), che per me resta il miglior ambiente per
sviluppare con le MFC (sconsiglio di utilizzare il BC5 con le MFC anche se
le supporta, molto meglio utilizzare OWL/OCF).

 sull'argomento: vorrei soltanto sapere quale compilatore usate e il
...
Utilizzo abbondantemente Visual C++ 4.2 le precedenti (4.0 4.1) avevano
qualche problema, non ci si trova male, un po lento a compilare, ma per il
resto si fa decisamente molto, chiaramente la scelta della piattaforma e
dettata soprattutto
perche' e' microsoft, quindi fornisce piena compatibilità se si deve
sviluppare 
per win 95, si sente comunque molto la mancanza della possibilita' di
compilare
a 16 bit (potevano mettere delle opzioni per compilare per le vecchie
versioni).
Ho anche utilizzato abbondantemente il Borland C++ e devo dire che bene o
male
sono sullo stesso piano, utilizzati a fondo mostrano entrambi alcuni
problemi,
con un po di trucchi e pazienza comunque si risolve sempre tutto.
Saluti guido Besseghini
Newsgroup: it.comp.lang.c++
Titolo: Testo su CLICK

Salve,
vorrei sapere il comando sotto windows 95 per visual c++ che sul click di
un tasto faccia comparire del testo da me scritto su un oggetto di un
dialog.
Se sono stato poco chiaro scusatemi ma non č colpa mia poichč ho iniziato
da poco a usare il c e non so proprio nulla
Se non vado errato il comando LOADSTRING dovrebe fare al caso mio.
Siate molto chiari nella risposta.
GRAZIE MILLE
lapa...@iqsnet.it



Newsgroup: it.comp.lang.c++
Titolo: Containment classes

hi
This  is particular to    Containment classes .. ( just taking an
example from rougewave )
Can someone  point out How  destrutor of new RWDate(2, "Nov", 1980)
will be called?
 Is is our responsibilty to call it or     such container after deleting
the list element calls  the destuctor also .
Will appreciate any pointer in this regard  ..
RWTPtrHashDictionary<RWCString, RWDate>
birthdays.insertKeyAndValue (new RWCString("Ivan"),  new RWDate(2,
"Nov", 1980)    );
Thanks
CAdiga
#include <rw/tphdict.h>
#include <rw/cstring.h>
#include <rw/rwdate.h>
#include <rw/rstream.h>
main()  {
  RWTPtrHashDictionary<RWCString, RWDate>
    birthdays(RWCString::hash);
  birthdays.insertKeyAndValue
    (new RWCString("John"),
     new RWDate(12, "April", 1975)
    );
  birthdays.insertKeyAndValue
    (new RWCString("Ivan"),
     new RWDate(2, "Nov", 1980)
    );
  // Alternative syntax:
  birthdays[new RWCString("Susan")] =
    new RWDate(30, "June", 1955);
  birthdays[new RWCString("Gene")] =
    new RWDate(5, "Jan", 1981);
  // Print a birthday:
  RWCString key("John");
  cout << *birthdays[&key] << endl;
  birthdays.clearAndDestroy();
  return 0;
}

 "Nov", 1980)    );
Do you really need all those pointers and that dynamic allocation? Looks
unneccesary to me. If you don't use dynamic allocation with new, you
don't need to care about deleting the object.
Newsgroup: it.comp.lang.c++
Titolo: Informazioni sulla gestione dell'ereditarietà

Salve a tutti,
sono alcune settimane che sto studiando il C++ e ora avrei bisogno di un 
aiuto nella gestione del meccanismo di ereditarietà delle classi.
Nel progetto che sto sviluppando ho una classe Padre (TElement) che 
rappresenta il genenerico elemento, da cui discendono tre classi che 
implementano tre tipi diversi di questo elemento;
Il mio scopo era quello di utilizzare questo generica classe padre per 
poter dichiarare un generico oggetto di tipo TElement e poi, a seconda 
dell'elemento specifico che avevo bisogno di utilizzare, assegnare un 
oggetto di una delle 3 classi specializzate.
Infatti, era mia intenzione utilizzare un oggetto TElement in una classe 
utilizzatrice, che però non poteva discriminare, se non di volta in 
volta, quale implementazione delle tre classi utilizzare
Nella programmazione ad oggetti ho avuto esperienze con Delphi 2.0, e 
ricordo che si poteva dichiarare una variabile come generico TObject, e 
assegnare successivamente un qualsiasi oggetto di una classe discendente 
di TObject.
Cosè che non riesco a capire? E' la stessa cosa quella che cerco di 
fare? Se si, come posso implementarla in C++?
Grazie per l'aiuto.
-- 
Posted from 195.223.88.226 by way of 
smtp3.libero.it
 [193.70.192.53] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Basta che usi un puntatore o un reference alla tua classe padre:
class Padre {};
class Figlio : public Padre {};
int main() {
  Padre * p = new Figlio;
}

 fare? Se si, come posso implementarla in C++?
Devi tenere presente alcune cose. Le funzioni membro della classe base
che devono essere ridefinite in quelle derivate devono essere dichiarate
virtual se si vuole attivare per esse il polimorfismo. Il polimorfismo
stesso avviene solo se la variabile di classe base è un puntatore o un
reference ad essa. Es.:
#include <iostream>
class Base
{
    public:
        virtual void f() = 0;
};
class Deriv1: public Base
{
    public:
        void f() { std::cout << "Deriv1::f()" << std::endl; }
};
class Deriv2: public Base
{
    public:
        void f() { std::cout << "Deriv2::f()" << std::endl; }
};
int main()
{
    Base *p1 = new Deriv1;
    Base *p2 = new Deriv2;
    p1 -> f();
    p2 -> f();
    delete p2;
    delete p1;
}
EMG
Newsgroup: it.comp.lang.c++
Titolo: aiuto!!

supposta A essere una classe e getnumber un suo metodo:
che differenza passa tra:
const int A::getnumber() const {/* corpo*/}
e
int A::getnumber() const {/*corpo*/}
so il significato della seconda ma non della prima.
la seconda dovrebbe essere una funzione che non modifica gli attributi della
classe ovvero i dati membro.
mentre la prima compare per incanto nel testo che sto leggendo senza
spiegazione (speriamo che non siano la stessa cosa!)
ugo ariu

 spiegazione (speriamo che non siano la stessa cosa!)
Il "const" sul valore di ritorno e` irrilevante se stai tornando
un tipo builtin; ha rilevanza solo se stai tornando un tipo che
a sua volta abbia dei metodi (sul valore tornato puoi chiamare
solo un metodo const se il valore tornato e` const).
Alex

 classe ovvero i dati membro.
Esatto.
EMG

 solo un metodo const se il valore tornato e` const).
Più che giusto!
EMG
Newsgroup: it.comp.lang.c++
Titolo: Partizioni: identificare il tipo!!!

Ciao a Tutti,
    ho una piccola idea, ma mi occorre identificare il tipo delle
partizioni, prima di implementarla.
Vorrei sapere dove andare a leggere il codice che identifica, nel hd, il
tipo della partizione, o se esiste una fiunzione che lo fa?
P.S sotto linux!!!
Grazie a Tutti!!!
    Homer!!!

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

 ha scritto nel messaggio
news:3CCD75F6...@divalsim.it...

Grazie, proverò!!!
    Homer!!!
Newsgroup: it.comp.lang.c++
Titolo: Input di tasto da tastiera senza interrompere esecuzione

Voglio riporre una domanda che ho gia' posto sul newsgroup, precisando qui
quello che vorrei ottenere.
Vorrei sapere il modo per gestire la tastiera, senza utilizzare librerie
particolari (tipo Allegro), per ottenere il risultato della pressione di un
tasto senza interrompere l'esecuzione. Mi serve per realizzare giochi.
Pensate ad esempio ad un'astronave pilotata da tastiera che deve muoversi in
alto e in basso. Il programma deve "ascoltare" l'input da tastiera, ma non
interrompere la gestione del resto dell'animazione. In QBasic si risolveva
tutto semplicemente con un'istruzione inkey$ inserita in un loop.
Kaos.

 ha scritto nel messaggio
news:kymq8.52608$S52.1...@news2.tin.it...


tasto senza interrompere l'esecuzione
Non puoi, il C++ standard non lo permette, devi per forza usare una
libreria esterna.
-- 
Marco Barisione (ICQ 84277092)

 if (getch()==77) file://RIGHT


 wrote in message
jv4kaucs15kv299d3...@4ax.com...


Un'anima pia di questo newsgroup ha risolto il mio problema. Vi lascio le
linee di codice. A me sembra funzioni bene.
#include <conio.h>
#define NOKEY    0
int readKey (void)
{int ch1 = NOKEY, ch2 = NOKEY;
 if (kbhit () && (ch1 = getch ()) == NOKEY)
  ch2 = getch ();
 return (ch1 + (ch2 << 8));
}
eheheh:


 }
mlonews@mlinux 5 $ g++ -ansi -Wall -pedantic -c -o foo.o foo.cxx
foo.cxx:1:19: conio.h: No such file or directory
foo.cxx: In function `int readKey()':
foo.cxx:8: `kbhit' undeclared (first use this function)
foo.cxx:8: (Each undeclared identifier is reported only once for each function 
   it appears in.)
foo.cxx:8: `getch' undeclared (first use this function)
mlonews@mlinux 6 $
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it

 > Marco Barisione (ICQ 84277092)
1) Quota;
2) Ammesso che Marco avesse avuto torto, un'inutile ed infantile risatina
non ha apportato nulla al NG se non qualche riga di spazzatura ed un gran
senso di fastidio nei tuoi confronti;
3) Marco aveva ragione.
Lokar

 senso di fastidio nei tuoi confronti;
Dire che sei esagerato e' pochino. Mi spiace che tu abbia interpretato in
quel modo il mio "eheheh" che aveva  tutt'altro significato. Mi ferisce il
senso di fastidio che tu provi nei miei confronti. Perche' frettoloso e
ingiustificato.
Kaos.

 ingiustificato.
Il senso di fastidio e' giustificato dal fatto che invii messaggi fuori
tema. Forse piu' che ferito dovresti sentirti in colpa ;-)
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: problema in fase di linking

salve,
non riesco a risolvere questa cosa:
ho un progetto con più moduli cpp. Ho definito tutte le variabili
globali in un unico file header che includo in tutti i moduli. Per
evitare definizioni multiple uso questo codice all'inizio dell'header:
#if !defined( globals_h)
define globals_h
var e funzioni globali;
#endif
ma nonostante questo il compilatore mi dà errore lo stesso! Perchè?!
Uso il visual c++ 6.0. L'errore è LNK2005: (variabile qualsiasi)
already defined in (primo modulo compilato)

 define globals_h
Questo serve a evitare dichiarazioni multiple nell'ambito della stessa
unità di compilazione. Non impedisce che moduli diversi incorporino la
stessa definizione.
Le variabili globali e i membri statici devono essere definiti una sola
volta in un solo modulo.
*Dichiara* le variabili globali con 'extern' in un file header:
  extern int pippo;
*Definsci* le variabili soltanto una volta in un file .cpp:
  int pippo = 10;
Max


prima facevo così, ma non so perchè non riesco più a dichiarare extern
le strutture! Mi dà un sacco di errori in fase di compilazione.

 wrote in message
3bf7c2b2...@news.ipsnet.it...

Scusa, ma cerca di essere più preciso. La struttura descritta da marble è
quella giusta, percui cerca di isolare il problema (cioè definisci una sola
variabile per esempio) e riporta il messaggio di errore...


niente, errore banale, sono riuscito a metterlo a posto =)
Newsgroup: it.comp.lang.c++
Titolo: Come creo una DLL con il Builder 5?

Stò cercando di creare una DLL e un programma EXE che legga una sua
funzione. Riporto di seguito prima il codice della DLL e poi quello
del cpp che legge la funzione della DLL. Compilando il tutto il
programma sembra funzionare ma appena il cpp cerca di leggere la DLL
va in errore .... dove sbaglio??
GRAZIE
DLL
#include <windows.h>
/
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*
lpReserved)
{
        return 1;
}
extern "C" __declspec(dllexport) int Anno();
int Anno()
{
return 1;
}
CPP
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
extern "C"  __declspec(dllimport) int Anno() ;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int str1;
str1 = Anno();
}
//---------------------------------------------------------------------------
Ovviamente la funzione Anno() non fa niente ma mi serve solo come
esempio.

 Stň cercando di creare una DLL e un programma EXE che legga una sua


Newsgroup: it.comp.lang.c++
Titolo: Buon manuale di C++

Dove posso trovare sul Web un buon manuale di C++ ?
Come posso sostituire la chiamata system("rename file1 file2") senza il Dos?
 grazie

 Dove posso trovare sul Web un buon manuale di C++ ?
c'e' un bel URL di C++ FAQ e C++ per Newbies (senza offesa)
http://www.toothworks.co.uk/michael/faq.html
http://www.informatik.uni-konstanz.de/~kuehl/cpp/cppfaq.htm/
per un riferimento `completo' non posso aiutarti. Mi permetto pero' di
consigliarti l'acquisto di un libro di riferimento piuttosto che
sfoglaire un manuale gigante on line.
Massimo
cut "pippo" out when using the address below.
---------------------------------------------
Massimo Pinto - Ph.D. Student
pi...@pippo.graylab.ac.uk
Sent via Deja.com 
http://www.deja.com/
Before you buy.
Newsgroup: it.comp.lang.c++
Titolo: PANICO: I/O hard in Builder,,,

Salve a tutti....
tra un pň butto il computer dalla finestra. Mi sta prendendo un
nervoso...
Sono 3 giorni che provo a fare un I/O sulle porte Hardware della
macchina e non ci riesco.
L'unica cosa che ho trovato č un esempio, nel C++ Builder che utilizza
la CONIO.h e le funzioni "outb" "outportb" eccetera...
Unico problema non funziona neanche l'esempio!  
Quando compila dire "Undefined function"
Vi prego, se qualcuno mi sa dire cosa diavolo succede...
Non so piů che fare.
Grazie.
Un povero disperato.....
Yuri Selvaggi (
yur...@netlab.it
)

Unico problema non funziona neanche l'esempio!  
non conosco il C++ Builder, ma con il Visual C++ a 32bit il problema
e' analogo, le inp e outp ci sono solo nelle librerie statiche ma non
nelle DLL. Qualcuno ha pensato bene che i programmi a 32bit non hanno
bisogno di fare accedere direttamente alle porte di I/O, l'unica
soluzione e' scrivere due funzioncine in assembly, magari inline, e
richiamarle al posto di quelle di libreria.
Attenzione pero' che l'accesso diretto all'hardware funziona solo in
win95, NT invece si arrabbia moltissimo.
Gianpaolo Bottin
- Live Long and Prosper -

 Yuri Selvaggi (
yur...@netlab.it
)
Non conosco l'argomento, non avendo mai avuto occasione di usare
direttamente le porte hw, ma ho visto delle informazioni in alcuni siti
web (naturalmente in inglese).
Trovi sicuramente qualcosa su 
http://www.cbuilder.dthomas.co.uk/
Puoi anche dare un'occhiata all'archivio del gruppo di discussione
cpb-thread
(
http://www.reference.com/cgi-bin/pn/listarch?list=CPB-T...@zdtips.com
oppure 
http://www.hamline.edu/~wnk/cpb/
) e ai newsgroups Borland su BCB.
Newsgroup: it.comp.lang.c++
Titolo: funziona la .. funzione setftime del BORLAND++??

dovrebbe servire a cambiare la data di creazione di un 
file.in
 realta' la
modifica .. ma azzera la size del file e pertanto è illegibile.
mi sapete spiegare il perchè ?
ecco il listato : #include <stdio.h>
#include <process.h>
#include <fcntl.h>
#include <io.h>
void main(void)
{
   struct ftime filet;
   FILE *fp;
   if ((fp = fopen("TEST.$$$", "w")) == NULL)
   {
      perror("Error:");
      exit(1);
   }
   filet.ft_tsec = 1;
   filet.ft_min = 1;
   filet.ft_hour = 1;
   filet.ft_day = 1;
   filet.ft_month = 1;
   filet.ft_year = 21;
   setftime(fileno(fp), &filet);
   fclose(fp);
+    return 0;
}

franco ha scritto:

Credo il problema stia nel fatto che apri il file soltanto con l'opzione "W"
che forse ti causa un troncamento a zero del file quando lo richiudi.
Prova ad aprirlo in append o in modalità "lettura + scrittura" eventualmente
in modalità binaria e prima di chiuderlo fai un fseek a fine file.
Ciao by Lucio.