mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Stranezze di #include

Avevo gia' postato questa mail da altro indirizzo, ma ancora
non la vedo pubblicata:
Buongiorno, ho uno strano problema.
Compilo sotto linux.
E' un progetto con vari file .h,
molti dei quali hanno #include <string> .
In uno solo di quei file ho un problema di compilazione,
poniamo che sia file1.h.
file1.h:
# include <string>    // o <string.h>
...
string miastringa;
...
...
...
Compilo tutto il progetto e 
(Ora non ho la riga esatta di output, ma il concetto e':)
error: 'string' is used as a type, but not defined as a type.
SOLO in file1.h mi da' quel problema.
Se tolgo quella riga e la aggiungo negli altri, funziona.
Togliendo dal mio file1.h la direttiva #include <string> 
non cambia nulla, quindi e' come se non venisse letto il file
string.h .
Ho il sospetto che siccome il file string.h viene gia' richiamato da
altri file .h, in questo caso viene "ignorato", infatti anche string.h
sfrutta il meccanismo
#ifndef STRING_H
..
..
#endif
Ma SE il file e' gia' stato letto, allora le definzioni del tipo 
string dovrebbero esistere, perche' quell'errore?
Spero di essermi spiegato, grazie in anticipo.

 SOLO in file1.h mi da' quel problema.
Evidentemente negli altri hai una direttiva using:
using namespace std;
Ciao,
Nicola

On Mon, 20 Feb 2006 02:56:30 -0800, Nicola Musatti wrote:
Effettivamente stavo confondendo string con string.h,
anche perche' #include <string> porta effettivamente a leggere anche
string.h, lo si vede dalla data di accesso.
Il tutto e' nato da una pura distrazione, avevo semplicemente
dimenticato la direttiva using, anche se, ovviamente, ero convinto che ci
fosse ;)
Grazie mille.


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

Finora per assegnare il valore di a ad un' altra variabile b(facciamo che
siano interi) tramite
puntatore usavo int b=*p(p punta ad a), ho perň scoperto che un'altro modo
per fare la
stessa cosa č: int b=*(int *) p
Me la spiegate per cortesia?
 perchč non l'ho capita per nulla!!
 "(int *) p" che vuol dire?
Grazie e scusate la domanda banale!

stessa cosa è: int b=*(int *) p
Se p è un puntatore ad intero non vuol dire niente, semplicemente fa
un cast (cioè "trasforma") p in un puntatore ad intero ma visto che
penso lo sia già è un'istruzione inutile.
-- 
                    Marco Barisione (ICQ 84277092)
Se sei interessato alla creazione di un newsgroup generico in cui si
possa parlare di quei linguaggi di programmazione senza un gruppo
apposito vota per it.comp.lang su it.news.votazioni.

 penso lo sia già è un'istruzione inutile.
Grazie, sei stato chiarissimo!

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

vorrei cominciare a sviluppare in directX.
non ho la più pallida idea di dove partire.
qualcuno mi può dare una mano ?
ovviamente si intende compilatore, librerie, ecc gratis ...
grazie in anticipo
m0nty

 wrote in message
news:39AC033F...@libero.it...


 ha scritto nel messaggio

Newsgroup: it.comp.lang.c++
Titolo: utilizzo di find

ciao a tutti, innanzi tutto premetto
che non capisco molto di C++.
Avrei bisogno di un chiarimento:
Supponiamo che definisca un tipo T
dotato di operatori == e !=,
e che definisca un:
vector<T> a;
Ora, se voglio cercare un determinato oggetto
di tipo T in a, la cosa piu' semplice che mi viene
in mente e' utilizzare l'algoritmo find,
ma quest'ultimo sfrutta la definizione di operator==
che io ho dato al mio tipo T per fare i confronti?
Se cosi' fosse e io non definissi alcun operator==
in T, come si comporterebbe find? Cercherebbe
una corrispondenza esatta tra tutti i campi, o magari
lo standard non prevede un comportamento definito
in questo caso?
ciao
    Sprite

 in T, come si comporterebbe find?
Secondo me ti da un errore dicendo che non riesce a
trovare un
T::operator==(const T&, const T&)
...però non ci giuro...
--
Gerolamo

in questo caso?
No. Il c++ non definisce gli operator== e != di default per le classi
definite dall'utente, li devi definire te.
Il Ghenio
---------
// TODO: Place your ass here

 in questo caso?
No. Il primo find semplicemente non compilerebbe (probabilmente con una
caterva di errori quasi indecifrabili che in buona sostanza significano
che non trova l'operatore ==). Il secondo find invece funziona
regolarmente dato che non usa alcun operatore ma piuttosto il funzionale
unario che gli passi tu.
--
Andrea Ferro
IHHC - Member of HT-Group  DVD Authoring operator  Fan of I.Asimov
C++ Master: 
http://www.brainbench.com/transcript.jsp?pid=2522556
This post expresses personal opinions which may or may not be the
opinions of the company(s) I work for. I speak for myself only.

 ...però non ci giuro...
Sul fatto che ti da errore puoi giurarci. Che l'errore dica in modo
chiaro quale è il problema ... non è assolutamente detto.


 definite dall'utente, li devi definire te.
Parzialmente vero. Se tu definisci l'operator== lo standard definisce
per te un operator!=
Solo che lo fa nel namespace std::rel_ops e pertanto se non c'è da
qualche parte una apposita using (declaration o definition) o una
istanziazione esplicita (anche non specializzata) da parte tua, tale
operatore non viene usato in quanto non parte dell'insieme di signature
definito per il lookup(neppure contando il Koenig lookup, ammesso che il
tuo compilatore lo supporti già).


deve funzionare comunque in maniera corretta.
Ok, mi sono spiegato male.  operator== ed operator!= sono due funzioni
distinte e potrebbero anche fare una il caffé e l'altra il thé, quello
che volevo dire spiegandomi molto male é che se per la mia classe ho
definito un operator== che confronta 2 istanze la naturale definizione
da dare a operator != é la negazione di operator==.

Newsgroup: it.comp.lang.c++
Titolo: mail

Ciao, esiste in C++ o C  qualche classe/libreria  simile al pacchetto 
javamail ? Ho la necessita di connettermi via imap/pop3, processare 
delle mail con allegati e mandare una conferma. So che ci sono le mapi 
su winzoz tanto per fare un esempio ma siccome sto lavorando con le 
wxWidget mi chiedevo se qualcuno di voi avesse usato qualche libreria un 
po + portabile.
ciao
PP
PS : Spero nn sia OT

  PS : Spero nn sia OT
Purtroppo lo è. :)
-- 
RiK0
Newsgroup: it.comp.lang.c++
Titolo: Programmazione di rete

Ciao,
abitualmente compilo con g++ in ambiente linux, ora perň per ragioni che non
vi sto a riferire devo usare il visualc++.
Ho fatto un programmino del cavolo, che dovrebbe mandare un Ciao a tutti
coloro che lo contattano sulla porta 3334. Niente di particolare :-)
Purtroppo non mi funge.
Potreste darmi una mano e spiegarmi come devo fare per adattarmi a windows?
;-)
Ecco il sorgente, dategli un'occhiata anche se non č proprio c++ ;-)
-------------------------------------------------------------------------
// ricordarsi di inserire la libreria ws2_32.lib
// dal menů Project -> settings -> link
#include <winsock2.h>
#include <stdio.h>
#include <errno.h>
int main ()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 int mysock, newmysock ;
 struct sockaddr_in sin, client ;
 int len ;
 wVersionRequested = MAKEWORD( 2, 2 );
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 )
 {
  /* Tell the user that we could not find a usable */
  /* WinSock DLL.          */
  printf ("\nLe librerie WinSock non sono presenti :-(\n") ;
  exit (1);
 }
 mysock = socket (AF_INET,SOCK_STREAM,0) ;
 // printf ("\nIl socket aperto ha il numero: %d\n",mysock) ;
 if (mysock < 0)
 {
  perror ("\nErrore nella socket\n") ;
  WSACleanup( );
  exit (1) ;
 }
 sin.sin_family = AF_INET ;
 sin.sin_addr.S_addr = INADDR_ANY ;
 sin.sin_port = htons (3334) ;
 ris = bind (mysock,(struct sockaddr *)&sin,sizeof(sin)) ;
 // printf ("\nBind ha restituito il numero: %d\n",len) ;
 if (ris < 0)
 {
  perror ("\nErorre nella bind\n") ;
  WSACleanup( );
  exit (1) ;
 }
 len = listen (mysock,5) ;
 // printf ("\nListen ha restituito il numero: %d\n",len) ;
 // scanf ("%d",len) ;
 while (1)
 {
  if (newmysock = accept (mysock,(struct sockaddr *)&client, &len)<0)
  {
   printf ("\nErorre nella accept\n") ;
   WSACleanup();
   exit (1) ;
  }
  printf ("\nAccettata comunicazione sul socket con numero: %d\n",newmysock)
;
  send (newmysock, "Ciao\n", sizeof ("Ciao\n"),0) ;
 }
 WSACleanup( );
 return (0) ;
}
---------------------------------------------------------------------------
Ciao ... Marcello

Qui sei fuori argomento, sia perche' il tuo non e' un programma C++ sia
perche' riguarda una piattaforma specifica. Prova a chiedere su
it.comp.programmare.win32
Ciao,
Nicola
P.S. Se sai gia' che non devi postare qui, perche' lo fai?
Newsgroup: it.comp.lang.c++
Titolo: visual c++

Salve a tutti
sto cercando un visual c++ versione 5 o superiore...
nessuno potrebbe vendermene una copia, oppure procurarmelo per altre vie ;-)
ICQ: 91106348
grazie

 nessuno potrebbe vendermene una copia, oppure procurarmelo per altre vie
;-)
Quali altre vie ?
Sai, esiste la licenza studente (che tra le altre cose ti da la versione 6).
Con poco piu' di 100.00 lo hai originale (Vc++6 + VB 6).
Alex


vorrei spendere qualcosa meno...

 vorrei spendere qualcosa meno...
Se vuoi spendere meno, allora prendi un compilatore freeware.
I casi sono due, o per fare quello che vuoi fare il VC non e' necessario (per
esempio se ti serve solo un compilatore punto e basta) e allora vai opensource,
oppure ti serve proprio VC per la IDE, per il debugger, per la qualità
(soggettiva, sottinteso), per le MFC, per i Wizard, per la documentazione o che
altro. E allora direi che 100.000 sono veramente poche. Il prodotto vale molto
ma molto di piu' (e costa, infatti, di piu').
--
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: Operatore conversione di Tipo

Salve ragazzi,
avrei bisogno di un vostro piccolo aiuto.
Ho creato una classe Wrapper di un puntatore a una struttura, ho creato un 
operatore di conversione automatico perchè
ho delle funzioni che utilizzano il puntatore come argomento, l'operatore di 
conversione si presenta così:
class SessionFTP
{
public:
    operator FTP_SESSION*();
private:
    FTP_SESSION* session;
}
/////////////////////////////////////////////////////////////////
SessionFTP::operator FTP_SESSION*()
{
    return session;
}
Ho delle funzioni tipo questa:
int ftp_open(  FTP_SESSION* ftp );
La classe SessionFTP è un puntatore membro di un'altra classe ed ho notato 
che se alla funzione passo il puntatore della classe l'operatore di 
conversione non viene chiamato:
Tipo
SessionFTP* Classe;
ftp_open(  Classe );    // Non funziona.....
ftp_open(  *Classe );    // Funziona
Vi chiedo se è possibile fare in modo che l'operatore di conversione possa 
funzionare in entrambi i casi ( possibilmente solo il primo caso perchè non 
mi sembra molto bello deferenziare il puntatore ogni volta ).
Grazie a tutti
Gian 

 mi sembra molto bello deferenziare il puntatore ogni volta ).
No. Puoi definire conversioni implicite solo da o verso una tua classe.
Valuta se hai proprio bisogno che SessionFTP sia gestita tramite
puntatore.
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: porta seriale

Qualcuno può dirmi come interfacciare la porta seriale con il c++( con quale
libreria, quali comandi), in linea di comando.
Grazie
Non so proprio come uscire da questo incubo

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

Come posso estrarre ora e data in modo leggibile dalla struttura:
struct ffblk {
   long           ff_reserved;
   long           ff_fsize;       /* file size */
   unsigned long  ff_attrib;      /* attribute found */
   unsigned short ff_ftime;       /* file time */
   unsigned short ff_fdate;       /* file date */
   char           ff_name[256];   /* found file name */
   };
sapendo che
ff_ftime:
Bits 0 to 4	The result of seconds divided by 2 (for example 10 here 
means 20 seconds)
Bits 5 to 10	Minutes
Bits 11 to 15	Hours
ff_fdate:
Bits 0-4	Day
Bits 5-8	Month
Bits 9-15	Years since 1980 (for example 9 here means 1989)
Ringrazio in anticipo 
Franco



Direi che potresti per prima cosa "isolare" i bit che ti interessano
con un AND alla maschera appropriata. Per esempio:
<code>
sec = fftime & 0x01F;
</code>
(0x01F corrisponde a 00011111 in binario, ovvero la "maschera" per i
bit che ti interessano)
Poi "shiftare" a destra i gruppi di bit, per esempio:
<code>
min = (fftime & 0x03F0) >> 4;
</code>
e poi fare le ulteriori operazioni necessarie (moltiplicare per due i
secondi, sommare 1980 all'anno).
Spero che sia sufficiente. Naturalmente questa e' la via "lineare",
semplice, per capire anche cosa succede. Poi, se ci si applica un po',
sicuramente si possono scrivere cose piu' "corte" e probabilmente meno
leggibili, ma ugualmente funzionali.
Direi, comunque, che il tuo quesito e' "leggermente" OT, in quanto il
"C++ standard" non prevede alcun meccanismo per cercare files nelle
directory, ecc. ecc. 
Occorrerebbe sapere su che OS stai lavorando, ma mi sembra che la
struttura "ffblk" sia utilizzata sia in Windows che in Unix.
Ciao (a tutti, come sempre).
 


<cut></cut>
... mi sembra che sia utilizzata sia in DOS che in Unix ...
                                                        ^^^^
Ciao.


O probabilmente no, visto che stiamo parlando solo di come "estrarre"
bit ... ok, mi sto facendo un thread da solo :-) Scusate. Vado a
cenare che e' tardi.

Newsgroup: it.comp.lang.c++
Titolo: vector, distruttori, classi astratte

Sono incappato in un curioso problema
Descrizione:
Ho una classe base con metodi astratti puri e una serie di contenitori fra
cui list e vector
Da questa classe ne derivo una dove implemento i metodi astratti e fin qua
tutto bene...
Faccio girare la mia applicazione, popolo, attraverso il metodo della classe
derivata, il vector della classe base.
quando il programma esce (terminato) ovviamente viene chiamato il
distruttore della classe derivata e il distruttore virtuale della classe
astratta base...
ORA:
se faccio un vector clear nel distruttore della classe derivata (vettore che
e' della classe base) tutto funziona egregiamente, mentre se il vector clear
lo faccio nel distruttore virtual della classe base sembra che canni
qualcosa nell'heap.
Considerate che e' un vector di interi, niente puntatori etc. etc.
sinceramente non ne capisco la logica....
qualche suggerimento?
postare il codice sarebbe un pelino lunghetto (anche da spiegare)

 sinceramente non ne capisco la logica....
Io invece non capisco la logica di fare un vector clear di un vettore di 
interi, nel distruttore della classe che lo contiene... ci pensa il 
distruttore di vector a rilasciare la memoria.
[o forse non ho capito bene qualcosa...senza vedere il codice...]
Dan

 wrote in message
news:MPG.1b0c064df...@powernews.libero.it...

il problema e' che se non metto un vector clear nel distruttore della classe
derivata (non quella che contiene fisicamente il vector) il distruttore del
vector da errore...

 vector da errore...
Guarda, non vedendo il tuo codice non posso fare analisi piu' 
precise...ma quanto scrivi mi sembra strano; il codice seguente funziona 
senza problemi:
<CODE>
#include <iostream>
#include <vector>
using namespace std;
class Base
{
public:
	virtual ~Base() 
	{ 
		cout << "Chiamato distruttore classe base." << endl; 
	}
	virtual void stampa() = 0;
protected:
	vector<int> dati;
};
class Derivata : public Base
{
public:
	Derivata() 
	{
		dati.push_back(1);
		dati.push_back(10);
		dati.push_back(-2);
	}
	virtual ~Derivata() 
	{ 
		cout << "Chiamato distruttore classe derivata." << endl; 
	}
	void stampa()
	{
		const int n = (int)dati.size();
		for (int i = 0; i < n; i++)
			cout << 
dati.at
(i) << " ";
		cout << endl;
	}
};
int main()
{
	// Cosi' Derivata esce di scope dopo la graffa chiusa
	{
		Derivata d;
		d.stampa();
	}
	system("PAUSE");
	return 0;
}
</CODE>
Dan
Newsgroup: it.comp.lang.c++
Titolo: difficoltà a iniziare

Sono un newbie nella programmazione, per iniziare ho imparatoa fare qualcosa
con vb. Per fare il passo successivo mi hanno indicato di iniziare a
studiare il c++, e non vi nascondo che è molto difficile. Ho comprato quei
libri "impara il c++ 6 for dumies" ma già dalle prime 3 lezioni ho avuto
difficolta immani.
 E' possibile che per mettere una sola nuova finestra nel progetto sia
necessario del codice così strano, o forse è l'approccio del libro che è
strano e complicato?
Cosa mi consigliate di fare?


Mmmmm codice così strano? Il tuo problema non è il C++, è che stai 
cercando di imparare contemporaneamente C++, MFC e programmazione sotto 
Windows :-) In pratica hai addentato un boccone troppo grosso e ora fai 
una gran fatica a masticare...
Ti consiglierei di lavorare sotto DOS (vabbè...), creando con il VC++6 
un programma console, che è mooolto più semplice da gestire, da scrivere 
e da capire. Poi, quando avrai un minimo di familiarità con il C++ 
passerai a fare programmi per Windows che usino form, controlli, grafica 
e tutto il resto. E allora comprenderai anche a cosa serve il "codice 
strano"...

 strano"...
Daccordissimo!
Anche perchè iniziando a lavorare sotto DOS ti rendi piu semplice anche il
passo successivo!
Ma penso che devi prima imparare tutto il discorso sulle classi e
lìereditarietà e poi puoi cominciare a capire cosa sono tutte quelle cose
strane!

 
D'accordo sui concetti, ma non sul termine DOS usato veramente a sproposito.
Il DOS (Disk Operating System) indica un generico sistema operativo che 
supporta i dischi. Il fatto che Microsoft abbia sviluppato un DOS con 
interfaccia non grafica, non autorizza a chiamare DOS qualsiasi sistema 
ad interfaccia testo.
Forse che quando su Linux o FreeBSD faccio il login senza X e uso ad 
esempio bash sto usando un DOS ?
E quando uso il prompt dei comandi di OS/2 ? (mai)
E quando uso il prompt dei comandi di Windows NT/2000/XP (che e' un 
programma 32 bit che usa le Win32 API) ?
Meglio sarebbe chiamarlo lavorare in modo testo o console o terminale.

 
Visto che sei cosě fiscale (e che stasera mi va di trolleggiare) ti 
faccio notare che win 2000, win XP, Win NT, Linux, Solaris, BeOS, NEXT e 
pure il C64 supportano i dischi e sono pertanto, a pieno titolo, dei DOS 
nel senso da te asserito: quindi creare un programma DOS č un termine in 
OGNI caso appropriato.
In secondo luogo, la tua precisazione č fatta a sproposito, perchč qui 
ci si sta rivolgendo a un principiante che:
1) ha chiesto tutt'altra cosa;
2) non č in grado di apprezzarla e ne ricava solo confusione.
Ergo, hai perso un'occasione per stare zitto... :-P

ad interfaccia testo.
Giusto, ed infatti il nome appropriato è "MS-DOS" :)
Franco

 
Forse

 tutte le Win32 API (anche MessageBox !).
Alla faccia del principiante!
Scusate se ho voglia anch'io di trolleggiare, ma era troppo bella... :P
-- 
/**
 * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
 * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
 * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
 * Linux registered user 299762 @ Linux registered machine 184987
 */
Newsgroup: it.comp.lang.c++
Titolo: Come gestire la pressione del tasto Shift?.BCB

Quando in builder genero un evento onkeypress non riesco a controllare
se shift e premuto!

 wrote in message
37eb44a8....@news.caspur.it...


Newsgroup: it.comp.lang.c++
Titolo: 3 semplici richieste

Avrei bisogno di sapere 3 semplici cose:
1)Mi sembra che nella libreria math.h ci sia qualche funzione che calcoli la
potenza, potreste dirmi quel'č?
2)Quali sono in C++ le funzioni corrispondenti a quelle seguenti del Turbo
Pascal?
GotoXY (3, 6);
ClrEol;
Randomize;
Ramdom (z);
Delay (500);
ReadKey;
3)Quali sono i tipo equivalenti di Byte e Word del Pascal?
Grazie in Anticipo.
--
Posted from [195.223.215.6] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 3)Quali sono i tipo equivalenti di Byte e Word del Pascal?
Byte -> unsigned char
Word -> unsigned int
[unsigned] char e' di almeno 8 bit, ma potrebbe essere piu' grande,
mentre mi sembra che Byte sia esattamente 8 bit.
Lo standard non prevede una dimensione fissa per i tipi short, int e
long, ma solo una dimensione minima (rispettivamente 16, 16, 32 bit).
A seconda dei casi l'equivalente di Word potrebbe essere anche 
unsigned short/long.
	Mauro

 long double pow( long double, int );
Ma posso usare una pow qualunque? Il compilatore fa l'overload
automaticamente?


 automaticamente?
A seconda dei parametri passati, il compilatore chiama automaticamente
la funzione piu' adatta, se esiste.  Se due o piu' funzioni sono
ugualmente adattte, ma nessuna e' migliore delle altre, la chiamata
e' ambigua e il compilatore segnala l'errore.
Esempio:
  float f;
  double d;
  long double l;
  pow( f, 3 );    // float, int
  pow( d, 5.3 );  // double, double
  pow( l, 4.2 );  // long double, long double
  pow( 2, 5 );    // ambigua
I criteri per trovare la funzione migliore sono (in ordine):
1. I tipi corrispondono esattamente
2. Basta usare le promozioni (bool->int, char->int, short->int,
    float->double, double->long double).
3. Conversioni standard (int->double, double->int, ...)
4. Conversioni user-defined
	Mauro

Newsgroup: it.comp.lang.c++
Titolo: Visualizzare immagini in C++ Builder

Ciao a tutti,
  ho ha disposizione una matrice di unsigned char di dimensioni width
e height in cui ciascun valore rappresenta la luminosita' del
corrispondente pixel.
Qual'e' la via migliore, usando le librerie di C++ Builder, di
mostrare l'immagine a video?
E' possibile farlo senza copiare tutta la struttura?
Grazie per l'aiuto, a presto,
Michele Zanin from Trento
micz...@tin.it

 E' possibile farlo senza copiare tutta la struttura?
In Builder ogni componente che possiede il Canvas può accedere al singolo
pixel in questo modo:
Canvas->Pixels[x][y] = clRed;
Spero ti possa aiutare.
Inferno.

Inferno.
Potresti in tal modo realizzare anche un bel componentino che ti
realizzi l'immagine a partire dalla matrice.
Sarebbe piů versatile e potresti riutilizarlo in qualche altro
progetto!
Ciao
ideeinliberta
Newsgroup: it.comp.lang.c++
Titolo: VC++ e Database

Con Visual C++ devo trovare in un DB access un record tramite due campi di
tipo COleDateTime.
Come posso fare??
Ho provato con CDaoRecordset::FindNext("Data = '12/2/1999'") ma  mi dice che
i tipi sono incompatibili.
Grazie.
~~~~>))))°>~~~~~~~~~~~~~~~~~~~~
b0nu$
bo...@numerica.it
http://wurstel.ing.unibs.it/~bonus
http://www.geocities.com/SiliconValley/Lakes/4313
~~~~~~~~~~~~~~~~~~~~~~~~

Prova cosi' ma non ne sono assolutamente sicuro CDaoRecordset::FindNext("Data =
CDate('12/2/1999')") perche' se mi ricordo bene nel FindNext va' un espressione
che poi verra' interpretata dai DAO.
Se per caso non funge neanche' cosi' fammelo sapere che faro' una ricerca piu'
approfondita.
Ciao, Antonio.
P.S.: Ricordatevi di votare per it.comp.programmare.win32


 Mailgate.ORG is maintained online by Dario Centofanti
-- 
+----------------------------------------------------------------------
| Francesco Tagliento - Alcatel SSD Battipaglia - TMN Dep. (281)
| Address : Alcatel Telecom, via Bosco Primo, 84091 Battipaglia (SA)
|----------------------------------------------------------------------
| Tel : 
+39-0828-398612
 - alcanet 2270-612
| Fax : 
+39-0828-398640
 - alcanet 2270-640 
| mailto:
francesco...@netit.alcatel.it
 
+----------------------------------------------------------------------
--
Posted from 
tlvsdy.vim.tlt.alcatel.it
 [151.98.8.244]
via Mailgate.ORG Server - 
http://www.mailgate.org

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

Supponiamo di avere una dichiarazione di array simile
int myarray [3][4];
.....
Se io faccio
myarray[1][2] = 5;
non sto assegnando 5 al 3° elemento della 2ª riga?
In "C++ - Corso di programmazione 3ª ed." dice:
"si sta accedendo al 1° elemento della 3ª riga"
ma lo schema non è simile a:
0123
0123
0123  ?
Grazie

non sto assegnando 5 al 3° elemento della 2ª riga?
Esatto
Si e' ovviamente anche liberi di intendere che si stia
assegnando al secondo elemento della terza riga ma la
convenzione usata normalmente e' matrice[riga][colonna]
e la numerazione parte da zero per entrambe.
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 "si sta accedendo al 1° elemento della 3ª riga"
Probabilmente è solo un errore nella traduzione.
EMG

 assegnando al secondo elemento della terza riga
Ma in "C++ - Corso di programmazione 3ª ed." dice:
"si sta accedendo al 1° elemento della 3ª riga"
e non al 2° elemento della 3ª (come dici tu)


 "intervenuto", ma se non lo sapevo?
E' vero, è un grosso problema...
EMG

e non al 2° elemento della 3ª (come dici tu)
Si tratta probabilmente di una svista. Hai controllato
le errata corrige del libro ? Ho visto che per molti testi
sono messe a disposizione su internet dalle pagine degli
autori o delle case editrici.

Newsgroup: it.comp.lang.c++
Titolo: Winsock

Dove posso trovare della documentazione per imparare a scrivere programmi
che usano winsock??
Grazie.

 che usano winsock??
1. 
ftp://ftp.cdrom.com/.3/simtelnet/win95/prog/miniftp1.zip
: 
   tutorial su come implementare un semplice cliente FTP con le Winsock 
2. 
http://world.std.com/~jimf/papers/sockets/winsock.html
:
   Windows Sockets: A Quick And Dirty Primer (by Jim Frost)
   tutorial introduttivo ma ben fatto
3. 
http://www.cyberport.com/~tangent/programming/winsock/
   The Winsock Programmer's FAQ 
-- 
Roberto Gerola
Email: 
roge...@tin.it
WWW: 
http://space.tin.it/computer/rgerola

Sul sito della Microsoft, nella sezione Developers.

Newsgroup: it.comp.lang.c++
Titolo: forzare la cancellazione di un file

ragazzuoli, esiste un sistema brutale per eliminare un file utilizzato da
un'altra applicazione utilizzando il C/C++???
Il fatto è che in alcuni casi una applicazione che va in crash non mi
rilascia un file che DEVO eliminare e sono costretto a riavviare il sistema!
ch faccio???
--
Massimiliano Etere
www.programmando.org
maxe...@infinito.it
massimili...@programmando.org

rilascia un file che DEVO eliminare e sono costretto a riavviare il sistema!
Per quello che ne so io, è il sysop stesso che blocca il tentativo di
cancellazione del file.
Flavio Moretto
flamor@[viaquesto]
qzerty.it
 
icq 122395780 (pat)

un'altra applicazione utilizzando il C/C++???
La cancellazione di un file é prevista nello standard C, e quindi
anche nel C++
#include<cstdio>
std::remove(const char *filename);
Tuttavia tale funzione può tranquillamente fallire(il codice di
ritorno é 0 se la cancellazione va a buon fine) se il SO ti impedisce
di rimuovere il file in questione.
Il Ghenio
---------
// TODO: Place your ass here

 wrote in message
news:IzthPF0RBUJ2q8Y=6cNHeb...@4ax.com...


Newsgroup: it.comp.lang.c++
Titolo: POSTSCRIPT???

Ciao, ho scaricato un corso sul C++ e funzioni grafiche, purtroppo non lo
posso aprire perchè è formato ps, ovviamente io non ho l'applicazione!
visto che dentro quel corso c'è la mia probabilità di passare l'esame,
qualcuno srebbe così gentile da dirmi come fare a:
1: rendere visualizzabili questi file postscript
2:se si tratta di un programma che mi manca dove posso andare a scaricarlo?
...vi ringrazio di cuore anticipatamente per l'aiuto...sono solo! tutti in
vacanza!...quindi non mi restate che voi...
                                                   ciao da Luca

Tranquillo, il file per leggere il postscript č il ghostview e te lo mando
io.
Bye
Sebastiano
Newsgroup: it.comp.lang.c++
Titolo: Aiuto!!! Operatore & !

Salve a tutti- premesso che non sono ancora padrone del linguaggio-
Credevo di aver capito tutto -o almeno abbastanza sui puntatori- devo
ricredermi, almeno per quanto riguarda l'operatore &: ad esempio, ho notato
che questo operatore viene inserito sovente come argomento di una funzione.
Questo esempio è tratto dalla  guida on-line di P.Marotta:
struct Complex {    float Re;    float Im;  };
  Complex operator+(const Complex& A, const Complex& B)
 {
  Complex Result;
  Result.Re = A.Re + B.Re;
  Result.Im = A.Im + B.Im;
  return Result;
}
ho notato come in questo caso, ma anche in altri esempi analoghi-
se scrivo tra gli argomenti della funzione:
const Complex A <oppure> const Complex &A
funziona allo stesso modo- ma allora a che serve "&" ?
Credevo fosse l'opposto dell'operatore di deindirizzamento, ovvero *
ma con questo operatore non posso scrivere indifferentemente
 *prova = 10 <oppure>prova = 10 se assumiamo che prova è un puntatore ad un
int, perchè nel secondo caso si il compilatore si incazzerebbe di brutto.
 Quindi se non è l'opposto di * cosa è esattamente & ??? mi sto perdendo-
sarei molto grato se qualcuno facesse un po' di luce.
Grazie x l'attenzione
Francesco
gi...@tin.it

...
Un'altra cosa e' invece l'operatore di estrazione dell'indirizzo
Object* pObject = &object;
Tale istruzione estrae l'indirizzo di object e lo assegna al puntatore
pObject. Un puntatore e' una variabile che contiene un'indirizzo.
Oreste Notelli

Grazie x l'attenzione
Ti invito a rileggere con piu` attenzione il capitolo dedicato ai puntatori e ai
reference (page7.htm), mi pare chiaro che tu sia andato altre senza aver
bene assimilato questa parte (che in effetti e` alquanto delicata).
Saluti,
Paolo
P.s.
   Ti rispondo contemporaneamente per e-mail e sul NG cosi` che
    altri possano migliorare la spiegazione e/o rimediare a mie omissioni.
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

 che questo operatore viene inserito sovente come argomento di una funzione.
Io tuo errore č molto semplice: il simbolo & utilizzato nella
dichiarazione di una funzione _non_ č l'operatore address-of bensě
indica che il tipo č un "reference", cioč passato o restituito per
riferimento e non per valore.
EMG
Newsgroup: it.comp.lang.c++
Titolo: quale compilatore?

Ciao  a tutti, sono alle prime armi con il c++ e volevo chiedere  il vostro
parere su quale compilatore dovrei utilizzare e che differenza c'č fra  i
vari compilatori.
Grazie a tutti quelli che mi rispondono.

Dipende dal sistema operativo che usi!!
Linux ce lo ha gią integrato (g++) che č spartano ma buono. Per Win9x c'č
un'ampia scelta di comp. scaricabili liberamente:
Lista Compilatori C/C++ freeware:
- 
http://www.borland.com/bcppbuilder/freecompiler/
, Borland C++ Compiler 5.5
(compilatore a linea di comando di cui si puņ scaricare anche il Turbo
Debugger 5.5 freeware!)
- 
http://www.bloodshed.net/dev/index.html
, Dev-C++ 4, IDE per Win32 con
l'ottimo compilatore C++ MinGW-32 incorporato
- 
http://sourceware.cygnus.com/cygwin/
, CygWin32, porting del GNU gcc C/C++
in versione precompilata Win32
- 
http://www.xraylith.wisc.edu/~khan/software/gnu-win32
, altro porting di
GNU gcc C/C++ precompilato per Win32
- 
http://www.mingw.org/
, MinGW-32, sito web dedicato al porting del
compilatore GNU gcc C/C++ per Win32 (+ tools, es. DirectX 8)
- 
http://www.delorie.com/djgpp/
, DJGPP, compilatore GNU gcc C/C++ per Dos
con tools (IDE,librerie varie, ecc.)
Bye bye

Newsgroup: it.comp.lang.c++
Titolo: Visual C++ e registro di Windows

La funzione SetRegistryKey() mi consente di lavorare con il registro di
configurazione di Windows comodamente, ma soltanto su una chiave che porta
il nome dell'applicazione (che tra l'altro non so dove si imposti).
Ora, però, ho necessità di intervenire su la stessa chiave con due
programmi.
Come posso fare?
Ringrazio tutti voi che continuate a sopportarmi.

 Ringrazio tutti voi che continuate a sopportarmi.
Sto giocando anch'io con i registri da un paio d'ore e non sono sicuro
di poterti aiutare (ma ci provo). Io sto usando la classe CRegKey del
VC++6.0 che permette di fare molte cose sui registri quando sai cosa
devi toccare. Non so se puo' servirti.
Il mio problema adesso e' che voglio scorrermi un'albero dei registri
senza sapere a priori che chiavi ci sono. Se sei al corrente di una
funzione in grado di farlo dimmelo. Grazie
-- 
Togliere ICEMAN dall'indirizzo per l'e-mail
Bye
   Nameci

funzione in grado di farlo dimmelo. Grazie
La API di Windows permette di usare le funzioni RegEnumKey e
RegEnumKeyEx le quali permettono di enumerare tutte le sottochiavi
relative ad una chiave. In questo caso basta mettere come prima chiave
la root di una delle cinque chiavi predefinite del registry, e poi
chiamare continuamente una delle due funzioni fino a quando non
restituisce un valore di errore.
Scusami, non sono pratico di MFC, pertanto non posso dirti il nome del
metodo della classe CRegKey corrispondente alla RegEnumKey della API.
P.S. Le domande inerenti le funzionalita' di Windows a 32 bit, vanno
postate su it.comp.programmare.win32. Grazie.
Bye.
Joseph Parrello.
Joseph Parrello - OWL/C++ Programmer
http://JoParrello.freeweb.org
(
jopar...@geocities.com
)
Newsgroup: it.comp.lang.c++
Titolo: Programmiamo.it

Salve,
sto cercando collaboratori per il mio sito: 
http://www.programmiamo.it
.
Il sito consiste in un progetto collaborativo per la scrittura di articoli
di programazione.
Chiunque può parteciparvi semplicemente iscrivendosi e subito dopo può già
inserire il primo articolo o modificare e migliorare quelli già iniziati da
altri.
Conto sulla vostra disponibilità.
Grazie
Giovanni

 di programazione.
Complimenti!!! Il tuo e' il milionesimo sito generico sulla
programmazione. Se ne sentiva proprio il bisogno. Collaborare con un
sito esistente no, eh?
Ciao,
Nicola

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

Salve,
Qualcuno saprebbe consigliarmi un buon manuale di c++ builder possibilmente 
in italiano?
Grazie 

thecaesar ha scritto:

prova qui:
http://groups.google.it/group/it.comp.lang.c++/browse_frm/thread/f8d9dc9132461de7/538095f4539d7d21?q=it.comp.lang&rnum=5#538095f4539d7d21

Newsgroup: it.comp.lang.c++
Titolo: Programmare in C++

Salve a tutti,
mi piacerebbe imparare a programmare, ma non ho attualmente i mezzi per
seguire dei corsi presso scuole private o pubbliche.
Molti mi hanno detto che un linguaggio ottimo anche per imparare a
programmare è proprio il C++.
Vi sarei molto grato se vorrete consigliarmi dei testi (ottimi) in italiano,
con i quali apprendere da 0 a programmare in C++.
Grazie infinite
Sergio

 programmare è proprio il C++.
Se sei completamente a digiuno di informatica credo sarà un po' dura
partire con il C++.
EMG

 forse ti e' piu' semplice partire dall'assembly.
Non mi sembra un buon consiglio. Avrebbe senso studiare l'assembly solo
se ci si aspetta di dedicarsi alla programmazione a basso livello.
EMG
Newsgroup: it.comp.lang.c++
Titolo: fork, exec

Avrei bisogno di una mano:
so che quando invoco la funzione fork() il processo corrente crea un nuovo
processo (figlio) esattamente uguale al padre (ad eccezione del valore
identificativo del processo). Se non sbaglio, l'esecuzione del programma, in
entrambi i processi, dovrebbe continuare dalla riga successiva a quella che
invoca la fork(). Ma allora se cosě č, perchč se nella riga precedente alla
fork inserisco una printf(...) mi viene stampato a video 2 volte l'argomento
della printf ?
La funzione execv (char *arg, char *argv) dovrebbe eseguire il comando
contenuto in arg con i parametri in argv. Perchč non viene accettato in arg
per esempio il comando "ls", ma solo file ?

]

 per esempio il comando "ls", ma solo file ?
Perche` execv a differenza di execvp non "fruga" la PATH, bensi`
vuole gia` la path completa dell'eseguibile (tipo /usr/bin/ls, ecc).
Alex

 della printf ?


Scusate se faccio la domanda, ma sapete se esiste un comando fork() anche
nel c o c++ della borland per piattaforme Windows?
Anticipatamente ringrazio
       Lorenzo
       E-Mail: 
ita...@technologist.com

 nel c o c++ della borland per piattaforme Windows?
Purtroppo le piattaforme Windows non prevedono proprio il
concetto di fork, quindi dubito che qualsiasi compilatore possa
fornirlo.
Comunque, prova a sentire su it.comp.programmare.win32.
Alex


Implementativamente non so come avvenga, ma con cygwin la fork()
funziona; l'unico problema e' il tremendo overhead sotto windows


Newsgroup: it.comp.lang.c++
Titolo: Rapido dubbio

Non si possono mettere oggetti di una classe non copiabile in un
container STL, giusto?
Thx,
Pleg

Se cerchi di costruire un (ad es.) vector direttamente con gli
oggetti, no; all'inserzione si debbono copiare.
Puoi tuttavia creare un vector di puntatori agli oggetti, al massimo
ricordandoti di invocare singolarmente la delete su tutti gli elementi
prima di distruggere il vector.
Ciao,
Matteo


 container STL, giusto?
No, hai esplicitamente il requisito di copiabilita'. Per circonvenire,
usa il suggerimento di tchernobog.
-- 
-riko

Grazie a entrambi.
Pleg

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

Mi serve stampare in un log anche i millisecondi!!!
Come faccio??
grazie
tommaso
-- 
Inviato il mer 13 giu 2001 12:44:44 CEST da 62.110.223.218
[62.110.223.218]
http://www.neuromante.net/

> Mi serve stampare in un log anche i millisecondi!!!
Io uso una funzione di questo tipo:
void  DebugTime( char *Msg,int level )
{
 if ( !streamDebug )
   return;
 if ( level <= giLevelDebug ){
   struct time Ora;
   gettime( &Ora);
   fprintf( streamDebug, "\nTIME [%-50.50s] %02hi:%02hi:%02hi:%03hi",Msg,
Ora.ti_hour, Ora.ti_min, Ora.ti_sec, Ora.ti_hund );
   fflush( streamDebug );
 }
}
dove StreamDebug è una variabile globale FILE *StreamDebug;
Massimo D.
Newsgroup: it.comp.lang.c++
Titolo: Menu & MFC

Vorrei disabilitare una voce di menu in risposta ad un altro comando
di menu gestito dall' oggetto documento (uso il modello doc/view)
attraverso lo statement
::AfxGetMainWnd()->GetMenu()->GetSubMenu(0)->EnableMenuItem(ID_bla_bla, ..._GRAYED);
Perche' non funziona?
Qualcuno sa come risolvere il problema?
Grazie anticipatamente.
Ciao,
   Paolo

Perche' non funziona?
Perche` in MFC l'abilitazione o disabilitazione dei menu item
devi gestirla in modo del tutto diverso, vedi le doc in linea su
ON_UPDATE_COMMAND_UI e soci.
Alex
Newsgroup: it.comp.lang.c++
Titolo: aiuto non capisco

Salve a tutti,
ho un problema a capire cosa fa questa riga di codice:
c = (c << 2) | ((c1 >> 4) & 0x3);
c e c1 sono due variabili del tipo: auto char
Ciao e grazie

 ha scritto nel messaggio 
news:j7uze.133118$75.57...@news4.tin.it...


Newsgroup: it.comp.lang.c++
Titolo: grid grafica

Ciao
sto cercando un componente o meglio activex
che funzioni come griglia grafica, con la possibilità
di colorare celle, selezionarne e spostarne una parte in
giro per la griglia e così via.
(mi serve per un tableau prenotazioni per un programma
alberghiero).
idee?
GRAZIE,
Dario

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

Newsgroup: it.comp.lang.c++
Titolo: errori?

mi dite se ci sono errori quando lo compilo con visula c++ 2005 express 
mi da un sacco di errori
// uso di una variabile
#include <iostream>
using namespace std;
int main()
{
int lenght; //dichiara una variabile
lenght = 7; //assegna una variabile
cout << la lunghezza è ";
cout << lenght // visualizza il valore 7
return 0;
}

 cout << lenght // visualizza il valore 7
qua manca ;
Tommaso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

ecco cosa mi appare quando cerco di compilarlo
vardemo.cpp
vardemo.cpp(12) : error C2065: 'la' : undeclared identifier
vardemo.cpp(12) : error C2146: syntax error : missing ';' before 
identifier 'lun
ghezza'
vardemo.cpp(12) : error C2001: newline in constant
vardemo.cpp(12) : error C2065: 'lunghezza' : undeclared identifier
vardemo.cpp(12) : error C2146: syntax error : missing ';' before 
identifier 'è'
vardemo.cpp(12) : error C2065: 'è' : undeclared identifier
vardemo.cpp(12) : error C2143: syntax error : missing ';' before 'string'
vardemo.cpp(13) : error C2146: syntax error : missing ';' before 
identifier 'cou
t'
vardemo.cpp(15) : error C2065: 'lenght' : undeclared identifier
vardemo.cpp(15) : error C2143: syntax error : missing ';' before 'return'

 cout << la lunghezza è ";
  cout << "la lunghezza è ";
Inviato da X-Privat.Org - Registrazione gratuita 
http://www.x-privat.org/join.php

 cout << lenght // visualizza il valore 7
manca il ; finale
-- 
Simone.

 wrote 
come ti e' stato detto manca un " ed un ;


Newsgroup: it.comp.lang.c++
Titolo: algoritmo codice fiscale

C'č qualcuno che ha realizzato l'algoritmo in questione secondo le
specifiche della gazzetta ufficiale ?
Mi piacerebbe studiarlo grazie!!!

 Mi piacerebbe studiarlo grazie!!!
Fatti una ricerchina su internet, non e' difficile implementarlo.
Valerio
Newsgroup: it.comp.lang.c++
Titolo: cosa devo fare per programmare giochi stile pac-man, grazie.

Ho il desiderio di riuscire a programmare giochi arcade molto
"semplici" stile pac-man duke nuke 1 o 2 ecc.
Sapete indicarmi:
1 - che linguaggio devo imparare
2 - dove posso trovare il compilatore ed eventuali programmi per
effettuare la grafica (una specie di thedraw pero' per la grafica)
3 - che libro devo comprare per imparare il suddetto linguaggio
Speranzoso in un AIUTO ringrazio, ciao.
					Gianluca

Consiglio vivamente l'uso di DJGPP (
http://www.delorie.com/djgpp/
) se
sei su macchine con il DOS. Per due motivi:
- č C/C++
- č FREE
- č stata sviluppata una libreria (ALLEGRO) apposta per fare giochi.
Anche questa FREE. E' fenomenale.
Inoltre, girando per i link che partono dall'indirizzo sopra, ho trovato
anche un tizio che ha sviluppato PAC-MAN, TETRIS ed un altro paio di
giochi. I sorgenti sono disponibili.
Quando hai sviluppato qualcosa, fammi sapere!
            Flavio
--
Ing. Flavio Poletti
STS s.r.l.
Via Odoardo Beccari, 13
00154 Roma, Italia
Tel. +39 6 5755096
FAX  +39 6 57287214
company e-mail: 
sts...@tin.it
private e-mail: 
pol...@writeme.com

Newsgroup: it.comp.lang.c++
Titolo: HELP su funzione rand()

Usando il borland versione 4 e implementando la funzione rand()
quest'ultima mi da sempre lo stesso valore,da cosa puo' dipendere??

E' possibile che tu ti sia dimenticato di chiamare randomize() all'inizio
del programma...

quest'ultima mi da sempre lo stesso valore,da cosa puo' dipendere??
Supponendo che Borland implementi la rand() a standard ANSI,
forse dal fatto che non hai seguito l'indicazione dello standard:
"Use the srand function to seed the pseudorandom-number 
generator before calling rand".  L'hai chiamata la srand()...?
Alex

>Supponendo che Borland implementi la rand() a standard ANSI,
E' così, e in effetti solo la srand() mantiene questa compatibilità, e
benchè randomize() sia più semplice da usare (non richiede il generatore)
limita la portabilità a Dos/Win16/Win32/Os2.

Newsgroup: it.comp.lang.c++
Titolo: Porte seriali

Come uso le porte seriali con il Visual C++ ?
Posso usare CFile ? E' gia' bufferizzato da Windows ?
Vinicio Coletti - 
http://www.webcom.com/vcoletti
vcol...@webcom.com
Please do not use 
v.co...@iol.it
 any more!

Posso usare CFile ? E' gia' bufferizzato da Windows ?
mmmm, non credo che CFile sia molto adatto per le comunicazioni
seriali, il linea di massima penso che si possa usare pero' diventa un
problema se devi gestire delle comunicazioni con un mimino di
complessita', ad esempio con CFile non puoi usare l'overlapped I/O. Io
ho sempre usato le Api di win32 in modo diretto. Tra l'altro ci pensa
gia' windows alla gestione dei buffers di I/O.
Gianpaolo Bottin
- Live Long and Prosper -
Newsgroup: it.comp.lang.c++
Titolo: Cancellare files

Ho la necessita' che il mio porgramma (scritto in C++ Bulder 1.0) cancelli
una serie di files con estensione ".hss".
Ho provato ad usare i comandi remove("*.hss") e DeleteFile("*.hss"), ma i
risultati non sono quelli sperati, i files sono sempre al loro posto, come
faccio?
Grazie a tutti
Lanfranco Raiani
e-mail: 
rai...@tin.it

faccio?
Non so se C++Builder 1.0 ti offrisse altre metodologie alternative,
ma comunque le API di Windows-32 (che immagino tu possa accedere
senza problemi) offrono varie possibilita' interessanti.  La piu` utile
e' probabilmente SHFileOperation, a cui passi un puntatore ad una
singola struttura di tipo SHFILEOPSTRUCT che specifica tutti i
dettagli dell'operazione desiderata.  In generale, questa ti permette
di ottenere tutte le feature che sulle varie file operation consente lo
Shell di Win32; nel caso specifico della cancellazione di file, il vantaggio 
principale consiste nel potere specificare il flag FOF_ALLOWUNDO,
che esegue cancellazioni "undo-abili", cioe' attraverso il "Recycle Bin"
(spiacente ma non conosco i termini equivalenti in italiano...!).  Comunque
questa possibilita', come anche quelle di ottenere dall'utente una conferma
della cancellazione, ecc, sono appunto solo delle possibilita', cioe' con i
flag opportuni (o la loro assenza) puoi anche escluderli.
Ecco come potresti impostare un piccolo file cancellali.c:
#include <shellapi.h>
int cancellali()
{
    SHFILEOPSTRUCT sfos;
    ZeroMemory(&sfos, sizeof(sfos));
    sfos.wFunc = FO_DELETE;
    sfos.pFrom = "*.hss\0";
    sfos.fFlags = FOF_ALLOWUNDO |
        FOF_SILENT |
        FOF_NOCONFIRMATION;
    return SHFileOperation (&sfos);
}
Questa, come la SHFileOperation stessa,
torna 0 se ha successo, !=0 se fallisce.
Lo zero supplementare del campo pFrom
e' necessario perche' in pFrom si possono
specificare *molteplici* wildcard (e/o nomi o
percorsi di file) separati da \0; l'ultimo di essi
(in questo caso, l'unico) va quindi terminato
con un \0 "in piu'" rispetto al normale zero di
terminazione delle stringhe C.
Alex
Newsgroup: it.comp.lang.c++
Titolo: array di tipo char... e gli spazi?

Ciao a tutti,
ho scritto una procedura che dovrebbe inserire in un vettore di tipo
char una frase o una parola qualsiasi e terminare quando l'utente
inserisce il carattere '*'. Il problema e' che il suddetto vettore
memorizza si' la frase, ma senza gli spazi. Perche'?
ps. mi servono gli spazi perche' devo far contare ad un'altra funzione
tutti i caratteri ( tranne l'asterisco ) presenti nel testo inserito
dall'utente
Grazie mille a chi vorra' essere cosi' gentile da rispondermi.
Ecco il codice:
const int size = 6;
typedef char  vettoreCh[ size ];
void insertString( vettoreCh stringa )
{
   int i,
        max;
 
  char control;
 
  cout << "\nInserisci una frase qualsiasi\n"
           << "(l'inserimento del carattere '*' causera' la fine"
           << " della frase):\n->";
 
   i = 0;
   do
   {
       cin >> stringa[ i ];
       control = stringa[ i ];
       max = i;
       i++;
       if( control == '*' )
           cout << "\nHai deciso di terminare l'inserimento della
frase!\n";
      else if( i == size )
      {
           cout << "\nLa frase e' troppo lunga e verra' troncata!\n"
	    << "\nLa frase troncata e': ";
           for( i = 0; i < size; i++ )
	  cout << stringa[ i ];
       }
  } while( i < size && control != '*' );	
 
  cout << endl;
}

        control = stringa[ i ];

>        control = stringa[ i ];
Grazie mille ora effettivamente funziona.
Ma mi domandavo perche'  non li considera affatto, se scrivo una frase
del tipo "sono stato al mare" nel vettore viene memorizzato
"sonostatoalmare"... perche' cin >> stringa[ i ] non considera lo
spazio, il tab, newline ecc. e cin.get( stringa[ i ] ) invece si'?

 stringa[ i ] ) invece si'?
 
esatto