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

Ciao,
ho un progetto in VC++ e in testa ad un sorgente .cpp inserisco queste
righe:
#ifndef _SIZE_T_DEFINED
typedef int size_t;
#define _SIZE_T_DEFINED
#endif
Ma ottengo questo bel errore:
:\Sviluppo\apf\APFUNC.cpp(2) : error C2371: 'size_t' : redefinition;
different basic types
        C:\WINNT\TEMP\a00122if(72) : see declaration of 'size_t'
Daccordo che come cita MSDN: The Microsoft run-time library defines the
following standard types .... size_t ecc. Ed infatti la dichiarazione di
size_t la ritrovo in STDDEF.H.
Forse che size_t è un tipo come int, double, ecc. ?

 Forse che size_t è un tipo come int, double, ecc. ?
size_t e' un tipo previsto dal linguaggio ed (obbligatoriamente)
definito dall'implementazione; diciamo, per semplicita', in modo che
un size_t possa rappresentare l'indice di qualunque elemento di un
array di oggetti di qualunque tipo.  Non puoi ridefinirlo a modo tuo.
Inoltre si tratta, per sua natura, di un'entita' unsigned: e sarebbe
un errore definirlo come un int.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

un errore definirlo come un int.
Non è detto che sia per forza un unsigned int: dipende dall'implementazione.
Tuttavia concordo con te nel dire che sarebbe un errore definire in modo
diverso un tipo di cui molte funzioni (standard e non) fanno uso.
Ciao
Domenico Barra

 basterebbe non includere quell'header perché tutto vada bene.
Nel sorgente è la prima istruzione che appare, quindi non c'è nessun altro
include prima.
Mi domando dove possa il compilatore visual c++ andare a definire size_t...

Mi domando dove possa il compilatore visual c++ andare a definire size_t...
Premesso che, se non ricordo male, VC++ include automaticamente alcuni
header, c'è da dire che anche un #include *dopo* la typedef può dar luogo
all'errore: il sistema di controllo della definizione di size_t varia da
implementazione a implementazione, quindi:
1) Se proprio vuoi ridefinire size_t, vai a vedere quale #ifdef c'è prima
della typedef, e usa quel metodo di controllo.
2) Così però avrai un codice per niente portabile...
Suggerimento: *inventa* un altro tipo ;-)
Ciao
Domenico Barra
Ciao
Domenico Barra
Newsgroup: it.comp.lang.c++
Titolo: Eseguire un applicazione da un'altra applicazione

Ciao.
Come faccio a lanciare un programma da un altro programma scritto in C,
in ambiente Linux (quindi niente MFC)? Ovvero come implemento
ShellExecute sotto Linux?
Grazie,
Nico
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

In C++ l'unico meccanismo standard e' chiamare std::system() .
Altrimenti chiedi su it.comp.os.linux.development .
Ciao,
Nicola

 wrote in message
news:3C59080D...@divalsim.it...



Mi faresti un esempio per cortesia?
Semplicemente 'std::system("./pippo");'.
Comunque linux offre moltissime alternative per gestire i processi.
Potresti quotare?
Per "quotare" si intende il riportare le parti salienti del messaggio 
a cui si risponde al fine di facilitare la comprensione delle proprie 
risposte da parte dell'interlocutore, degli altri lettori del ng (che 
magari non leggono tutti i messaggi o che comunque hanno bisogno di 
"rinfrescare" la memoria di un thread che seguono, ma non li 
coinvolge direttamente) e anche di chi va a rileggere il messaggio 
trovandolo su 
groups.google.com
 o altri motori di ricerca.
E' opportuno riportare nelle risposte solo le parti di messaggio per 
cui si fanno osservazioni e/o aggiunte, evitando di riportare tutto 
il testo.
Per qualche nota sul quoting:
http://www.uwasa.fi/~ts/http/quote.html
-- 
Marco Barisione (ICQ 84277092)

Newsgroup: it.comp.lang.c++
Titolo: distruttore e namespace con vs6 sp0/5 | g++

usando visual studio 6 con service pack 0 e 5, perche' il distruttore di un
oggetto istanziato all'interno di un namespace non viene chiamato a meno
che:
- iostream.h venga incluso al posto di iostream
- "using namespace std;" venga commentato
?
//----------
#include <iostream>
using namespace std;
class a{
public:
 a(){cout << "a()" << endl;}
 ~a(){cout << "a~()" << endl;}
};
namespace c{
 a a1;
}
int main(){
    a a2;
    return 0;
}
//EOF
output:
a()
a()
a~()
//----------
il distruttore di a2 (non contenuto all'interno del namespace) viene sempre
chiamato.
questo problema sembra affliggere solo visual studio 6 service pack 0/5
mentre sotto linux g++ non da problemi.
e' da notare che entrambi i costruttori di a1 e a2 vengono chiamati e il
problema persiste perfino rendendo a1 un oggetto globale (rimuovendolo
quindi dal namespace c).
che dite, e' un problema mio o devo cambiare compilatore? (.net?)
bye, demo

E' un baco del compilatore.
Ciao,
Nicola

 che dite, e' un problema mio o devo cambiare compilatore? (.net?)
o anche MinGW (gcc x windows)
-- 
[ RiK0                                ]
[ non credo negli schemi non vincenti ]
[ two is an odd prime number          ]

Newsgroup: it.comp.lang.c++
Titolo: Numeri casuali

Ciao a tutti.
Come posso fare per generare numeri casuali a distribuzione uniforme
nell'intervallo unitario?

 ha scritto nel messaggio
news:TcZ48.17125$761.5...@twister1.libero.it...

Newsgroup: it.comp.lang.c++
Titolo: API Win32 e Visual C++

C'e' qualche anima pia che mi darebbe il nome dell'autore della bibbia sulle API
Win32 ed il loro utilizzo con Visual C++?
p.s.: sarebbe interessante anche il nome della bibbia......
~#~#~#~#~#~#~#~#~#~
Gabriele Bertolucci
pbe...@vi.ats.it
pbe...@freemail.it
http://userspace.ats.it/free/pberto/
http://www.fortunecity.com/skyscraper/spiff/523/
ICQ #: 9732192
~#~#~#~#~#~#~#~#~#~

p.s.: sarebbe interessante anche il nome della bibbia......
"Programmare Windows 95 con MFC" é il titolo del testo di
Prosise (in Italiano, traduzione decente Mondadori Informatica);
"Advanced Windows Programming" quello di Richter (qui la
traduzione mi convinceva meno per cui ho preso l'originale);
il Petzold e Yao purtroppo lo chiamo sempre cosí, Petzold e
Yao, per cui non so esattamente il titolo...:-).
Alex

Newsgroup: it.comp.lang.c++
Titolo: Convertire un int in una stringa e funz. itoa di VC++





Come si fa a convertire un numero intero in una stringa con 
VC++ ?
Col C usavo la funzione itoa che aveva pressappoco il seguente 
prototipo:
char * itoa(int 
n);
Invece con VC++ ho visto che esiste una funzione 
analoga del tipo:
char * itoa(int  n, 
char * s, int base);
dove: 
n        numero da 
convertire
          
*s       puntatore alla stringa da 
convertire
          base  
base di conteggio (decimale, binaria, ecc.)
Ho provato ad 
usarla, ma ottengo un errore. Come si usa?
La stringa viene restituita 
mediante 
char *s
, mediante 
char * itoa() 

e/o
entrambi?
Siccome non sono riuscito ad usarla ho dovuto 
usare il metodo Format della classe CString cioè:


 


int n;


CString s;  

// dichiarazione variabile s di tipo 
stringa


 


s.Format("Il numero decimale è 
%d", n);
  

// stampa del numero intero 
n


 


Solo che se non sbaglio la Format è molto più ingombrante e 
lenta della itoa... E poi mi costringe a dichiarare una nuova variabile di tipo 
CString


 



Sul compilatore C++ che utilizzo io,la sintassi dell'istruzione itoa é la
stessa che hai riportato tu dall'help di VC,e quindi dovrebbe
funzionare alla perfezione anche li:
Provo con un esempio.
#include<stdlib.h>
#include<iostream.h>
int main()
{
char stringa[4];
int intero=101;
itoa(intero,stringa,10);
cout<<"La conversione in stringa dell'intero é: "<<stringa;
return 0;
}
Prova a vedere se questo esempio funziona anche sul tuo
compilatore.
Il Ghenio

Newsgroup: it.comp.lang.c++
Titolo: How does the " ? : " operator work?

Does someone know how the "? : " operator works.
All help is welcome.
Peter vdPlas

It's very simple. I give you an example.
a = (b >= 10) ? 0 : 1;
means
if (b >= 10) a = 0;
else a = 1;
Simple, isn't it ?

Newsgroup: it.comp.lang.c++
Titolo: [Indirizzo TCP/IP]

Ho bisogno di conoscere l'indirizzo ip del mio pc a programma.
Come posso fare ?
Qualcuno può instradarmi sul pezzo di codice da scrivere ?
Grazie K.

Forse con gethostbyname con "localhost" come parametro, almeno su linux...

 Forse con gethostbyname con "localhost" come parametro, almeno su linux...
Marco, sei completamente OT, ma...
gethostname(buffer,size);              // mette in buffer il nome dell'host
host = gethostbyname(buffer);      // mette in host le informazioni sull
host
A questo punto host continene tutto quello che serve, peccato che le
informazioni, specie su windows, siano difficili da tirare fuori.
host->h_addr_list contine gli IP, a te serve host->h_addr_list[0].
Putroppo per convertirlo nella stringa che piace a noi bisogna anche usare
la funzione inet_ntoa();
E' possibile che tu abbia dei problemi a passare host->h_addr_list[0] a
inet_ntoa(), nel tal caso casta pure al tipo che piace a inet_ntoa().
Tommy

Newsgroup: it.comp.lang.c++
Titolo: Errore const con **var

int **var;
func(var)
con
void func(const int **var)
da errore in fase di compilazione
mentre
int *var2;
func(var)
con la funzione
void func(const int *var)
funziona benissimo
In pratica se metto const in una variabile **var ottengo errore
void func(const int **var)
{
}
qualcuno sa come risolvere il problema, cioe' fare in modo che var non 
venga mutata nella funzione?
grazie
Ciao
Mimmo

 funziona benissimo
La spiegazione è semplice. (Per chiarezza scriverò il primo 'const' *dopo*
il nome del tipo: ha lo stesso significato ma evita facili malintesi.)
La regola è che un puntatore a 'T' è convertibile in un puntatore a 'T
const'. Ora, nel caso del doppio puntatore, l'argomento è un puntatore a
'int const *', che non è un tipo con struttura 'T const'. L'unico puntatore
che può essere assegnato a un puntatore a 'int const*' è... un puntatore a
'int const*'.
Immagina che fosse possibile. All'interno di 'func' potresti cambiare il
valore di '*var' in modo che punti proprio a un 'int const'. All'esterno di
'func', sarebbe possibile usare la variabile come se puntasse a un
'int*' (con 'int' non const), e questo non può essere consentito.
Max


 > funziona benissimo



È giusto fin'ora. Mà ci son possibilità d'aggiungere anche const
interni, da essempio :
    void func( int const* const * var ) ;
    int ** p ;
    func( p ) ;
La regola essatte è complicata, mà in generale, poì aggiungere i const
interni tanto che tutti i qualificatori (puntatori, referenze) a destre
son const.
Infatti, riferendomi al tuo essempio: se non ho la possibilità di
cambiare *var, allora tutto va bene.
--
James Kanze           GABI Software         
http://www.gabi-soft.fr
Conseils en informatique orientée objet/
                   Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, 
+33 (0)1 30 23 00 34

 
Perfetto!!
cosi' funziona
Grazie 1000
Saluti
Mimmo
Newsgroup: it.comp.lang.c++
Titolo: Realizzare un gioco

ciao a tutti,
volevo chiedere se qualcuno avesse volgia di realizzare un gioco, stile
Midhight Club.
----------
Neohack
Hack Inside
----------

prova a postare su it.comp.giochi.sviluppo...


Grazie

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

Salve, amici. (leccatina...)
Sono un programmatore C (e C++) ma, ormai, della vecchia guardia: DOS,
UNIX, HW a microprocessore.
Avrei una piccola esigenza: un programmino che, lanciato da una shell
dos di win95, mi faccia una stupidissima printf del numero di serie
dell'HD.
Nell'help di Visual C++ della Microsoft ci sarebbe gia' pronto ma, in
fase di compilazione, mi arrivano una fila di errori.
Ora, sinceramente, non ho ne' la voglia, ne' il tempo, ne'
l'intenzione di mettermi ad approfondire l'argomento C per Windows.
C'e' qualche buon anima che mi dedicherebbe 30 secondi del suo tempo ?
Posso spedire il file sorgente prelevato dall'help di cui sopra.
Prego di rispondermi per email in quanto non seguo il NG.
Grazie
PC

Prego di rispondermi per email in quanto non seguo il NG.
Stavo per preparare un post di risposta quando ho visto
questa nota, e allora mi sono detto, *NO*: non ha proprio
nessun senso aiutare in C++ e Windows chi ha invece
tanto bisogno di aiuti, consigli, e dritte in altri campi.
Dritta numero uno: alcuni di noi considerano importante
questo newsgroup e non vedono di buon occhio chi
scelga di non seguirlo; soprattutto quando quest'ultimo
ammetta poi implicitamente che l'argomento ha qualche
interesse per lui, e che il gruppo di valore ne ha, visto
che viene a chiedere aiuto qui.
Insomma, riassumendo: non ho intenzione di aiutare
nessuno in posta privata, e invito tutti a pensare bene
se sia proprio il caso di aiutare chi, invece di venire
sul gruppo a chiedere aiuto _e restare qui in ascolto_,
chiede piuttosto aiuto in e-mail.  Meditate, gente,
meditate...
Alex

 questa nota, e allora mi sono detto, *NO*: non ha proprio...
Pienamente concorde!Io posto poco, perche' mi sento poco competente, ma
leggo moltissimo.
Praticamente sto imparando il c++ sul gruppo...
Grazie a tutti.
iltasso
Newsgroup: it.comp.lang.c++
Titolo: BCB3 Evento OnPaint

Salve a tutti,
sono appena entrata nel NewsGroup e per quello che fin'ora sono riuscita
a leggere.. credo che siate tutti sviluppatori VisualC++ e non Borland..
Ma credo che molti di voi mi potrebbero aiutare su questo mio
problemino...
Nella mia applicazione ho un componente TImage che mi fa da sfondo alla
Form.
Su questo sfondo (nel Canvas del TImage) creo dinamicamente un
componente TBitmap.
Disegno, a mia volta, nel Canvas dell Bitmap (Fuori schermo) e lo
visualizzo (nel canvas dell'Image) quando pronto.
Il mio problema è che quando vado ad aggiornare il Bitmap lampeggiano
tutti i componenti (Label.. ecc..) presenti sullo sfondo (TImage).
Questo perché, andando a modificare il Canvas dell'Image, viene
ridisegnato tutto lo sfondo(almeno creado che succeda questo).
La mia domanda è:
come posso fare a dire di ridisegnare solamente la parte che interessa
me?
Oppure.. avete un consiglio che mi risolva il tutto ?
Ah dimenticavo, nell'applicazione ci sono due thread e.. l'aggiornamento
del Bitmap viene fatto nell'Execute di uno di questi con il  metodo
Synchronize.
Mi date una mano...?... per favore... :((((
GRAZIE!!!!
Ciao a tutti
Elisa

 
Perchè usi un componente TImage se quello che devi fare è disegnare su un
Canvas? TImage serve per visualizzare immagini da files o risorse in maniera
semplice e veloce (nel senso che basta impostare una proprietà o usare un metodo
ed è tutto fatto), ma per operazioni di disegno diretto su Canvas mi sembra più
adatto TPaintBox, oppure potresti disegnare direttamente sul Canvas del Form.
Lo sfarfallio dovrebbe riguardare solo componenti come Labels o altre immagini o
Shapes, cioè tutti i controlli derivati da TGraphicControl, che sono speciali
controlli di tipo "non-windowed", cioè senza uno window handle, che usano le
risorse (device context) della parent window. Lo sfarfallio è dovuto appunto
alla condivisione del device context (Canvas) tra l'immagine di sfondo e i
controlli suddetti, e a una imperfetta gestione del painting, per questi
controlli, da parte della VCL.
 
Disegnare direttamente sul Canvas del Form dovrebbe risolvere il problema,
perchè i controlli "windowed" dovrebbero gestire il painting dei controlli
"figli" (anche non windowed) con un uso appropriato delle clipping regions (se
invece disegni su un GraphicControl "fratello" degli altri controlli, il
meccanismo non funziona). Dico dovrebbero perchè la gestione dell'evento paint
nella VCL è un po' complicata e non giurerei che i risultati siano sempre quelli
prevedibili.
Se questa soluzione non funzionasse, oppure se avessi qualche motivo per
scartarla, potresti sostituire Labels con StaticTexts (se usi BCB 3) e inserire
eventuali altri GraphicControls all'interno di Panels.
Ciao
Paolo
Newsgroup: it.comp.lang.c++
Titolo: Visual C++ V delphi

Can anyone tell med advanteges in Visual C++ versus Borland delphi and vice
versa ?
Im used to delphi but i have heard that visual C++ is better, but how ??
Alan Hebo

Im used to delphi but i have heard that visual C++ is better, but how ??
I think that there's no advantage in the use of VC++. If u like C++
more than Delphi (Pascal++) it's preferable use Borland C++Builder.
The VC++ isn't user friendly, is microsoft (bleah), and isn't
portable. Delphi and C++Builder will be early avalaible for Linux too.

portable. Delphi and C++Builder will be early avalaible for Linux too.
linux.early()==about 5 years...
8-)
Luc.


Direi molto meno, visto che hanno acquistato le "Qt" come base per lo 
sviluppo delle gui.
Fausto.

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

Ciao, ho questa porzione di codice che non reisco a capire:
CallClient::CallClient(buzz::XmppClient* xmpp_client)
     : xmpp_client_(xmpp_client), roster_(new RosterMap) {
...
}
Fa parte di libjingle, ma non so a cosa serva la parte successiva ai :
nella seconda riga.
E' un tipo di costruttore o assegnamento di variabile?
Grazie, ciao.



Sembrerebbe, ma aspetta ulteriori risposte, la sinstassi di una "lista
di inizializzazione" che, per quanto ho avuto modo di vedere, è usata
dai costruttori e dai costruttori per copia
Ciao

 
E' una "initializer list", ossia una lista di inizializzazione che 
(molto grossolanamente) si puo' utilizzare per inizializzare le 
variabili membro della classe (utilizzando i loro costruttori).
Mi risulta che sia il modo piu' consigliato per tali inizializzazioni.
-- 
Roal Zanazzi
Newsgroup: it.comp.lang.c++
Titolo: Cos'è il dispatch matching ?

Forse sarà una domanda stupida, ma vorrei sapere cos'è il dispatch matching.
Grazie, Neo.

Forse sarà una domanda stupida, ma vorrei sapere cos'è il dispatch matching.
Mai sentito nominare. Sei sicuro del nome?
Dove l'hai trovato?
Paolo
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

 Paolo
E' una domanda che mi ha fatto un mio studente.
Si trovava a fare un colloquio per un posto da programmatore e gli hanno
fatto questa domanda.

 Forse sarà una domanda stupida, ma vorrei sapere cos'è il dispatch matching.
Mai sentito nominare, ma posso andare ad intuito: puo' essere il
meccanismo di matching sulla signature dei metodi per decidere quale
tipo di metodo richiamare... linguaggi come il C++ ed il Java usare il
single dispatching (solo il tipo del ricevente viene utilizzato per
selezionare il metodo da richiamare a runtime), mentre ad es. il CLOS
usa il multiple dispatching (vengono utilizzati anche i tipi degli
argomenti per la selezione del metodo).
Posso tranquillamente aver detto una cosa che non c'entra niente...
ciao
	Lorenzo
--
+-----------------------------------------------------+
|  Lorenzo Bettini    ICQ# lbetto, 16080134           |
|  PhD student in Computer Science                    |
|  Florence - Italy                                   |
|  Home Page        : 
http://w3.newnet.it/bettini
     |
|           
http://infostud.dsi.unifi.it/~bettini
     |
|  Mail Home        : 
lorenzo...@penteres.it
     |
|  Mail University  : 
bet...@dsi.unifi.it
            |
|  
http://www.mokabyte.it
       Java on line journal  |
|  
http://rap.dsi.unifi.it/xklaim
    XKlaim language  |
+-----------------------------------------------------+

Posso tranquillamente aver detto una cosa che non c'entra niente...
Avevo pensato anch'io ad una cosa simile,  ma in mancanza di altri
indizzi non ho voluto pronunciarmi anche perche` i due termini mi
suonano leggermente in antitesi.


Newsgroup: it.comp.lang.c++
Titolo: Compilare in Visual C++ da DOS

Scusate per la domanda da ignorante, ma č possibile compilare in Visual C++
sotto Windows un programma scritto in C++ sotto DOS?
Infatti so che ad es. il programma di scacchi Arasan 5.2  (un programma a 32
bit) č stato scritto in C++ e poi compilato con V C++
Stefano

 bit) č stato scritto in C++ e poi compilato con V C++
E allora "Arasan" e` scritto in C++ "ragionevolmente standard".
Alex

 ha scritto nel messaggio
news:8h07cr$6hc$1...@serv1.iunet.it...

Newsgroup: it.comp.lang.c++
Titolo: Aiuto CArray visual C++

Sono riuscito a dichiarare il mio array così:
CArray <CBimbo, CBimbo> ListaBambini;
però quando vado a aggiungere elementi nelle funzioni di classe es.
CBimbo NuovoBimbo;
...
...
ListaBambini.Add(NuovoBimbo);
il compilatore mi da questo errore:
C:\Documenti\Fede\C++\Bambino\BambinoDlg.cpp(263) : error C2664: 'Add' :
cannot convert parameter 1 from 'class CBimbo' to 'class CBimbo'
COSA DEVO FARE????
Grazie

...

Hai usato SetSize subito prima di usare la prima volta l'array?
Andrea

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

Salve. Avrei una domandina.
Ho dichiarato globalmente questa struttura:
struct prova
{
  int numero;
  int numero2;
}
prova struttura[10];
ed ho assegnato dei valori a prova[1].numero e prova[1].numero2 da una
funzione all'interno del mio file .cpp. Fin qui funziona tutto. Ma se ora
questa funzione che modifica i valori la volessi mettere in un file esterno
includendolo poi con #include "file.h", come dovrei fare per fare in modo
che vada a modificarli? Di solito se sono varibili le passo come indirizzo
con la &, ma in questo caso come dovrei fare?

 ha scritto nel messaggio
news:TZcw8.65906$m41.1...@twister2.libero.it...

Scusate, ho dimenticato di ringraziare e di firmare :-)).
Luca Carlon

con la &, ma in questo caso come dovrei fare?
Metti in "file.h"
   struct prova
   {
     int numero;
     int numero2;
   };
   extern prova struttura[10];
e metti in uno solo dei file C++
   prova struttura[10];
In questo modo chi include "file.h" puo' accedere
all'array globale "struttura".
HTH
Andrea
Newsgroup: it.comp.lang.c++
Titolo: Metodi INLINE nelle LIBRERIE !!!

Salve a tutti,
Io ho una classe myString con TUTTI i metodi INLINE.
Questa classe č utilizzata sia dai sorgenti che compongono la libreria
PIPPO.a che i programmi client che linkano la libreria.
Beh.. sotto WinNT col Borland C++ Builder 4 non ci sono problemi ma sotto
LINUX quando compilo i programmi client (che linkano la libreria di cui
sopra) mi da una serie infinita di "Function already defined in xxx.o".
Come faccio ??? Non posso usare i metodi inline nelle librerie ???
Grazie, ciao.







Newsgroup: it.comp.lang.c++
Titolo: gestione hotkeys

salve,
ho un problema che riguarda la gestione degli hotkeys.
Un esempio sono i programmini di cattura schermo in molti dei quali è
possibile assegnare ad una combinazione di tasti (o a un tasto singolo)
la funzione di cattura.
Quello che mi serve è un programma che elimini tutti gli hotkeys settati
da altri programmi, ho provato con unregisterhotkeys facendo un ciclo
e passandogli gli handle di tutti i processi attivi ma nn ha funzionato,
sto provando con wm_sethotkeys ma mi da errore.
Qualcuno lo ha già fatto o ne sa qualcosa e sa darmi una mano?
grazie, ciao
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

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: SDK windows CE: come si installa ??

Ho scaricato 'sdk toolkit for windows ce" dal sito microsoft, quasi 25MB.. , ma dopo avere eseguito 
l'installazione (senza problemi), mi aspettavo un nuovo menù in nel mio ambiente di sviluppo (VB6 ita enterp.)
e/o una nuova voce nella videata "nuovo progetto" .. come ampiamente illustrato nell'MSDN allegato a VB6.
Dato che VB6 permette la compilazione in nativo e pcode mi aspettavo anche una opzione di compilazione 
in base al tipo di processore (SH3/MIPS) ma anche queste opzioni non sono disponibili.
DOVE HO SBAGLIATO ??
PRima di iniziare il download ho verificato i prerequisiti: 
Windows 95 (NT per l'emulazione hpc) <-- NT4.0 Ok
Ambiente di sviluppo VC++ / VB6.0 <-- VB6.0 Ok
.
Ringrazio tutti quelli che vorranno aiutarmi 
Das (
NOSPA...@bigfoot.com
)

Ambiente di sviluppo VC++ / VB6.0 <-- VB6.0 Ok
Come per le versioni precedenti, anche per VB6 che per VC++6 non č
sufficiente avere l'SDK per le varie piattaforme (H/PC, P/PC, H/PC Pro,
AutoPC ed ora anche per Dreamcast), sono infatti necessari anche i relativi
Toolkit: MS Windows CE Toolkit for VB6 o MS Windows CE Toolkit for VC++6.
Una volta installati i Toolkit, nell'IDE vengono aggiunti i menu e le
opzioni per la compilazione.
L'installazione del solo SDK, se non erro, aggiunge l'emulatore,
l'ObjectStore, parte della documentazione e vario codice sorgente d'esempio,
ma ci si puň fare ben poco senza i Toolkit.
Hope that helps ;)
   Stefano
--------
VEGA2000
Il sito italiano dedicato a Windows CE e ai nuovi PC palmari.
http://www.vega2000.com

L'SDK non comprende i compilatori cross-platform per generare il codice.
Per questo e' necessario aquistare il Windows CE Toolkit per l'ambiente che
ti interessa (VB o VC).
La versione piu' recente e' la 6 ed e' uscita in Marzo 1999.
Saluti.
Marco.

...


Newsgroup: it.comp.lang.c++
Titolo: Visual C++ .net

Salve a tutti.
ho un dubbio, che neanche la lettura di molti msg di questo (e altri) ng ha
saputo levarmi: il nuovo Visual C++ .net Microsoft con che
framework/libreria viene fornito? Ancora le vecchie MFC oppure l'evoluzione
delle WFC gia su J++?; Insomma, dovendo passare ADESSO a studiare la
programmazione C++ sotto Windows/Microsoft (conoscendola gią, per esempio
usando le VCL) cosa mi trovo davanti usando il Visual C++ .net: le MFC o
altro?
Grazie mille
Simone

...

Newsgroup: it.comp.lang.c++
Titolo: stringhe

quali sono esattamente le differenze inizializzare una stringa in questo
modo:
 char stringa[SIZE];
e in quest'altro modo:
 char* stringa;
?
Grazie.


Fondamentalmente è la stessa differenza che passa tra
int * x;
e
int i[SIZE];
Inoltre mi chiederei se non sia meglio usare
#include <string>
std::string stringa;
-- 
Gerolamo

  char* stringa;
riservi solo la memoria per un puntatore (tipicamente 4 bytes) nello 
spazio dati o nello stack (seguendo la regola di prima). Poi devi 
allocare lo spazio per il buffer con le varie malloc o new: *memoria heap*.
Il puntatore in realta' puo' essere utilizzato per puntare memoria 
qualsiasi, anche memoria allocata in modo fisso o sullo stack. E' 
impossibile illustrare tutti gli usi di un puntatore in un ng, ti 
consiglio di leggere qualche buon libro.
Ciao.
  -Ema-

"-Ema-" <a@a.a> ha scritto nel messaggio
news:tr07b.302000$Ny5.9...@twister2.libero.it...

già è quello che ho fatto ma evidentemente non è abbastanza buono perchè
oggi sono incappato in una cosa un po' strana va bhe...non ho il tempo di
stare a capirla
Newsgroup: it.comp.lang.c++
Titolo: Aiuto!!!!

Vi prego aiutatemi!!!!
Sto costruendo un programma basato su una matrice bidemsionale ma allocata
dinamicamente (quindi tutto quello che ho a disposizione è solo un puntatore
alla matrice..)e la devo passare ad una funzione esterna al main per farci
un bel po di lavori.....vi prego chi mi sa dire come posso
fare??????????????????????????????????????????


Penso dipenda un po' anche da come l'hai definita 'sta matrice.
Per esempio se l'hai definita cosi':
int **M;
M = (int **) calloc (p, sizeof(int *));
for (int i=0; i<p; i++) M[i]=(int *) calloc(q,sizeof(int *));
allora la tua matrice di fatto e' un array di p puntatori
ad array lunghi q e per passarla basta che fai
void Funz(int **LaM, int pp, int qq)
{
   for (int i=0; i<pp; i++)
   for (int j=0; j<qq; j++)  LaM[i][j]=331+i*j;
  ......
}
e nel main chiami Funz(M,p,q);
dove p e q li passi per far sapere le dimensioni effettive della
matrice.
Se la tua matrice e' qualcosa di piu' complicato
tipo un vettore di vettori allora devi aspettare il
consiglio di qualcun altro....
ciao,
g.

 ha scritto nel messaggio
news:b3lnnf$u4s$1...@lacerta.tiscalinet.it...


 > dinamicamente (quindi tutto quello che ho a disposizione č solo un


 ed ho scoperto che per chiamarla devo usare il "reinterpret_cast<int*>(M)"
Non ce n'č bisogno. Eccoti un esempio (molto poco C++...):
#include <iostream>
const int NELEM = 100;
void ElaboraMatrice( int ( *M )[ NELEM ], int dim )
{
    int i, j;
    for ( i = 0; i < dim; ++i )
        for ( j = 0; j < NELEM; ++j )
            M[ i ][ j ] = ( i + 1 ) * ( j + 1 );
}
void StampaMatrice( int ( *M )[ NELEM ], int dim )
{
    int i, j;
    for ( i = 0; i < dim; ++i )
    {
        for ( j = 0; j < NELEM; ++j )
            std::cout << M[ i ][ j ] << ' ';
        std::cout << "\n\n";
    }
    std::cout << std::endl;
}
int main()
{
    const int elem = 100;
    const int dim = 10;
    int ( *M )[ 100 ] = new int [ dim ][ elem ];
    if ( !M )
    {
        std::cout << "Memoria insufficiente" << std::endl;
        exit( 1 );
    }
    ElaboraMatrice( M, dim );
    StampaMatrice( M, dim );
    delete [] M;
    return 0;
}
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

Newsgroup: it.comp.lang.c++
Titolo: librerie grafiche

Qualcuno sa suggerirmi qualche libreria grafica PD o Freeware da usare
col GCC sotto DOS/WINDOWS?
Grazie,
	Stefano.


wrote:

Si chiama allegro, richiede il DJGPP V2, la trovi
a:  
http://www.talula.demon.co.uk/allegro/
- Pietro -
Newsgroup: it.comp.lang.c++
Titolo: ActiveX & HTML

E' possibile evitare in qualche modo,
che un activex scaricato via HTML vada a
eseguire delle operazioni indesiderate
sul sistema in cui viene eseguito?

Se usi Internet Explorer 5.0 sě, vai su Panello di controllo\Opzioni
Internet, da lě scegli la scheda Protezione. Poi scegli Internet e scegli il
livello di protezione che ti interessa. io consiglio Medio, come hanno
scelto quelli di Microsoft. Se il controllo ActiveX non č firmato non viene
aperto.
Diego Pettenň
Newsgroup: it.comp.lang.c++
Titolo: aiuto!!!!

sto imparando il C++ e sono ancora alle prime armi; per cimentarmi ho
provato a disegnare una nuova classe Array che sfrutta la potenzialitŕ dei
puntatori.
ho voluto inserire in questa classe anche un metodo per espandere le
dimensioni dell'array anche se questo č giŕ stato creato e contiene dei
dati.
qui di seguito allego il codice sorgente compresa la parte incriminata: il
metodo di espansione (expand) blocca infatti l'esecuzione del programma.
qualcuno sa per caso dirmi come mai accade questo?
vettore::vettore(int num)
{
 elements = num;
 first = NULL;
 point = &first;
 last = point - (elements * 4);
 canc();
}
void vettore::canc()
{
 for (int i = 0; i < elements; i++)
 {
  modify = point - (i * 4);
  *modify = NULL;
 }
}
void vettore::fill(int index, int num)
{
 if (index >= 0 && index < elements)
 {
  modify = point - (index * 4);
  *modify = num;
 }
 else
 {
  cout << "Indirizzo non valido\n" << endl;
 }
}
int vettore::get(int index)
{
 int RV = NULL;
 if (index >= 0 && index < elements)
 {
  modify = point - (index * 4);
  RV = *modify;
 }
 else
 {
  cout << "Indirizzo non valido\n" << endl;
 }
 return RV;
}
void vettore::expand(int num)
{
 for (int i = 1; i = num; i++)
 {
  modify = last - (i * 4);
  *modify = NULL;
 }
 last = last - 4;
 elements += num;
}

 dimensioni dell'array anche se questo è già stato creato e contiene dei


 for (int i = 1; i == num; i++) /**/
Questo loop viene esguito una volta se num č uno; e _mai_ se non lo č.
Sei *sicuro* che costui volesse fare ciň?  :-)
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it

 wrote in message
news:8aofg94...@mlinux.pd.infn.it...


grazie per l'aiuto!!!!
č incredibile come si riescano a fare errori cosě stupidi e come questi
possano bloccare l'esecuzione di un intero programma!!!!!
grazie molte per avermi fatto notare questa "castroneria" inserita nel
programma.
Newsgroup: it.comp.lang.c++
Titolo: Overload dell'assegnazione

Salve ragazzi, ho un problema con l'overload dell'operatore di assegnazione,
qualcuno sa dirmi dove è l'errore? Grazie in anticipo ;-)
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class sample
{
        private:
                char* s;
        public:
                sample();
                sample(const sample &ob);
                ~sample();
                void show();
                void set(char* str);
                sample operator=(sample &ob);
};
sample::sample()
{
        s= new char('\0');
}
sample::sample(const sample &ob)
{
        s=new char[strlen(ob.s)+1];
        strcpy(s, ob.s);
}
sample::~sample()
{
        if(s)
                delete [] s;
        cout<< "Rilascio di s" <<endl;
}
sample sample::operator=(sample &ob)
{
        if(strlen(ob.s) > strlen(s))
        {
                delete [] s;
                s=new char[strlen(ob.s)+1];
        }
        strcpy(s, ob.s);
        return *this;
}
void sample::show()
{
        cout<< s <<endl;
}
void sample::set(char *str)
{
        s=new char[strlen(str)+1];
        strcpy(s, str);
}
sample input()
{
        char instr[80];
        sample str;
        cout<<"Immettere stringa" <<endl;
        cin>>instr;
        str.set(instr);
return str;
}
int main()
{
        sample ob;
        ob=input();
        ob.show();
return 0;
}
-- 
# ICQ 84624356

 
 sample& sample::operator=( const sample &ob )

Max M. wrote:

Grazie dell'aiuto, ma potresti spiegarmi perchè anche nel parametro
dell'overload dell'operatore devo mettere la parola const? So a cosa serve
questa parola chiave, ma nell'overload non ne avevo mai avuto bisogno,
ultima cosa perchè il metodo deve restituire un riferimento di tipo sample? 
Grazie comunque per l'aiuto ;-)
-- 
# ICQ 84624356

 dell'overload dell'operatore devo mettere la parola const?
L'aggiunta di 'const' consente di passare alla funzione oggetti 'const', 
che altrimenti non sarebbe possibile passare. Nel tuo caso hai cercato di 
passare all'operatore assegnamento l'oggetto temporaneo restituito da 
'input'.
    ob = input();
Un oggetto temporaneo, però, non può essere legato (bind) a un reference 
non const. Da questo la necessità, nel tuo esempio, di aggiungere 'const'.
Max

Newsgroup: it.comp.lang.c++
Titolo: Full video Control!!!!

Hey!
I want to know everything there is to know about a basic graphic card.  And
when I say basic graphic card I mean something that can handle 16.7 million
colours.
*I want to know how to address the video card..
*How to change the amount of colours....
*How to store information in the video ram...
etc,etc
EVERYTHING!!!
:)
Thanks
pob...@bconnex.net
Daniel Brown

Hi,
you are probably not aware that you posted to the italian C++ newsgroup.
Moreover, we only deal with the standard language and not with platform
or hardware specific details.
Best regards,
Nicola Musatti
Newsgroup: it.comp.lang.c++
Titolo: Ancora sugli alberi (2)

Rispondo alle domande che mi avete posto precedentemente.
1- La struttura del nodo è dichiarata all'interno di una classe:
   struct nodo
    {
     int val;
     nodo* pre; //Genitore del nodo
     nodo* sx;
     nodo* dx;
    };
2- Sempre all'interno della classe dichiaro:
    nodo* radice;
3- L'albero lo costruisco in questa maniera:
      radice->sx = new nodo;
      radice->sx->val = val;
      radice->sx->pre = radice;  //Imposto il genitore
      radice->sx->sx = NULL;     //Il figlio sinistro del nuovo figlio 
sinistro  è posto a NULL
      radice->sx->dx = NULL;     //Il figlio destro del nuovo figlio 
sinistro  è posto a NULL
   Ovviamente stesso discorso per il figlio destro.
4- "Viene posto a zero" vuol dire che:
   se ho un albero del genere
           10
         /     \
        6      14
       / \       /   \
      5   8  11   18
  e visualizzo gli elementi in ampiezza (10, 6, 5, 8, 14, 11, 18)
  ed il valore k (inserito dall'utente) è uguale ad 11, devo cancellare la 
foglia 5, inquanto 5+6=11.
  La funzione individua correttamente la foglia, ma anzichè cancellarla, me 
la sostituisce con uno zero,
  visualizzandomi i seguenti elementi 10, 6, 0, 8, 14, 11, 18
Spero di essere stato il più chiaro possibile.
Reiserisco la funzione:
void Albero::svuotak(nodo* radice, int k)
 {
  //Visito l'intero albero
  if (radice->sx != NULL)
   svuotak(radice->sx, k);
  if (radice->dx != NULL)
   svuotak(radice->dx, k);
  //Se la radice sinistra e destra sono NULL allora ho trovato una foglia
  if ((radice->sx == NULL) && (radice->dx == NULL))
   {
    if (radice->val + radice->pre->val == k)
     delete radice;
     radice = NULL;
   };
 }; 

 usi e quale S.O. con la release del kernel.
Compilatore utilizzato: Dev-C++ 4
O.S: Win XP Pro SP2


Ciao, Enrico
Newsgroup: it.comp.lang.c++
Titolo: Dimensione limite di un file gestibile da fopen

Salve a tutti,
eccomi di nuovo qui.
Nell'utilizzare fopen esiste un limite per la dimensione del file che devo
prendere in ingresso ? Vi chiedo questo perchè non è da escludere che debba
rimaneggiare un file di risultati di una simulazione di qualche Mbyte.
Bye,
Sebastiano

prendere in ingresso ? Vi chiedo questo perchč non č da escludere che debba


 rimaneggiare un file di risultati di una simulazione di qualche Mbyte.
Credo dipenda solo dal sistema operativo.
EMG

Per es. cos'altro si può usare ?

 Per es. cos'altro si può usare ?
std::fstream
fopen esiste solo per compatibilita' con il C.
	Mauro

Ok, non lo sapevo.
Grazie davvero,
Sebastiano

Newsgroup: it.comp.lang.c++
Titolo: aiuto!!!

Salve,
sto facendo un progetto in C++ sulle funzioni hash perfette(OPMPHF)
e mi occorre un piccolo aiuto: devo calcolarmi i tempi (totale e 
parziali) di generazione dell' algoritmo; dopo aver lanciato
 l' eseguibile, vorrei avere in output questi tempi che mi servono 
per concludere il progetto.
Ho gia' provato con time(), difftime(), ma non ci sono riuscito....
Come posso fare?
Sarei molto grato se qualcuno di voi mi dara' una mano.
Grazie anticipatamente,
				Matteo Palumbo
			     < 
pal...@cs.unibo.it
 >

Forse non ho capito bene, ma probabilmente la funzione che ti serve è
clock() che appartiene alla libreria del C.
Saluti
Fulvio
Matteo Palumbo ha scritto nel messaggio ...


 >parziali) di generazione dell' algoritmo; dopo aver lanciato
utilizzi profiler
Ciao Alexei

Newsgroup: it.comp.lang.c++
Titolo: Uso degli OCX in computer dove non è installato VISUAL C++

Che cosa bisogna fare se si vogliono utilizzare i controlli OCX forniti
da MICROSOFT ?
In particolare io vorrei poter usare i file mscomm32.ocx e mswinsck.ocx
su un computer che contiene solo windows NT 4.0.
Qualcuno lo ha già fatto?

...



Non basta, grazie ad un baco di questo OCX, qualcosa che riguarda il
controllo delle licenze (non funziona nemmeno l'esempio illustrativo
fornito da MSDN).
Una possibile soluzione e' piazzare questo OCX su un form, in questo
modo ci pensano le classi MFC a bypassare il controllo.
Se il tuo applicativo non ha nessuna finestra di dialogo, forse ti
conviene verificare se il baco e' stato risolto (a marzo '98 era
ancora irrisolto). Se no, puoi gestire la seriale senza l'OCX, usando
CreateFile, ReadFile, ecc.
Bye,
Jose Luis
-- 
"When do you want to reboot today?"
Mi e-mail address is "j l s  @ a c m . o r g" (without the spaces)

Jose Luis wrote:

Grazie per l'informazione !!!! La cosa che mi hai suggerito vale anche
per il controllo mswinsck ? A chi si può domandare se il baco è stato
risolto?


Ho provato a fare come dice Jose Luis e cioè a mettere il controllo su una
dialog.
Però andando a installare questo piccolo esempio non mi funziona lo stesso.
Dove ho sbagliato? Una dialog in c++ corrisponde a una form del visual
Basic??
Grazie
            Domenico
Newsgroup: it.comp.lang.c++
Titolo: massimizzare velocita  codice e SOlver (aitken..)

Salve, ho da un paio di  mesi iniziato a programmare in c++ e vorrei
un consiglio per speedaure al max questo codice. Io uso la libreria di
vector TNT.
double R1=0.5;
double rh=0.2;
Vector <double> recursion(const Vector <double> &h, const double &x)
{ int j=0;
Vector <double> pr(m);
Vector <double> cdp(n);
for (int i=0;i<n;i++){
	cdp[i]=nCDF((Phi_inv((1.0-exp(-h[i]))) -sqrt(rh) * x) / sqrt(1.0 -
rh));
}
Array2D < double> ptk(n+1,n+1);
ptk[0][0]=1.0;
for (int i=1;i<n+1;i++) {
	ptk[0][i]=ptk[0][i-1]*(1.0-cdp[i-1]);
	for (j=1;j<=i-1;j++) {
		ptk[j][i]=ptk[j][i-1]*(1.0-cdp[i-1])+ptk[j-1][i-1]*cdp[i-1];
	}
	ptk[i][i]=ptk[i-1][i-1]*cdp[i-1];
}
for (int i=0;i<m;i++)	pr[i]=ptk[i][n];
return pr;
}
double auxiliary(const Vector <double> & h,const double &x){
	Vector <double> P=recursion(h,x);
	double partialSum=0.0;
	for (int i=0;i<m;i++) {
		partialSum+=max(0.0,d-(double)i*(1.0-R1)/(double)n)*P[i];
	}
	return partialSum;
}
Avete qlc idea per migliorare notevolmente la funzione recursion che
e' molto dispendiosa? (mi servono double)
COnsiderate che la funzione auxiliary che dipende da recursion viene
successivamente integrata rispetto a x!
2) Quale e' la piu veloce libreria esistente per queste
moltiplicazioni di vettori? Va bene TNT? ( anche se credo che nn sia
questione di libreria) (anche commerciale)
3) mi consigliate una libreria per una veloce e accurate
implmentezione di solver per roots( ora uso qlc alg di NR e l
algoritmo di Aitken), ma credo esista qlcsa di piu potente
4( Possibile che questa dll che e' usata in excel sembri piu veloce
con devcpp che vc2005??
Grazie MIlle

andrea ha scritto:

bhe, così, senza andare troppo in profondità mi pare di vedere che 
quelle due radici quadrate sono costanti e possano essere precalcolate 
una sola volta...ma forse il compilatore se è intelligente lo fa già...
ciao


Chiaramente quelle che ho proposto sono delle ottimizzazioni che porteranno 
ad un aumento di velocita' ma sicuramente non paragonabile ad una riduzione 
di complessita' pero' per una tale riduzione bisognerebbe capire cosa stai 
facendo nelle funzioni ... al momento mi sfugge.
Comunque andando ad ottimizzare senza ridurre la complessita' si puo' 
procedere in ASM dove si riesce a guadagnare parecchio utilizzando 
istruzioni particolari.
Denis. 

 - Show quoted text -
Grazie tante!
Quali sono questi compilatori che ottimizzano meglio!?
Che significa "complessita' si puo'

Newsgroup: it.comp.lang.c++
Titolo: AIUTO

Ho fatto un programma che gestisce i file per devo gestirli solo se sono
interi ed ho un grandissimo problema a scoprire se il file si sta
incollando. Il linguaggio di programmazione è c++ e il sistema operativo è
il Microsoft Windows2000 o comunque un sistema basato sulla tecnologia NT.
P.S.:
E' molto urgente....

Che vuol dire "il file si sta incollando"?
Vuoi sapere se:
* il file è presente nella clipboard
* il file è soggetto ad un processo di scrittura
* bo?! spiegati meglio
Penso che sia una cosa specifica di win32.
Prova a spiegarti meglio e se è il caso, posta su it.comp.programmare.win32
Dome

 ha scritto nel messaggio
news:kse_7.6150$WQ2.2...@news2.tin.it...


Newsgroup: it.comp.lang.c++
Titolo: Primi passi in Borland C++ builder :O(

VCL
Tornato dalle mie ultime vacanze, con 5 rullini di foto e uno scanner
nuovo... ho pensato di fare  un programmino semplice semplice per
visualizzare le foto in un ordine dettato da un file ASCII e di associarvi
un piccolo commento su un label nel form principale.
Il file di testo è estremamente semplice:
Img Totali
File Immagine1
Commento immagine1
File Immagine2
Commento immagine2
File ImmagineX
Commento immagineX
...
Ecc.
sapendo programmare solo in Visual Basic, in un oretta lo faccio, ma dati
porblemi del linguaggio MS, ho deciso di convertirlo in c++ usando il
Borland c++ builder.
Ho appena cominciato a esaminare questo linguaggio.. quindi vi chiedo se
potere dirmi come posso fare a:
1. Visualizzare file Jpg (con un oggeto che supporti la proprietà AutoSize);
2. Creare un Array di stringhe (scusatemi... ma sono proprio agli inizi);
3. Implementare una ToolBar, se possibile con lo stile flat;
Vi ringrazio in anticipo per l'attenzione
^ÐunE^


Qui torniamo al problema della versione. Mi pare che dalla 3 ci fosse cio'
che chiedi. Nella 1 non sono sicuro
Ciao,
Stefano




e ti basta usare un componente TImage.
Non mi risulta.... vengono supportati bmp ico emf wmf... se c'e' un modo di
caricare jpg con VCL sarei felicissimo! (uso BCB 3)


Il modo c'e' eccome, solo che non ricordo come si faccia :P
Cmq, il BCB3 ha una VCL che e' quasi equivalente (anzi e' superiore) a
quella del Delphi 3, per il quale, nel sito della stessa borland, avevo
intravisto un articolo riguardante l'uso dei Jpeg.
Con D3 e BCB3 infatti viene fornita una unit di gestione dei jpg che va
pero' installata in qualche modo.
Ciao,
Stefano
Newsgroup: it.comp.lang.c++
Titolo: Bitmap a 256 colori

Come devo fare per eliminare il problema in C o in C++ ?
Io proverei a cambiare le palettes. Prepari un vettore [2][256][3] e
un vettore [256][3], che sara' la nuova palette. Poi devi trovare un
sistema per condensare due palettes in una.
Tecnica 1
Semplicissima: prendi i colori dispari di una e i pari dell'altra
Tecnica 2
Scandisci entrambe le palettes, usando un vettore pixels[256] long:
for (x=0;x<WIDTH;x++)
	for (y=0;y<HEIGHT;y++)
		pixels[pixval(x,y)]++;
Poi ordini il vettore (devi tenere traccia dell'indice!), ed ottieni
i colori piu' usati; e prendi quelli.
Tecnica 3
Sofisticata. Prima scandisci i colori, poi li accorpi, in modo che a
ciascuna casella corrispondano piu' colori, se la differenza RGB tra
essi e' inferiore a un tot. E continui ad accorpare, finche' dei 512
colori originari te ne rimangono solo 256. A quel punto sostituisci,
magari riducendoti non a 256 ma a 240 (gli altri 16 sono i colori di
sistema di Windows).
Tecnica 4
Super-sofisticata; come la 3, usando gli octrees. Lungo da spiegare.
Tecnica 5
Come la 4, ma anziche' sostituire e basta il colore, alteri anche il
colore delle caselle adiacenti in base all'algoritmo Floyd-Steinberg
per ottenere un risultato otticamente soddisfacente.
Leonardo "come vedi non c'e' limite"
".signature": bad command or file name

Ciao a tutti.
In una applicazione per Windows che sto sviluppando, ho la necessità di
mostrare contemporaneamente due bitmap a 256 colori. Se Windows è in
modalità a 256 colori e le due bitmap hanno tavolozze diverse, però, ho la
visualizzazione degli stessi colori non è corretta.
Perchè ? 
Come devo fare per eliminare il problema in C o in C++ ?
Sarei grato a chiunque potesse fornirmi la soluzione.
-- 
Massimiliano Trezzi

Newsgroup: it.comp.lang.c++
Titolo: Accedere alla porta parallela tramite Win32API


Streeling University - Trantor

 esterni, direttamente con le API di Windows?
CreateFile, ReadFile, WriteFile...
==========================
Stefano Frosio
http://www.esse-effe.com
==========================