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

Scusate ma c'è differenza nello scrivere nei parametri di una funzione const
T& pippo o const T & pippo.
Se c'è differenza quale?
Grazie  Michele

 Se c'è differenza quale?
Non c'è differenza funzionale. È questione di stile. I sequenti sono tutti equivalenti:
T&var
T& var
T &var
T & var
Pero, c'è una certa logica ad attacare il "&" con la variabile, perche con diclarazioni moltipli, il
"&" o "*" è associatto alla variabile. Es.:
    int* a, b, c;
equivale a
    int *a;
    int b;
    int c;
ma può sembrare una definizione di tre puntatori. Se fai
    int *a, b, &c = b;
non c'è equivoco.
Nel caso degli argomenti di una funzione, tale void f(const T& a, const T& b), è solo questione di
gusto personale.
Claudio Puviani

 ha scritto nel messaggio
news:zqV0a.1263$9y2...@nwrddc01.gnilink.net...


 ovviamente se mette o no il const c'è differenza...
La sua domanda era "const T& pippo" vs. "const T & pippo" (la sola diferenza essendo lo spazio), non
"const" vs. "non const".
Claudio Puviani

 Se c'è differenza quale?
nessuna differenza.

Newsgroup: it.comp.lang.c++
Titolo: delete non azzera il puntatore

A che pro visto che il valore del puntatore non e' piu' valido (non mi
dite per risparmiare tempo)? Al contrario verrebbe introdotto un
ulteriore elemento di controllo sugli errori.
Comunque, io ho trovato una semplice soluzione:
template <class T>
inline void CLEAR (T& x)
{
	delete x;
	x = NULL;		// o qualsiasi altro valore che non sia mappato
				// nello spazio di indirizzi dell'applicazione
}
-- 
Fabrizio Di Giuseppe
mailto:
fabr...@iride.com
http://www.iride.com/fabrizio
--------------------------------
Chi aumenta la Tariffa Urbana a Tempo diminuisce la liberta' di tutti
gli utenti  Internet. Anche la tua. Ricordalo, prima di acquistare
prodotti o servizi dalla Telecom Italia S.p.A.
http://notut.ml.org/
--------------------------------

A che pro visto che il valore del puntatore non e' piu' valido (non mi
delete prende il puntatore per valore, quindi non puo` modificarlo
(puo` solo modificare cio` a cui punta).  La tua soluzione con un
piccolo template aggiunge benissimo questa funzionalita` nei
casi in cui si ha a disposizione un puntatore modificabile.
Alex

Newsgroup: it.comp.lang.c++
Titolo: Principiante: getMenuItemRect

Qualcuno gentilmente mi potrebbe spiegare il funzionamento di questa
funzione perche' non mi e' molto chiaro.
Ho fatto degli esperimenti e mi sembra che l'area che dovrebbe contenere
la voce di menu indicata viene restituita con l'angolo superiore
ancorato al margine destro della finestra che contine il menu sia che la
voce di menu appartenga al primo popup o a quelli successivi.
Qualcuno potrebbe chiarirmi le idee??
Grazie mille!



 funzione perche' non mi e' molto chiaro.
Se domandi sul gruppo giusto, cioe` it.comp.programmare.win32,
saro` ben felice di provare ad aiutarti.  Ma non qui, perche` il
gruppo it.comp.lang.c++ e` dedito alla discussione del linguaggio
C++ usato in modi standard (indipendenti dalla piattaforma).
Alex
Newsgroup: it.comp.lang.c++
Titolo: Handling Messages in a Console App?

I've been working on this console app for the past week and actually its
really hard.  Event Driver Object oriented is easy.  But what I have here is
something thats BOTH event and regular start-finish type thing.
I have a main line and a Socket Object (Using MFC here too)
The Main line has a
MSG msg;
  while(GetMessage(&msg, 0, 0, 0))      // message loop to deliver socket
messages
  {
   DispatchMessage( &msg );
  };
My Socket has OnRecieve that recieves commands and then starts up certain
Global Procedures.  These functions finish and the execution goes back to
the OnRecieve Function.  When that Finishes...  Where did we go?  The
while(GetMessage...  doesn't seem to get executed again.  However the
OnRecieve will start again if more information comes...  In order to shut
everything down I do a PostQuitMessage(0); from a called procedure that
OnRecieve Actually called.  This could be the most wrong way todo it.  I'm
not sure, none the less, VC++ tells me I have memory leaks.  in strcore.cpp
(I'm guessing this is because of the socket).  Does anybody know what global
function I can write to handle the WMQUIT and close and then delete the open
socket?  How is programming a console application with sockets supposed to
be done again?
Darren King

 socket?  
When you get a WM_QUIT, the 'while' loop will exit and you can handle
any cleanup operations there.
Chris.
-- 
http://www.double.co.nz/dylan

Newsgroup: it.comp.lang.c++
Titolo: inclusione di header

Salve a tutti, 
domanda veloce veloce sui .h:
supponiamo che in A.h ci sia la classe A con i prototipi dei suoi
metodi.
supponiamo inoltre che in B.h ci sia la classe B con i suoi metodi.
Se alcuni metodi di A prendono e/o restituiscono istanze di B e
viceversa, in un ipotetico main, dove istanzio sia A che B come faccio
le inclusioni?
Ovvero esiste un ordine corretto oppure è irrilevante?
Se esiste un'ordine giusto di inclusione degli header credo di essere
nei guai, perchè comunque li rigiri una delle due classi si troverà a
manipolare oggetti che non conosce.
Credo di avere un pò di confusione in testa!!
		Grazie a tutti Veruska.

 wrote in message
3974B1C9...@libero.it...

Eh, già, questo normalmente è un problema. Però puoi sempre fare così,
all'inizio di A.h metti:
class B;
in questo modo dici che esiste senza dire cos'è. Il contrario in B.h:
class A;
In questo modo ognuna delle due classi sa che l'altra esiste, anche se non
sa come è fatta.
--
***
Ertai, Wizard Adept
L'intelligenza sta / nell'esser prudenti
quando cala una nebbia / sul rischio di cadere
Troppo facile avere / La lucidità di quelli che
Non sanno camminare
***

 manipolare oggetti che non conosce.
No.  In A.cpp, includerai sia A.h sia B.h, quindi la manipolazione
di oggetti di classe B sara` possibile ai metodi di A, e viceversa
poiche` gli stessi include li farai in B.cpp.
Alex
Newsgroup: it.comp.lang.c++
Titolo: Compressione file in win

Vorrei comprimere una cartella e sottocartelle e file contenuti in un
unico file, e poi fare l'operazione inversa. 
Ovviamente non intendo con winzip, intendo all'interno di un
programma.
Qualcuno se c'e' un modo semplice di fare cio'?
please remove NOSPAM from email address to write me.
-------------------------------------------------------
Free download software: Post-it, Scheduler, Slide-show, Calendar, 
  Network Chat, Network Mail, Phone book, Apps Laucher... at:
http://come.to/oddera



Se cerchi in giro ci sono delle librerie freeware con algoritmo tipo
zip (un po' meno efficace a dire il vero ma sempre buono)
Puoi partire da qua: 
http://www.winimage.com/zLibDll/

xi...@ximox.com
 wrote:

Ho provato, mi pare che pero' comprimano un solo file alla volta,
conoscete qualcosa che permetta di gestire la compressione di intere
cartelle, o pensate che sia necessario scriversi tutto il codice a
riguardo? Nel caso avete qualche consiglio su come organizzare le
strutture dati per gestire gli elenchi di cartelle e sottocartelle,
cioe' tipo: meglio un header con tutti i nomi, e un marker finefile,
oppure una coda con tutte le info, oppure il nome prima di ogni
file...?


 riguardo?
Prova anche queste librerie che mi sembrano molto complete:
http://www.netcomuk.co.uk/~stephend/addzip.htm
EMG
Newsgroup: it.comp.lang.c++
Titolo: Errore difficile da scovare

Salve a tutti,
sto sviluppando del software con il Visual C++ 6.0 (incluso service pack 3),
purtroppo mi sta capitando un errore molto subdolo.
Ovvero lancio il programma su cui sto lavorando per la prima volta, eseguo
un comando particolare e ricevo il classico errore di Windows....
GESGEN ha provocato un errore di pagina non valida nel
modulo RTFILE.DLL in 0177:016d41b2.
Registri:
EAX=00000016 CS=0177 EIP=016d41b2 EFLGS=00010202
EBX=0053124c SS=017f ESP=0192eb2c EBP=0192ec78
ECX=000002c0 DS=017f ESI=00000001 FS=124f
EDX=00000000 ES=017f EDI=016d9ec0 GS=0000
Byte all'indirizzo CS:EIP:
c6 84 18 ec 11 00 00 05 8b d5 83 c5 03 66 8b 02
Immagine dello stack:
0073f1c4 00000000 0192ff64 0000017c 5f4d1b58 0192ec78 31000000 009e154c
00530f8c 009e1d6c 00982288 00ad2990 009e40e8 009e1e5c 00000001 0192feac
rilanciando il programma e lo stesso comando successivamente non mi genera
più l'errore e funziona tutto correttamente.
Compilando in modalità di DEBUG l'errore non viene mai emesso, ma solo con
la modalità RELEASE e solo la prima volta.
In pratica per vedere l'errore devo riavviare il computer ogni volta perché
viene generato solo al primo lancio del programma.
Un puntatore falso ? una mancata inizializzazione di qualche variabile ? può
darsi, il mio problema però è che non posso debaggare il programma perché in
debug l'errore non lo dà.
Quindi espongo la mia domanda:
è possibile dalle informazioni che mi dà Windows quando mi dà il messaggio
di errore risalire all'insieme di istruzioni che possono aver creato il
problema ?
Mi basterebbe anche un'idea vaga almeno per restringere il campo di ricerca.
Grazie anticipatamente.

 un comando particolare e ricevo il classico errore di Windows....
Questo messaggio non riguarda tanto il linguaggio C++ in se, quanto
piuttosto problematiche che sono caratteristiche di un particolare
compilatore e di un particolare ambiente operativo.
Per questo motivo il messaggio e' off-topic in questo gruppo, di cui
ti prego di leggere il charter; puoi avere maggior fortuna chiedendo
su it.comp.programmare.win32 .
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
Newsgroup: it.comp.lang.c++
Titolo: ancora sulle liste c++

Utilizzando queste due funzioni void, riesco a stampare una lista in ordine 
inverso a quello di inserimento.
Mi dite come posso stampare la lista nello stesso ordine di inserimento 
degli elementi?
Funzioni utilizzate:
-----------------------------------
void Pila::crea_lista (elem*& lista)
 {
  cout << "CREAZIONE ELEMENTI DELLA PILA!!\n" << endl;
  cout << "ATTENZIONE!!! \nPer terminare inserire un numero negativo.\n" << 
endl;
  num_elem = 1;
  for ( ; ; ) // for infinito
   {
    int val;
    cout << "Il " << num_elem <<"o numerito inserito e': ";
    cin >> val;
    if (val < 0)  // Esce dal ciclo se viene inserito un numero negativo
      break;
    lista = new elem(val, lista);
    num_elem++;
   };
  };
void Pila::stampa_lista(elem* lista)
 {
  int num = num_elem - 1;
  if (lista != 0)
   {
    cout << "\n\nVISUALIZZAZIONE ELEMENTI DELLA PILA\nIN ORDINE INVERSO\n" 
<< endl;
    while (lista != 0 )
     {
      cout << "Il " << num << "o elemento inserito e': " << lista->val << 
"\n";
      lista=lista->next;
      num = num - 1;
     }
     cout <<"\n\n" << endl;
    }
  else
   {
    cout << "\n\nPILA VUOTA\n\n";
   }
 };
--------------------------------------------------------------------- 

 
Aggiungi un puntatore (come membro della classe) al primo elemento della 
lista e, ogni volta che devi effettuare un inserimento, scorri tutta la 
lista (nota che devi ricordarti di inizializzare ogni volta a NULL il 
puntatore Next dell'ultimo elemento inserito)
Cosi' eviti anche di passare la lista come parametro alle funzioni. 
Concettualmente mi sembra piu' giusto che ogni istanza della classe Pila 
lavori su di un'unica copia della lista.
Infine un piccolo appunto: il tuo programma confonde struttura dati e 
interfaccia utente; IMHO, sarebbe piu' leggibile e piu' 'elegante' 
(aihme' non posso farne a meno) separare queste due sezioni. La classe 
Pila si dovrebbe occupare di tutte e _sole_ le operazioni da effettuare 
su se stessa, mentre l'interfaccia utente andrebbe delegata al main.
Questo ti rendera' poi piu' facile riutilizzare le tue classi in altri 
programma, magari con interfacce diverse.
spero di essere riuscito a spiegarmi, in caso contrario saro' lieto di 
fornirti ulteriori chiarimenti,
Paolo

 degli elementi?
I casi sono due: o inserisci gli elementi in coda invece che in testa,
oppure scorri la lista a partire dal fondo (per fare questo devi usare
una lista doppiamente collegata o una funzione ricorsiva).
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Allocare puntatore ad array con new

Salve,
Se devo allocare un puntatore a intero uso la seguete sintassi:
int* pi = new int (4);
Ma se ho un puntatore ad un array di interi
int(*pa)[3];
come si usa new?
Grazie 

Nel suo scritto precedente, Noixe ha sostenuto :

Fai qualcosa simile a questo:
int *pa=new int[3];
e quando devi deallocare:
delete [] pa;


Ma la sintassi che ho usato io quando va bene?
Cioè dichiarare e allocare successivamente? 

 Cioè dichiarare e allocare successivamente?
Prima di tutto devi decidere che puntatore vuoi. Nel tuo messaggio
dichiaravi un puntatore ad un array di 3 int, mentre Coma ha usato un
puntatore ad int.
Io, invece, ti suggerisco di usare std::vector.
Max

 Io, invece, ti suggerisco di usare std::vector.
Si, infatti uso sempre quelli, pero' ero curioso di provare questa sintassi. 

 No, voglio un puntatore ad array.
quindi la sintassi suggerita non è formalmente adatta, anche 
se con un cast esplicito penso che si possa far funzionare 
il codice.
Dovresti dichiarare per comodità un typedef, che rende più 
semplici e leggibili le dichiarazioni successive, tipo ...
typedef int (* Ptr_Arr_3) [3];
Ptr_Arr_3  PuntatoreAdArray = (Ptr_Arr_3) new int [3];
non so se il cast sia richiesto nel new, ma presumo di si 
perché new int [3] ritorna un "int *" e non un tipo Ptr_Arr_3.
Ho assunto che tu voglia allocare dinamicamente non tanto 
l'oggetto in sé stesso (il puntatore ad array) quanto 
proprio l'array con cui lo stesso verrà inizializzato.
Non ho provato a compilare e quindi non so quanti cristi ti 
manda per il casting, ma il senso del costrutto mi pare 
legittimo.
Se invece vuoi creare dinamicamente proprio il puntatore 
stesso (e lasciarlo orfano di uno spazio puntato, cioè senza 
array sotto i piedi), faresti :
Ptr_Arr_3 * PuntatoreAdArray = new Ptr_Arr_3;
però poi dovrai assegnare un qualche valore di indirizzo di 
array a quel oggetto, se no non serve a niente di 
verosimile. Ma mi pare che non possa essere questo quel che 
volevi fare, anche perchè non si risparmia nessuno spazio e 
si complica inutilmente l'indirezione
ciao
Soviet_Mario


oggetto, se no non serve a niente di verosimile.
infatti posso assegnare l'indirizzo di p1 a p2:
p2 = &p1;
Ma per dereferenziare p2 serve una doppia indirezione... in un caso reale 
avrei usato subito vector, ma mi piace fare dei test come questi :-)
Ciao 

 Cioè dichiarare e allocare successivamente? 
Puoi anche dichiarare e allocare successivamente, non è questo il punto:
int *pa;
pa=new int[3];
La differenza è nell'uso delle parentesi quadre: [].
E.

 La differenza è nell'uso delle parentesi quadre: [].
Ma cambia qualcosa tra:
int* pa = new int[3];
e
int (*pa) [3] = (int(*) [3]) new int [3];
??? 

Noixe ha scritto:

Direi che va bene, anzi la conversione non dovrebbe essere necessaria:
int (*pa) [3] = new int[3];
hai provato a compilarlo?
E.

 hai provato a compilarlo?
Si č ottengo il seguente errore:
cannot convert `int*' to `int (*)[3]' in initialization
vuol dire che appunto il new int[3] restituisce un int* rendendo necessario 
il cast.
Ciao
Newsgroup: it.comp.lang.c++
Titolo: Cerco comando per far stampare la stampante in CONDENSED

Sto scrivendo un programma per Win 3.1 che deve stampare il testo
(sulla stampante) in modo CONDENSED. Premetto che conosco i codice ESC
per farlo (fprintf sotto dos funziona, ma solo nei programmi dos).
Quale comando posso usare sotto windows per stampare condensato?
E in che modo?
Grazie.

nav...@iol.it
 (Er Pomata) ha scritto:

forse non te ne sei accorto, ma la stampa in windows non funziona
cosi'. Niente printf, niente caratteri di controllo ne' comandi
dedicati. Devi prima di tutto devi creare un DC su di una stampante ,
poi devi usare le primitive di windows per la stampa (StartDoc,
StartPage, ecc.) e infine per stampare devi usare la GDI come se
lavorassi a video. Quindi per stampare una scritta con certe
dimensioni devi creare un font delle dimensioni che ti servono e poi
usare TextOut() o DrawText(). Se usi le MFC sei agevolato perche'
buona parte del lavoro viene fatto dal framework e ti puoi limitare a
scrivere solo la parte di stampa vera e propria, inoltre ti viene
gratis anche l'anteprima di stampa.
Gianpaolo Bottin
- Live Long and Prosper -
Newsgroup: it.comp.lang.c++
Titolo: Customizing Toolbar...

Utilizzo Micro$oft VC++6.0 SrvPack 1 in Italiano ...squallido vero? ma
devo accontenarmi :-( e ho la necessità di gestire tutte quelle cose
carine (vedi Customize, TBN_qualchecosa) che dovrebbero facilitare la
possibilità di personalizzare le toolbar dall'utente.
Ho MSDN ma non trovo esempi di codice o spiegazioni sufficenti da
farlo funzionare bene (n.b. per il momento qualcosa si muove ma in
modo ignobile e vergonoso).
Se sapete dove mandarmi (... non a quel paese) per trovare un pò di
informazioni vi sarei molto grato.

possibilità di personalizzare le toolbar dall'utente.
L'articolo "Customizing a Toolbar", nel libro "Programming
the Windows 95 User Interface" di Nancy Cluts (disponibile
anche da Microsoft Press, e in italiano mi pare da Mondadori
Informatica, ma comunque compreso interamente in-linea
nella versione della MSDN che accompagna VC++6 come sua
documentazione -- almeno la versione che ho io -- oltre che
consultabile sul sito Web MSDN, ecc), presenta un esempio
completo, a livello di API, ma integrato anche in MFC; si puo`
fare in modo piu` MFC-oso, vedi l'articolo "CToolBarCtrl: Handling
Customization Notifications" nella reference MFC.
Un altro esempio ancora lo trovi in "SAMPLE: Customizing the
TOOLBAR Control" nel Platform SDK (sempre incluso sullo
stesso MSDN gia` detto) e relativo BARSDI.EXE, sempre a
livello di API, ma pur sempre utile per chiarire le cose.
Alex

Newsgroup: it.comp.lang.c++
Titolo: Asset statici

In attesa di c++11, come fate voi ad avere assert statici?  Sto
cercando qualcosa che funzioni sia all'interno di una funzione che
fuori, e che non produca warning spuri in compilazione.  Ho googolato
un po' ma non ho ancora trovato niente che abbia tutti i requisiti. Al
momento sto usando questa:
#define STATIC_ASSERT(expr, msg)   \
extern char STATIC_ASSERTION__##msg[1]; \
extern char STATIC_ASSERTION__##msg[(expr)?1:2]
che sembra funzionare sia dentro le funzioni che fuori (e che mi da'
anche uno straccio di messaggio grazie alla concatenazione di "msg",
cosi' mi e' piu' facile capire di cosa si tratta quando scatta), ma
genera warning in compilazione perche' l'array non e' usato.
Voi cosa usate?
Thx.

 ha scritto nel messaggio 
news:e4408e00-9912-437f...@o33g2000pri.googlegroups.com...

Newsgroup: it.comp.lang.c++
Titolo: Cast

Ciao a tutti!
Avrei una domanda da farvi...
Supponiamo di avere una classe complex .... e` possibile fare una
funzione che faccia il cast in modo da convertire un float in un
complex??
Cosi` per fare la somma di un complesso e di un numero reale non sarebbe
necessario fare gli operatori:
	float + complex
e 
	complex + float
ma basterebbe fare solo il:
	complex + complex
Non credo che sia possibile.. (come si fa ad aggiungere un metodo alla
classe float?!?!), ma sarebbe molto bello se si potesse fare....
Ciao!
    Andrea
--
Automatic posted from 
kelvin.ph.unito.it
 [193.205.64.1]
via Mailgate Server - 
http://www.mailgate.org

classe float?!?!), ma sarebbe molto bello se si potesse fare....
Non occorre aggiungere nulla a float; normalmente lo si fa con
un costruttore di complex.
Risparmiando per il momento i template, la cosa e` del tipo:
class complex {
    float real, imag;
public:
    complex(float r=0.0, float i=0.0): real(r), imag(i) {}
    // ecc ecc
};
Questo aggiunge a complex anche un costruttore di
default, comodo per fare ad esempio array di complex.
Alex

 default, comodo per fare ad esempio array di complex.
Sisi.. questo lo sapevo...
Grazie e mille del chiarimento!!


questo caso.. pazzesco.... il C++ e` davvero potentissimo!
A volte sin troppo...:-).  Infatti non e` detto che uno *voglia* che siano
effettuate automaticamente delle conversioni solo perche` ha dei
costruttori con un solo parametro... appunto per questo, a tali ctor
si puo` applicare l'attributo "explicit", che ne vieta l'uso "implicito"
per conversioni di questo tipo.
Alex

Newsgroup: it.comp.lang.c++
Titolo: getchar() e combinazioni di tasti

con getchar() e' possibile rilevare le pressioni di combinazioni di tasti,
come Ctrl-X, Alt-Ins, Ctrl-Canc, Shift-Ins ecc...?
in caso negativo che libreria posso usare?
grazie
buona pasqua

 in caso negativo che libreria posso usare?
In linea di massima non esiste in C e in C++ una funzione che ritorni dopo
che l'utente ha premuto un tasto qualunque.
Non standard puoi provare a guardare getch() (anche _getch() ) (definite
nella conio.h), oppure le librerie curse (oppure tante altre librerie
platform-dependant)
Dimmi... Non è che vuoi fare un programma per Windows? Nel qual caso la
domanda era mal posta. E la risposta quindi non data.
--- bye

 domanda era mal posta. E la risposta quindi non data.
no. sono in linux (programma console)
allora, getchar() o getch()?

 allora, getchar() o getch()?
getchar non ti consente. getch non credo sia supportata sotto linux. Prova
le curses oppure scrivi in un ng di programmazione linux.
--- bye
Newsgroup: it.comp.lang.c++
Titolo: Sito dell'olocausto!!! (molto OT su I.C.L.C++)

In piu' che venga fatto in clima preelettorale.
Io invece non riesco a comprendere come mai questo messaggio sia
apparso qui e non invece sui newsgroup dedicati alla politica(io li
frequento quasi tutti e non ho visto nessun messaggio del genere) dove
sicuramente sarebbe stato molto piů in tema.
Io sospetto fortemente che si tratti di uno scherzo, ed il fatto che
quel tale abbia spedito il messaggio 5 volte me lo fa credere ancora
di piů.
Il Ghenio
-----
Jesse: Preparatevi a passare dei guai.
James: Dei guai molto grossi!!!
(Team Rocket)
-----

 wrote in message
ZCWwOJP5CcWox+...@4ax.com...


indifferenti a quello che e' accaduto
Apprezziamo molto il tuo modo di pensare. Ma purtroppo il messaggio e'
OT ed anche la sua relativa discussione.
Se ti vuoi divertire invialo sul gruppo dedicato alla Lega Nord :-))).
Bye.
-- 
Bye.
Joseph Parrello - OWL/C++ Programmer
http://JoParrello.freeweb.org
(
jopar...@geocities.com
)

Se ti vuoi divertire invialo sul gruppo dedicato alla Lega Nord :-))).
o magari su it.cultura.storia, oppure su it politica o
it.politica.destra.
Il Ghenio
-----
Noi Europa siamo ovunque ci sia un branco
capace di provare amore per la natura,
di arrossire di vergogna per l'egoismo e i compromessi,
di sentire orrore per la volgarità il disordine e le schiavitù.
Veri partigiani europei sono tutti quelli che non hanno mai accettato
nulla del nuovo costume borghese e al di là delle differenze
ideologiche un giorno staranno tutti dalla stessa parte.
Contro di voi,per la libertà.
(Artamano 4/1/2000)
-----

 wrote in message
gOazOAYsbgHmUH...@4ax.com...

Newsgroup: it.comp.lang.c++
Titolo: Cstring

Scusate se io ho un oggetto CString
come faccio a prendere delle sottostringe?
Per es.
CString="192.168.10.24";
ora voglio che mi suddivida questo valore in 4 interi ciascuno dei quali
valga 192,168,10,24..
Scusate la semplicità e la banalità della domanda.
Vi ringrazio anticipatamente a tutti
Se sono O:T insultatemi pure ma come vi ho già detto a scapito di insulti
sul c++ vorrei parlare con voi in quanto mi sembrate molto preparati..
Un saluto a tutti
e grazie ancora.

 wrote in message
news:W3G9b.106507$sj6.1...@tornado.fastwebnet.it...

CString non è un tipo della libreria standard, ma se tu ipoteticamente ci
avessi fornito l'interfaccia
la risposta sarebbe stata:
aggiungi una funzione per trovare un carattere da una data posizione ...
Find(carattere, startpos), poi un SubString(from, len)
e così via :)
antonio

Newsgroup: it.comp.lang.c++
Titolo: Creazione DLL

... qualcuno di voi potrebbe dirmi com'è la sintassi corretta del
prototipo di una "Function" per esportarla come DLL?
Grazie, Ettore.


... grazie ... mi sono già risposto da solo .... :-)

Newsgroup: it.comp.lang.c++
Titolo: stampa di array

In un esermpio ho trovato questo codice per stampare un array:
void print(const float a[],const int n)
{
for(int i=0;i<n-1;i++) {
cout<<a[i]<<",";
if ((i+1)%16==0) cout<< endl;
}
cout<<a[n-1]<<endl;
}
l'array e' stato inizializzato nel main ad 8 elementi.
La domanda e' ,c'e' un motivo a me oscuro che fa quella if ? non era +
semplice dcrivere un for(i=0;i<=n;i++) cout<<a[i];
Grazie

 semplice dcrivere un for(i=0;i<=n;i++) cout<<a[i];
Se l'array non ha mai più di 15 elementi
l'if non avrà mai argomento pari a 'true'.
Il codice dell'if fa stampare un "a capo"
ogni sedici elementi (al 16°, al 32°, ...).
SiMoStro

Newsgroup: it.comp.lang.c++
Titolo: classi annidate

Come posso risolvere questo problema?
class B {
  class A;
  A prova;
};
class B::A {};
int main() {
}
ovviamente se prova fosse un A* compilerebbe, così come se scrivessi:
class B {
class A {};
  A* prova;
};
int main() {
}

 Come posso risolvere questo problema?
Non puoi semplicemente definire A all'interno di B e non all'esterno?
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
The EMG Music page:         
http://www.emagsoftware.it/emgmusic
 

 Non puoi semplicemente definire A all'interno di B e non all'esterno?
Mi sembra una soluzione meno leggibile, A potrebbe non essere banale 
in quanto a membri e attributi e B potrebbe avere più di una classe 
annidata. Grazie comunque della risposta (da cui deduco non sia 
possibile fare altrimenti).

 possibile fare altrimenti).
Deve essere per forza annidata?
Ciao
  Andrea

 possibile fare altrimenti).
No, proponevo solo una possibile soluzione ma puň essere benissimo che ce ne 
siano altre migliori.


 };
Una soluzione potrebbe essere la definizione di un  namespace 
riservato ai dettagli implementativi all'interno di quello corrente, 
tipo:
namespace impl {
class A {};
}
class B {
  impl::A prova;
};
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: C++ e Javascript possono sostituire Java?

Salve,
come da oggetto, č possibile una cosa del genere?
Cioč, io so che con Java si possono creare applicazione per il web che
C++ non offre... ma ciň che da Java in piů di C++, si puň ottenere con
Javascript? Se no, con quale altro linguaggio? Python?
Grazie
Luigi
-- 
Posted from 
smtp1.libero.it
 [193.70.192.51] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:3AB2851B...@hotmail.com...


 
Che ci provi....


Con un po' di fortuna si elidono :-)
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: Newbie: vettori

Ho bisogno di un aiuto,
č possibile passare ad una funzione un vettore a due dimensioni?

 č possibile passare ad una funzione un vettore a due dimensioni?
Puoi crearti una classe per le matrici (o reperirne qualcuna in rete) e
passarla per riferimento.
Altrimenti, se le dimensioni sono note, usi il classico T** ptr_matrice; poi
passi alla funzione anche i il numero di righe e di colonne, perņ.

 passi alla funzione anche i il numero di righe e di colonne, però.
oppure si puo` lavorare con un vector di vector.
-- 
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.
    - Brian W. Kernighan
Newsgroup: it.comp.lang.c++
Titolo: passaggio di funzione membro all'esterno di una classe

#include <iostream>
#include <conio.h>
using namespace std;
int Global(int (*p)(int))
{
return p(2);
}
int Local(int x){return x*3;}
class A
{
public:
int ALocal(int x){return x*3;}
A() {
         //cout << Global(ALocal) << endl;   //Questo non funziona
    }
};
int main()
{
cout << Global(Local) << endl;
A a;
while (!kbhit()) ;
return 0;
}
__________________
Come mai alla funzione Global riesco a passare la funzione Local e non la
funzione ALocal della classe A? Qualcuno mi può spiegare la differenza?
Grazie

 funzione ALocal della classe A? Qualcuno mi può spiegare la differenza?
ALocal non e' una funzione infatti!!!
Tutti i metodi di una classe A hanno il primo argomento esplicito
che e' A* this o const A* this a seconda se il metodo non e' const o meno:
class A {
.......
    void foo(int);                        // in realta' sarebbe void foo(A*
this, int);
    void beer(double) const;      // in realta' sarebbe void beer(const A*
this, int);
........
};
Se vuoi passare l'indirizzo di un metodo
devi dichiarare Global nel seguente modo:
int Global(int A::(*p)(int))
{
return p(2);
}
che sicuramente non e' giusto, ma qualcosa di simile     :-(
(la sintassi ogni volta che mi serve la vado a vedere sullo Stroup
e per ora non lo ho sottomano, spulciaci tu un attimo).
-- 
Posted from [194.214.173.28] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 scritto nell'articolo
<056201c124d0$83c8d8a0$1aadd6c2@gmendola>...

Al momento ho lo schildt 2^ ed. Comunque immagino che bisogna dichiarare la
classe prima della funzione Global e poi inserire come primo parametro un
oggetto di classe A, e tramite Overload, creare una seconda Global che
funzioni anche con la funzione Local. Grazie.

          //cout << Global(ALocal) << endl;   //Questo non funziona
... e qui cerchi di passare una funzione membro. Non sono la stessa
cosa. Per poter passare la tua funzione membro devi dichiarare il
parametro come puntatore a funzione membro del tipo corretto, ad es.:
int Global(int (A::*)(int));
Nota poi che per chiamare la funzione membro puntata hai comunque
bisogno anche di un'istanza della classe corrispondente:
typedef int (A::* Puntatore )(int);
Puntatore p = &A::ALocal;
A a;
int i = (a.*p)(5);
Nota la sintassi per passare il puntatore a membro e quella per
chiamarlo.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: IDE per GNU C++

Ciao a tutti,
sapete dirmi se esiste un IDE (possibilmente freeware o shareware) per
Cygnus GNU C++ win32 che consenta di scrivere codice,compilarlo,
debuggarlo, salvarlo, ecc..  tutto da windows?
Ho trovato il Codewright 5.0 Demo, lo sto provando, sembra carino ma
non è facile da configurare. C'è qualcos' altro di simile in
circolazione?
       Roberto
       *******
email: 
ro...@ctonline.it
       Roberto
       *******
email: 
ro...@ctonline.it

debuggarlo, salvarlo, ecc..  tutto da windows?
Mi pare che il sistema complessivo Cygnus comprenda un EMACS per
Windows configurato per svolgere appunto questi compiti.  In alternativa,
Sniff++, disponibile ora anche per Windows ma tutt'altro che freeware (in
effetti piuttosto caro!-) e` un'IDE che supporta (anche) i vari strumenti
GNU.
Alex


sarà stata un'allucinazione ma mi è parso che il programma di
installazione di Sniff+ sia grande pressapoco 27MB.... esagerati 8-)
       Roberto
       *******
email: 
ro...@ctonline.it

installazione di Sniff+ sia grande pressapoco 27MB.... esagerati 8-)
Perche` un'esagerazione?  Non ho idea delle dimensioni, ma una cifra
del genere mi sembra credibile.  EMACS con tutti gli accessori per
agganciarsi ai tools GNU, fare grafici di derivazioni di classi, ecc ecc,
a quanto ammonta?
Alex
Newsgroup: it.comp.lang.c++
Titolo: Diventare stdin e stdout per un programma

Come faccio ad eseguire un programma da una chiamata tipo system() o
exec() et similia e poter leggere il suo output e diventare io
(programma principale) il suo input?
Grazie.
Pietro Femminò

 (programma principale) il suo input?
Unix? Con le pipe. Apri due pipe, e quindi redirezioni sulle pipe
input e output. Quindi forki e il figlio si trova come input e
output la pipe con il padre.
Se guardi manuali ed esempi sulle pipe trovi tutto. Se non basta
chiamami ancora.
Ciao
	Stefano
Newsgroup: it.comp.lang.c++
Titolo: FAQ N.0 -- LINEA GUIDA

"Che differenza c'e` tra il C++, il visul C++, il borland C++
builder..."
Su questa domanda non c'e` molto da discutere. Direi che
nel documento finale sarebbe una utile integrazione al
manifesto del gruppo che vorrei inserire come premessa
di tutta la faq.
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

 builder..."
Il C++ è _IL_ linguaggio che il comitato ISO ha recentemente ratificato
come standard. Gli altri sono implementazioni più o meno conformi dello
stesso scritte, rispettivamente, dalla Microsoft e dalla Inprise (ex
Borland). Imparare bene il C++ standard è la migliore base di partenza
per poter poi spiccare il volo verso ambienti più specifici.
EMG

EMG
Assicurati di postare nel thread per le risposte, altrimenti spezzi i
thread e diviene piu` difficile mettere i pezzi insieme.
Paolo


 thread e diviene piu` difficile mettere i pezzi insieme.
E' quello che ho fatto, come per questo messaggio. Cosa non va nei miei
replies?
EMG

replies?
A me appariono nei thread "LINEA GUIDA"...
Spero non dipenda da me, anche perche` lo stesso problema
non si presenta con altre risposte.
Cmq non ti preoccupare, non ho ancora imparato a lanciare
sassi tramite monitor ;)
...E neanche ci penso, ho da poco acquistato un bel 19" ultrapiatto
e ho intenzione di coccolarmelo per bene!


 e ho intenzione di coccolarmelo per bene!
Come ti invidio... :-)
EMG
Newsgroup: it.comp.lang.c++
Titolo: Informazione...grazie...

Salve a tutti.
Sono alle prime armi col C++...potreste dirmi cosa sono le "classi" e
spiegarmi quali sono gli elementi fondamentali della programmazione in C++?
Poi... potreste consigliarmi un buon sito dal quale scaricare materiale
didattico e perchè no anche buon codice sorgente?
Grazie mille...
Auguri a tutti e saluti da...
Alfonso Di Stasio.

didattico e perchè no anche buon codice sorgente?
Puoi partire da vari buoni siti, come l'Association of C and C++ Users,
www.accu.org
, o la C++ Virtual Library, 
http://www.desy.de/user/projects/C++.html
(particolarmente i sottolink "Getting started" e "Learning C++" di
quest'ultima, 
http://www.desy.de/user/projects/C++/Docs.html
 e
http://www.desy.de/user/projects/C++/Learning.html
 rispettivamente).
Ma secondo me ti conviene avere anche un buon libro introduttivo,
per "far ordine" in quello che altrimenti rischia di presentartisi come
un caos: Lippman e Lajoie, "C++ Primer 3rd edition", Addison Wesley.
Alex



Ti consiglio di scaricarti il libro Thinking in C++, che puoi torvare in
questo sito:

 
Thinking
in C++


Attenzione e' ancora una versione non definitiva, pero' e' molto ben
fatto e serve sia a chi non sa nulla del C++, sia per chi vuole approfondire
determinati argomenti.

Spero di esserti stato utile, ciao.

Alfonso Di Stasio wrote:

Salve a tutti.

Sono alle prime armi col C++...potreste dirmi cosa sono le "classi"
e

spiegarmi quali sono gli elementi fondamentali della programmazione
in C++?

Poi... potreste consigliarmi un buon sito dal quale scaricare materiale

didattico e perchè no anche buon codice sorgente?

Grazie mille...



Newsgroup: it.comp.lang.c++
Titolo: Cosa vuole dire Std

Cosa vuole dire Std di visual c++?
che differenze ci sono con l'enterprise e il pro?
scusate la domanda di un novizio
Grazie

...


La versione Standard di VC e' quella piu' "povera" poi c'e' la professional
e poi la enterprise. Essenzialmente si differiscono per gli add-on che
hanno: la prima il compilatore C/C++ e basta le altre hanno altri ambienti e
server (SQL etc), se ti fai un giro a 
www.microsoft.com
 con un minimo di
ricerca ti trovi tutte le info super esaurienti.
Ciao, Marco.

Cosa vuole dire Std di visual c++?
Suppongo che stia per standard, ma la cosa comunque non
ha a che vedere con lo standard del linguaggio.
Paolo
------------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
------------------------------------------------------------------
Newsgroup: it.comp.lang.c++
Titolo: Aiuto modem

Salve a tutti,
    Nessuno sa come ricavare il numero dell'utente che chiama il mio
modem ???
    Come sistema operativo uso Dos o Linux .
grazie a tutti

    Come sistema operativo uso Dos o Linux .
magari basterebbe un modem digitale... :)

 magari basterebbe un modem digitale... :)
E' sufficiente avere un modem abilitato al CLI in standard italiano  (molti
dei modem V90 lo sono, anche se non tutti) e poi farti abilitare il servizio
da Telecom (attento: si paga un tot al mese).
Per visualizzarlo il modo più semplice è quello di abilitarlo con
l'opportuno comando AT (tramite un programma terminale, es. Hyperterminal di
Windows 95, in DOS io usavo Terminate, in Linux non so ) e tra il primo e il
secondo squillo, a terminale aperto, vedrai apparire, se tutto OK, il numero
del chiamante.
Su it.tlc.telefonia e it.hobby.elettronica se ne è parlato a lungo.
Per i comandi AT prova AT#CID=1  o AT#CID=2 per attivarlo (se rispondo OK
vuol dire che ha riconosciuto il comando)
Per vedere che modalità è attiva prova con  AT#CID?
P.S. a me risponde sempre che tutto va bene ma poi non va un fico secco
(mentre l'apparecchietto Telecom funziona ...).
Ciao, Carlo
c_al...@iol.it
Newsgroup: it.comp.lang.c++
Titolo: shift su intero signed

Ciao,
cosa succede se faccio uno shift a sinistra su un intero signed (int)?
Se voglio controllare il fatto che un intero (senza segno) che shifto a
sinistra vada in overflow, come posso fare?
Ad esempio così?
if ( (data_sent<<7) < data_sent ){ 
        cout<<"Overflow\n";
}
Grazie. 

 }
Questo non e' detto che funzioni. Puoi avere overflow e comunque
risultato maggiore del numero di partenza. Quello che devi fare e'
verificare che il tuo numero sia inferiore al massimo numero che
shiftato delle posizioni che ti interessano e' ancora rappresentabile.
Qualcosa come
#include <climits>
( 1 << ( sizeof(data_sent) * CHAR_BIT - 7 ) ) - 1
Non sono sicuro dei conti, ma l'idea e' quella.
Ciao,
Nicola

 Qualcosa come
una soluzione più naturale potrebbe essere
if ( (x<<7)>>7 != x) {
	// overflow
}

?manu* wrote:

Questa soluzione è più o meno performante di quella riportata da Nicola
Musatti? La dovrei utilizzare su un router (andrebbe applicata più volte
per un singolo pacchetto), quindi anche una minima differenza può essere
importante.

 
Una cosa collegata, ma che non c'entra con la richiesta originale:
Dato questa riga di codice, dove tutte le variabili sono unsigned, facendo
così sono sicuro che il risultato sia unsigned e corretto?
return (int)((wfr<<10) / sum_pfr) - (_data_sent<<10) / sum_data_sent;
C'è differenza con questa riga?
 
return ((int)wfr)<<10 / sum_pfr - _data_sent<<10) / sum_data_sent;

 così sono sicuro che il risultato sia unsigned e corretto?
s/unsigned/signed

 Se ricordo bene il comportamento dipende dall'implementazione.
E' così.
-- 
Python is fast enough for our site and allows us to produce 
maintainable features in record times, with a minimum of developers.  
(Cuong Do, Software Architect, YouTube.com)

Gdss wrote:
 > return ((int)wfr)<<10 / sum_pfr - _data_sent<<10) / sum_data_sent;
Dipende dove metti la parentesi aperta che manca.
E.

   
Potresti ad esempio costruire una maschera dei bit che
saranno sicuramente gettati nello shift, ad esempio:
    int              nBitMax;
   unsigned int bitMask;
    nBitMax = (CHAR_BIT*sizeof(unsigned int)) ;
    bitMask = ((~((-1)<< nBit))<< (nBitMax-nBit));
    if(data_sent & bitMask)
   {
            /* OVERFLOW dello shift */
    }
Da provare, comunque l' idea e' quella :-)
brix

Ovviamente, se il numero di bit dello shift e' costante, basta definire
una macro:
#define MAXBITS          (CHAR_BIT*sizeof(unsigned int))
#define MYSHIFT          (7)
#define OVF_MSK   (((~((-1)<< MYSHIFT))<< (MAXBITS-MYSHIFT))
if(data_sent & OVF_MSK)
  ..............
brix

Newsgroup: it.comp.lang.c++
Titolo: Files in una cartella?

Come faccio a recuperare un elenco dei files presenti in una determinata
cartella ?
Grazie per ogni eventuale aiuto.
Michael Seibig

L'unica risposta che conosco che sia indipendente dalla piattaforma (e
quindi in argomento per questo gruppo) e' di ricorrere alla libreria
dir_it, presente su 
www.boost.org
, con la cautela che se non sbaglio e'
ancora in versione beta.
Altrimenti ti consiglio di ricorrere ad un newsgroup specifico per la
tua piattaforma.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: vettori di puntatori e struttura

devo copiare una stringa nel campo di una struttura all'indice 5. Il campo
in questione č definito cosě:
char *pippo[10];
ed una stringa..
char *ciao;
per copiare faccio:
strcpy(pt->pippo[5], ciao);
pt č il puntatore alla struttura.
ma non funziona, penso sia un problema di puntatori a puntatori.
Sapete chiarirmi il problema?
Grazie
Fabrizio

 Fabrizio
Per facilitare avresti dovuto includere anche tutte le definizioni ma.....
La funzione strcpy richiede come parametri due char*.
strcpy(pt->pippo,ciao); copia correttamente ciao in pt->pippo perchè ciao è
di tipo char* mentre pt->pippo è stato sicuramente dichiarato come char*
oppure char[] (che per la funzione strcpy è "quasi" lo stesso).
L'espressione pt->pippo[5] invece non restituisce un char* bensì un char (il
carattere in posizione 6), mentre a te serve l'indirizzo di questo char.
Quindi va referenziato con l'operatore reference &
strcpy(&pt->pippo[5],ciao);
In questa espressione  i due argomenti sono entrambi char*, il primo punta
al 6 carattere di pippo, l'altro al primo carattere di ciao.
Dovrebbe funzionare, fammi sapere.
p.s.: forse servono le parentesi subito dopo il reference e subito prima
della virgola così:
strcpy(&(pt->pippo[5]),ciao);
non so bene, non ricordo se l'operatore -> ha più o meno priorità di &, fai
due prove.

 al 6 carattere di pippo, l'altro al primo carattere di ciao.
Ciao, _sav_  :-)

 certo in un puntatore a char! ;-)
Infatti non č giusto. Se pippo e dichiarato come array di char* la sintassi
originale era corretta, se pippo č array di char* pt->pippo[5] č ovviamente
di tipo char*.
Il problema, se č sintattico, non lo trovo. Probabilmente il problema č nel
codice che sta prima (che l'autore del post non ha messo), presumibilmente,
come tu hai fatto notare, nel mancato assegnamento della memoria per le
singole stringhe dell'array.
Devo leggere meglio i post prima di rispondere.
Magari la prox volta non rispondo proprio che č meglio.

 wrote in message
XPBra.22116$3M4.6...@news1.tin.it...

Newsgroup: it.comp.lang.c++
Titolo: template class function

Con gcc 2.96 e 3.1 mi da errore dove segnato dal commento
Con MSVC 7.0 tutto ok.
Cosa prevede lo standard ?
Come posso farlo funzionare anche su gcc (senza parametri dummy possibilmente).
Se potete rispondetemi anche per e-mail perche' ho una connessione lenta.
#include <stdio.h>
class A
{
	public:
	A() {}
	template <class T> T* f1()
	{
		printf("%d\n",sizeof(T));
		return NULL;
	}
};
template <class K> class B
{
	public:
	B() {}
	K* f2()
	{
		return (a.f1<K>()); // ---ERRORE---
	}
	A a;
};
int main(int argc, char ** argv)
{
	B<int> b;
	b.f2();
	return 0;
}

                 return (a.f1<K>()); // ---ERRORE---
Questa riga diventa:
                 return (a.template f1<K>()); // ---ERRORE---
Questo e' necessario in un compilatore che segue lo standard per poter
distinguere, quando incontra il "<", tra l'operatore minore ed il
parametro di un template.
Ciao,
Nicola

 parametro di un template.
Allora mi chiedo: chissà come fa MSVC 7.0 a distinguere i 2 casi...
Magari il "minore di" è rappresentato da un'altro simbolo? :DDD
Eppure, sarebbe conforme alla mentalità M$. Basta pensare al caso dei
BackSlash... sbaglio o è solo Windoz che li usa come separatori di
directory?
Ciao
--
Luigi


Il discorso si fa *molto* complicato ed ha a che vedere con come lo
standard specifica che debbano essere gestiti i template. Per poter
garantire che una specifica specializzazione di un template sia la
stessa in tutti contesti e consentire l'implementazione dell'export dei
template, lo standard specifica che durante la compilazione i nomi
dipendenti da parametri di template non siano risolti nel contesto della
definizione di un template, ma in quello della sua istanziazione.
Questo fa si che quando scorre l'istruzione incriminata il compilatore
non deve far conto su informazioni sulla struttura di A per identificare
a.f1<K> ed e' quindi necessario un meccanismo per risolvere
l'ambiguita'.
Presumibilmente Microsoft se ne fa un baffo di tutto questo. Cosi' si
semplifica la vita per i casi semplici, ma si pone in condizione di non
poter gestire quelli complessi.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: File Size

Ciao a tutti,
ho questo problema.
In un programma scritto in VC++ 6.0 con uso delle MFC come posso sapere la
dimensione di un file.
Sono arrivata ad aprire il file con fopen e poi ho bisogno di ottenere la
dimensione del file. Esiste una funzione che passando il nome del file mi
ritorna la sua dimensione?
Qualcuno mi puň aiutare?
Grazie
Claudia[]

 ha scritto nel messaggio
news:8ln0s9$edt$1...@nslave1.tin.it...

Prova cosě Claudia
handle = FindFirstFile(path, &FindFileData);
 size = (FindFileData.nFileSizeHigh * (MAXDWORD+1)) +
FindFileData.nFileSizeLow; /*size č un long*/
FindClose(handle);
In size avrai la dimensione del file che si trova nel percorso path
Ciao
AM

 
prova a vedere se siste la funziona stat
-- 
Wave++, member of EventOrizon software
http://members.xoom.it/wavexx

Premetto che sono poco pratico di c++, ma vorrei fare una domanda:
Come posso fare per spostare il puntatore del mouse in una determinata
coordinata?
Grazie

 ha scritto nel messaggio
news:9Rg8#k99$GA....@news1.galactica.it...

E che cosa c'entra col C++? A seconda del sistema operativo che hai devi
rivolgerti al newsgroup giusto; per esempio se parli di windows cerca i
newsgroup su programmazione e win32.
Ciao!


In alternativa se stai lavorando con MFC puoi usare la funzione statica
CFile::GetStatus che ti riempie una struttura che tra le varie informazioni
ti riporta anche la dimensione del file.
Ciao
Porlock

Newsgroup: it.comp.lang.c++
Titolo: data di creazione di un file

come faccio a recuperare la data di creazione di un file?
grazie

GetFileTime(HANDLE hFile, struct FileTime * lpftCreation, struct
FileTime * lpftLastAccess, struct FileTime * lpftLastWrite)?
!!! a parte il primo argomento, non sono sicuro dell'ordine degli altri!
struct FileTime e' formato da due DWORD (data e ora)
Se aspetti per qualche giorno ti riporto tutto correttamente, qui non ho
in
mano niente...
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG