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

Mi è venuto un dubbio cretino sugli oggetti inline.
Se dichiaro un oggetto inline, stò informando il compilatore che
quell'oggetto potrbbr variare in modi al di fuori del controllo del
compilatore (magari perchè modificato da un altro thread, o perchè è un
puntatore ad una porta hw mappata in memoria...) e quindi inl compilatore
non deve fare ottimizzazioni, ma deve ad ogni accesso andare a leggere(o
scrivere) il valore effettivo in memoria.
Se .dichiaro un òuntatore a volatile, indipendentemente dal fatto che punti
ad un oggetto volatile o meno, il compilatore ogni volta farà effettivamente
l'oggetto puntato.
Se invece dichiaro un puntatore volatile (e no a volatilile) informo il
compilatore chel'indirizzo a cui si riferisce il puntatore potrebbe
cambiare. In questo modo, ogni volta che verrà letto il valore del puntatre,
questo verrà effettivamente letto.
In questo modo, in pratica, anche il valore dell'oggetto puntato viene
effettivamente riletto ogni volta, no? (solo che, a differenza dell'accesso
tramite puntatore a volatile, i metodi non volatile sono chiamabili)
--
Marco Iannaccone
marc...@tin.it
ICQ UIN: 18748121     MetalCoder
"This is a new ship, boy, but she's got the right name.
You treat her like a lady, and she'll always bring you home."
    Dr. Leonard H. McCoy to Data - Encounter at Farpoint - Star Trek TNG

 tramite puntatore a volatile, i metodi non volatile sono chiamabili)
Come sopra se il compilatore puo' verificare che in realtą il puntatore non
cambia fra un accesso e l'altro puo' ottimizzare (per quanto raro questo possa
essere). Per il resto praticamente hai ragione.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 accada.
Più che difficile, anche nel caso seguente, mi pare piuttosto....
impossibile... :-)
Comunque, varie prove hanno convermato entrambe le cose...(in entrambi i
casi viene effettivamente riletto il valore dalla memoria; ho fatto qualche
prova col gcc per windows, provando a chiamare metodi volatile e non, e col
gcc per gba, leggendo il valore di un registro mappato in memoria, in cui
ancuni bits indicano il retrace dello schermo, e, usano un puntatore
volatile a oggetto non volatile, funzionava correttamente (ovvero veniva
riletto ogni volta il valore dalla ram)).


Comunque, pensandoci bene, nel caso di un puntatore volatile ad oggetto non
volatile, forse quello che hai detto è vero, ma riguardo ad un puntatore a
volatile, in ogni caso non sarà possibile chiamare metodi volatile
sull'oggeto puntato (esattamente come per gli oggetti non const acceduti
tramite puntatore a const)...

Newsgroup: it.comp.lang.c++
Titolo: Decompilatori - Help

Salve,
sto cercando da tempo decompilatori di c.o. derivato da C++, ma senza
successo.
Qualcuno conosce una ditta software che ne produce?
Grazie
K
__________________________________________________________________ "Kurt
Fleißig" ICQ#: 158716837 Current ICQ status: + More ways to contact me
__________________________________________________________________

 ma senza successo.
Prova su 
http://www.decompiler.com/
ma non credo che ti diranno nulla di diverso da quello che ti
abbiamo già detto qui un mese fa...
--
Gerolamo

Newsgroup: it.comp.lang.c++
Titolo: HELP! PRIMI APPROCCI

Salve a tutti, sono un ragazzo di 17anni che stň tentando di imparare il
C++,
il mio problema č:
ho un libro-manuale del vc++ 5 ma, ho some sofware il borland c++ builder
č completamente diverso ho sbaglio io:
non mi riconosce nessun comando!!!!!!
grazie.

 wrote in message 8heln0$6db$1...@nslave2.tin.it...


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

Gentili colleghi,
sapete dirmi dove reperire l'algoritmo in c++ per il calcolo del
codice fiscale?
grazie in anticipo.
firelynx81
su c6: firelynx81
o icq:   82434982

 codice fiscale?
Allora: non conosco nulla gia' implementato per C++.
D'altro canto l'algoritmo e' cosi' banale che e' sempre presentato in
"Italiano"...
Ecco un link utile:
http://members.nbci.com/it_lang_vb/dl_codfisc.htm
Questo documento (che allora aveva un altro indirizzo) lo utilizzai parecchi
anni fa per sviluppare tale algoritmo in un applicativo VB5.
Nella pagina troverai i links ai files dei database dei comuni etc...
(indispensabili per il calcolo).
Buon lavoro,
Alex

Newsgroup: it.comp.lang.c++
Titolo: Problemi di compilazione VC++5

salve a tutti,
volevo cortesemente chiedere se qualcuno mi puo' aiutare con questo mio
problema.
Ho sviluppato una semplice applicazione e, mentre se la eseguo sul pc
dal quale l'ho sviluppata,
tale applicazione funziona, se tento di eseguirla su di un'altro pc, la
stessa non va !!
Mi viene detto ceh mancano delle dll, ma non e' possiblile fare in modo
che tali funzioni presenti nelle
dll vengano incorporate nell'eseguibile stesso ?
Ringrazio anticipatamente tutti.
--
-----------------------------------------------------
  Roberto Pasini
  Aula di Informatica
  Universita' degli Studi  di Verona
  Facolta' di Medicina e Chirurgia
  Facolta' di Scienze MM.FF.NN.
  Strada le Grazie, 37134 Verona - ITALY
  Tel.  :  +39 45 809 8642
  Fax  :  +39 45 809 8119
  E-MAIL :  
rpa...@borgoroma.univr.it
-----------------------------------------------------
--
Posted from 
proxy.univr.it
 [157.27.6.3]
via Mailgate.ORG Server - 
http://www.mailgate.org

dll vengano incorporate nell'eseguibile stesso ?
Devi utilizzare una versione statica delle librerie o
installare le dll richieste insieme al programma.
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

Per fare questo devi andare su project settings general nella combo
selezionare Use MFC in Static Library
Newsgroup: it.comp.lang.c++
Titolo: menu' in visual c++

Salve, il mio problema e' il seguente:
ho creato una applicazione dialog based con appWizard e
associato alla finestra di dialogo principale un menu,
inserito successivamente tramite il campo menu' nella
finestra delle proprieta' della stessa finestra. Ed ecco
l'inghippo: quando utilizzo le funzioni UI per disabilitare
le voci dei menu (Enable(FALSE)), queste mi funzionano per
meta' nel senso che durante l'esecuzione la funzione
associata all'ID della voce non viene eseguita anche se la
voce stessa non e' grigia.Perche'??! Qualcuno sa darmi una
risposta visto cche la stessa funzione UI su
un'applicazione SDI funziona perfettamente? Garzie.
* Sent from AltaVista 
http://www.altavista.com
 Where you can also find related Web Pages, Images, Audios, Videos, News, and Shopping.  Smart is Beautiful

Ciao,
Questo newsgroup si occupa del lingaggio 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 Linux:      it.comp.linux.development
                it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
forums.borland.com
 (in inglese)
Grazie,
Nicola Musatti

 Questo newsgroup si occupa del lingaggio
Senti, correggeresti questo errore che ogni volta che lo vedo mi
solletica il sistema nervoso? :-)
EMG
Newsgroup: it.comp.lang.c++
Titolo: Codice OLE minimale

Salve a tutti,
    non sono un esperto di OLE e non intendo diventarlo, ma a scopo di debug
dovrei connettermi ad un oggetto OLE e chiamarne un metodo chiamato
"LoadDoc" che prende tre parametri long e restituisce ancora un long (lo
farei in VB se non fosse che gli exe di VB non contengono le informazioni
per il debug...)
    Io ho fatto questo in una applicazion MFC dialog-based:
COleDispatchDriver o;
o.CreateDispatch( "wwAdCen.Man" );
o.m_lpDispatch->Invoke( /* dove pesco questo marasma di parametri??? */ );
o.ReleaseDispatch();
grazie in anticipo,
    Al

o.ReleaseDispatch();
View/ClassWizard/Add Class/From a type library/nel dialogo Import
From Type Library scegli il file .TLB, ovvero la DLL, EXE, OCX
OLB, o che altro che lo contiene come risorsa/OK/nel dialogo
Confirm Classes verifica e/o modifica le classi da rivestire e i
relativi filename per i sorgenti/OK.
Questo genera gli header e i sorgenti di cui hai bisogno, e li
aggiunge al tuo progetto.  Le classi generate _ereditano_ da
COleDispatchDriver; hanno i metodi (e le GetX e PutX per le
proprieta`) che vengono esposti dall'interfaccia di dispatch
che "rivestono"; li implementano ciascuno con un'opportuna
chiamata ad InvokeHelper, dopo eventuali necessarie
preparazioni di parametri; e prendono tutta l'informazione
dalla type library passata in ingresso ("early binding"), quindi
hanno prestazioni discrete (certo non paragonabili a quelle
che puoi avere con la feature #import del Visual C++ 5 e
successivi, ma il meglio che puoi avere con MFC).
Piu` difficile, naturalmente, oltre che meno performante, e`
realizzare un late binding (in cui tutte le informazioni vengono
scoperte a runtime, e le strutture necessarie per le chiamate
sono realizzate dinamicamente su questa base).  Ma mi pare
di capire che tu non abbia questa piu` ardua esigenza.
Alex
Newsgroup: it.comp.lang.c++
Titolo: problema da ignorante

Salve a tutti, sono nuovo in questo gruppo, e nella programmazione in
C++.
Ho un problema (credo da novellino) con la classe fstream, in
particolare riesco a leggere/scrivere con le funzioni open/<< un file
già esistente ma non riesco a crearne uno ex-novo.
Cioè nelle seguenti linee di codice:
fstream fts,out;
out.open("ex.txt",ios::in | ios::out);
fts.open("esempio.txt,ios::in | ios::out");
if (! (fts.is_open()))
   cout << "errore apertura file esempio! \n";
else cout << "tutto ok esempio\n";
if (! (out.is_open()))
   cout << "errore apertura file ex! \n";
else cout << "tutto ok ex\n";
fstream fts,out;
irrimediabilmente mi dà un ok sull'apertuta di esempio.txt, mentre
errore nell'apertura di ex.txt,
dove esempio.txt già esiste mentre vorrei creare ex.txt.
Grazie

Ah...dimenticavo di dire che lavoro su WinXP SP1

 Ah...dimenticavo di dire che lavoro su WinXP SP1
L'argomento del tuo problema è indipendente dalla piattaforma.
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

 out.open("ex.txt",ios::in | ios::out);
Prova
out.open("ex.txt", ios::out);


grazie era questo il problema: non avevo capito che anche se
concatenati dal pipe i due "mode" non sono "cumulativi"

 concatenati dal pipe i due "mode" non sono "cumulativi"
Il simbolo | non è un operatore di concatenazione ma di or bitwise.


 mentre errore nell'apertura di ex.txt,
Perchè hai detto che vuoi ci scrivere *E* leggere. E per leggere
si vuole un file che esista.
--
James Kanze                                           GABI Software
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
Newsgroup: it.comp.lang.c++
Titolo: template & standard

Il seguente codice, test case, di un'architettura di classi ovviamente 
piu' complicata, non compila piu' sugli ultimi snapshot del GCC 3.4 
(mentre compila correttamente con GCC 3.0, 3.2 e 3.3).
Secondo le release notes del nuovo GCC, il compilatore ora non permette 
piu' alcuni costrutti illegali per essere piu' aderente agli standard.
La mia domanda e': C'e' qualcosa di sbagliato nel codice (che il nuovo 
GCC quindi non compila correttamentE) o secondo voi e' un bug del 
compilatore?
Nel primo caso quale e' il modo corretto di istanziare il valore statico
A::val?
#include <iostream>
template <typename T>
class A
{
     static int val;
public:
     typedef A<T> B;
     int get() {return val;}
};
class Z: public A<int>
{
public:
     void foo() { std::cout << "hello: " << get() << std::endl; }
};
int Z::B::val = 666; // ERRORE con GCC 3.4 e OK con GCC 3.3 o precedenti
int main()
{
     Z z;
     z.foo();
}


 template<> int Z::B::val = 666;
Max

  template<> int A<int>::v = 0;
Grazie mille, ho modificato in questo modo le mie inizializzazioni ed 
ora funziona tutto, ora devo provare lo speedup di compilazione usando i 
precompiled header :)
Peccato solo che questa modifica non era listata nei "changes" della 
versione 3.4, tutte le altre pratiche "scorrette" che usavo le ho potute 
correggere molto velocemente consultando quel documento!
Bye,
  Gabry
Newsgroup: it.comp.lang.c++
Titolo: Salve a tutti.

Salve sono Pablo e sto studiando questo strano ed affascinante
linguaggio. Utilizzo il compilatore DJPP che ho trovato insieme
al libro "Chi ha paura del C++" della Mc Graw Hill. Mi sono iscritto
da poco a questo NG e lo trovo molto interessante.
Il mio quesito è questo:
ho saputo da voi che c'è il nuovo comp. DJPP, ma non capisco come
scaricarlo; inoltre è indispensabile per i miei progetti o posso proseguire
ancora con quello in mio possesso?
Vi ringrazio per l'eventuale aiuto,bye by Pablo.
< 
pablo...@tiscalinet.it
 >

 ancora con quello in mio possesso?
Ti consiglio di aggiornarlo in quanto l'ultima versione è molto più
conforme allo standard.
EMG

EMG
Grazie del tuo suggerimento.
Ciao a tutti da Pablo.
pablo...@tiscalinet.it

 da scaricare mi visualizza il contenuto del testo?
Prova a premere il tasto destro e selezionare Salva con nome o qualcosa
del genere.
EMG

Newsgroup: it.comp.lang.c++
Titolo: Manipolazione Stringa!

Ciao a tutti!
Quesito!
ho la seguente stringa:
sMsg = "123456789§Testo della stringa";
e ho il seguente problema:
per trovare la posizione del carattere "§" faccio così:
int posizione;
posizione = strcspn(msg, "§");
ora che in "posizione" ho la posizione del carattere, ho bisogno di dividere
sMsg in due stringhe:
la prima da 0 a "posizione - 1" la seconda da "posizione + 1" alla lunghezza
totale di sMsg...
Io vengo da Vb e da linguaggi di scripting, quindi non saprei che funzione
usare per risolvere il problema!
Nel "mio mondo" avrei usate semplicemente una left$ e una right$ in questo
modo:
strLeft = Left$(sMsg, posizione - 1)
strRight = RIght$(sMsg, posizione + 1)
ma in c, che uso???
Grazie dell'aiuto!
---
(¯`·.¸ZIO MANGLER¸.·´¯)®
---

> ma in c, che uso???
In C o in C++?
Per il C chiedi su it.comp.lang.c
Per il C++ ti consiglio di usare la classe std::string
e prendere ispirazione da qualcosa tipo:
http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&oe=UTF-8&threadm=c55rnv%242peln9%241%40ID-202547.news.uni-berlin.de&rnum=2&prev=/groups%3Fas_epq%3Dcerca%2520le%2520sottostringhe%2520e%2520riempie%2520il%2520vector%26ie%3DUTF-8%26oe%3DUTF-8%26as_uauthors%3DGerolamo%26lr%3D%26hl%3Dit
-- 
Gerolamo

E' in C!

> E' in C!
ehm...quale parte di it.comp.lang.c++ non hai capito?
Newsgroup: it.comp.lang.c++
Titolo: eliminare una stringa in un'altra stringa

essendo ancora un po' newbie con la std library, volevo sapere come
fareste voi se data una stringa
string object_string = "ab000absb00fdabba000fda";
e una stringa da cercare all'interno di essa
string deleting_string = "000";
per restituire una stringa che abbia eliminate tutte le occorrenze di
000 (quindi ababsb00fdabbafda)
io l'ho fatto cosě, ma credo che si possa scrivere piů "stringato"
;-DD
string object_string = "ab000aaa000bbab00a";
string deleting_string = "000";
string result_string;
 
 for (int i = 0, j = 0; i < object_string.size(); ++i) {
    int k = 0;
    while (k < deleting_string.size() && object_string[i + k] ==
deleting_string[k]) k++;
    if (k == deleting_string.size()) i += k;
    else result_string.push_back(object_string[i]);
 }
-- 
]\/[ad]\/[age (
www.mindreamz.net
)
"Un Maestro insegue semplicemente la sua visione di Eccellenza in
qualunque cosa sta facendo e lascia agli altri decidere se sta 
lavorando o giocando. A lui sembra sempre di fare entrambe." - Anonimo

 occorrenze di 000 (quindi ababsb00fdabbafda)
Direi che l'algoritmo l'hai scritto tu stesso: cerchi la sottostringa e
se la trovi, la elimini. Una cosa del genere insomma (inplace):
<CODE>
for (;;) {
   size_type pos = object_string.find(deleting_string);
   if (pos != string::npos) object_string.erase(pos,
deleting_string.size());
   else break;
}
</CODE>
Questa versione distrugge il contenuto originale di object_string, ma
basta farne una copia prima se non vuoi che accada.
Ciao
Gian Michele

[snip]
era proprio questo che volevo... l'algoritmo sapevo essere ok (magari
non il massimo dell'efficienza)... mi serviva la "versione std
library"...


Newsgroup: it.comp.lang.c++
Titolo: problemi di conversione

qualcuno mi sa spiegare come posso convertire una String in una AnsiString e
viceversa?
Grazie
                                                    DunE


di cosa? di che linguaggio? di che tool? String cos'e? stai parlando si
std::string forse?
			bax

 wrote in message
37E76E72...@irst.itc.it...

Newsgroup: it.comp.lang.c++
Titolo: Riavvio sistema

Devo fare una utility di installazione:
Come faccio in VC++ a riavviare il sistema, assicurandomi che la mia
applicazione riparta dopo il riavvio ? Inoltre, fare una shell che potrebbe
riavviare il sistema, ed anche in questo caso poter ripartire automaticamente
dopo il riavvio; E poter vedere se delle applicazioni sono o no installate
(per decidere cosa va ancora installato e cosa e' gia' stato installato); e
ad ogni riavvio abilitare solo le funzioni relative alle operazioni ancora da
compiere.
Greetings, Alessandro
http://www.esalab.it
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    


I suggerimenti sono validi per i S.O. Windows 9[5/8] e NT (dedotti dal
riferimento a VC++). Visto che questo è un newsgroup generico, sarebbe buona
norma indicare il S.O. che si utilizza, nel caso in cui non fossero
disponibili soluzioni portabili.
- per riavviare il sistema puoi utilizzare la funzione ExitWindowsEx (è
documentata nell'help di VC++, che io, al momento, non ho disponibile)
- Puoi far eseguire un tuo programma al successivo startup inserendo
l'apposita entry (stringa) in
HKEY_LOCAL_MACHINE\Software\Microsoft\CurrentVersion\Run\<miaapp>=<path
eseguibile>
oppure
HKEY_LOCAL_MACHINE\Software\Microsoft\CurrentVersion\RunOnce\<miaapp>=<path
eseguibile>
nel secondo caso l'applicazione verrà eseguita una sola volta.
- Se con "fare una shell" intendi eseguire un'altra applicazione che può a
sua volta riavviare il sistema, credo che valga il suggerimento al punto
precedente.
---
Valter Minute
min...@fortech.it
 (the reply address of this message is invalid)
---
Are you looking for a good freeware ScreenSaver? Try FOYD!
http://hotfiles.zdnet.com/cgi-bin/texis/swlib/hotfiles/getit.bin?fcode=000PZ
0
if you want, I can send you the (free) C++ source code.
Newsgroup: it.comp.lang.c++
Titolo: problema con uso dll

Ciao a tutti, vorrei capire come posso usare le dll. Ovvero  vorrei capire, 
sapendo il nome della  libreria che  voglio usare, come posso sapere quali 
sono i metodi usati da tale libreria in modo da invocarle con c++ e usarle 
per i miei scopi.
grazie
C 

Christina ha scritto:

Questo non è un aspetto inerente al linguaggio C++, ma dipendente dal
sistema operativo, quindi questo non è il newsgroup più adeguato per la
domanda.
Ad ogni modo, in UNIX e derivati, potresti per esempio usare "nm -C -D
libqualcosa.so" per ottenere una lista dei simboli esportati. Su Windows
non so, non lo uso. Credo ci vorrà il solito shareware misconosciuto
scaricabile in giro per la rete ;-).
Prova a chiedere su uno di questi, a seconda della piattaforma:
* it.comp.os.linux.development
* it.comp.programmare.win32
E così via.
Ciao,
-- 
Matteo Settenvini
FSF Associated Member
Email : 
mat...@member.fsf.org
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d--(-) s+:- a-- C++ UL+++
P?>++ L+++>$ E+>+++ W+++ N++ o?
w--- O- M++ PS++ PE- Y+>++
PGP+++ t+ 5 X- R tv-- b+++ DI+
D++ G++ e h+ r-- y?
------END GEEK CODE BLOCK------


I tuoi messaggi risultano vuoti con il testo allegato.
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

Newsgroup: it.comp.lang.c++
Titolo: activex in c++

devo fare un activeX in c++ che, inserito in una pagina web, controlli
su una porta se arriva una stringa e al suo arrivo aggiorni la pagina
web in cui è inserito
avete un'idea di come debba iniziare?
sapete come fare un activex in c++?


it.comp.programmare.win32
Qui solo ISO C++ Standard. Stop.
Niente problemi dipendenti da sistema operativo. Stop.
Leggere meglio manifesto NG. Stop.
Saluti. Stop.
Passo e chiudo. :-)
-- 
Matteo Settenvini
FSF Associated Member
Email : 
mat...@member.fsf.org
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d--(-) s+:- a-- C++ UL+++
P?>++ L+++>$ E+>+++ W+++ N++ o?
w--- O- M++ PS++ PE- Y+>++
PGP+++ t+ 5 X- R tv-- b+++ DI+
D++ G++ e h+ r-- y?
------END GEEK CODE BLOCK------
Newsgroup: it.comp.lang.c++
Titolo: Nested class e friendship

Cari amici, su C++ Informer #9 ho letto che il seguente codice risulta
illegale:
class A ;
class B
  {
  friend class A ;
  class Nested {} ;
  // ...
  } ;
// Illegale
class A : public B::Nested
  {
  } ;
L'illegalitą č data dal fatto che la friendship della classe A riguardo
i membri della classe B non si estende al livello della dichiarazione
della classe base di A e quindi B::Nested non č visibile da A in quella
sede (lo sarebbe, invece, in qualunque membro di A).
Il DJGPP, purtroppo, lo compila senza dare alcun errore. Il vostro
compilatore come si comporta?
EMG

 
Il gcc (2.7.2, 2.90 e 2.95) lo compila senza battare ciglio, anche con
-Wall e -pedantic.
M

 EMG
il compilatore su HP-UX 11 segnala l'errore
$ aCC p.cpp
Error 558: "p.cpp", line 11 # Cannot access private member class Nested.
    class A : public B::Nested
                     ^^^^^^^^^
errore analogo anche su (ex)Digital Unix 
$ cxx p.cpp
cxx: Error: p.cpp, line 11: class "B::Nested" is inaccessible
class A : public B::Nested
--------------------^                            
*Fabio*
Newsgroup: it.comp.lang.c++
Titolo: Ma le librerie?

Come e dove posso trovare una documentazione esauriente e chiara sulle
librerie del C++? A che serve conoscere bene la struttura, la sintassi
etc. etc. di un linguaggio se poi sono limitato nel suo utilizzo?
Aiutatemi... Vorrei essere comunque un po' + chiaro: Ad esempio quale
libreria controlla il testo con funzioni del tipo Locate del Basic o
gotoxy del Pascal? Come posso produrre un suono? A quale libreria mi devo
affidare? Esistono librerie grafiche che non siano quelle assurde e
pesanti del VisualC++? Non voglio usare le directX per tracciare il
grafico di una funzione... E non e' nemmeno utile sapere per che cosa e'
generalmente usata una libreria se tanto non conosco le funzioni che le
appartengono... come si impara?

 appartengono... come si impara?
Supponiamo, per far cifra tonda, che in rete si trovino circa
centomila librerie.  Non ti pare che sia MOLTO utile "sapere per
che cosa e` generalmente usata una libreria" visto che questo
ti permette di scartarne il 99% e dovere approfondire quindi
"solo" un migliaio di esse?  Cosi`, alla media di 3 al giorno, in
un annetto di studio te la cavi, invece di richiedere un secolo.
Anzitutto concentrati su di una piattaforma o un piccolo gruppo
di esse (Windows e soci, e Linux e soci, ad esempio).  Poi, poni
le tue domande sui gruppi specifici relativi a queste piattaforme
e non ad altre.  Ad esempio, it.comp.programmare.win32, ecc.
Una volta deciso che una data libreria ti interessa abbastanza
da approfondirla, nello stesso posto dove scarichi quella (magari
come parte dello stesso pacchetto) troverai i reference manual
e magari anche altri articoli (tutorial, user manual).
Alex

appartengono... come si impara?
Mi sorge un dubbio: cosa intendi tu come libreria?
Ciao.
--
Diego "DGP85" Pettenň
daps...@nightmail.com
Newsgroup: it.comp.lang.c++
Titolo: Algoritmi di visione artificiale e riconoscimento vocale

Mi servirebbe del materiale su quest'argomento. Vorrei , in particolare
sapere se esistono delle librerie C o classi C++ che facilitano la loro
implementazione . Vorrei anche sapere se esistono esempi di programmazione
on-line che mi consentano di capire a che punto sono arrivate le tecnologie
di riconoscimento vocale e di visione artificiale.
Ciao    Grazie

 wrote in message
news:7mn7o5$ggi$1...@nslave1.tin.it...
: Mi servirebbe del materiale su quest'argomento. Vorrei , in particolare

:
:

Sul sito della intel trovi una libreria per signal processing...
non so se e` quello che cerchi, anche perche` va bene solo
per processori intel (non so se con i cloni ci sono problemi).
In compenso e` molto ottimizzata.
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

ciao,
la microsoft ha fatto librerie (con codice c++ disponibile) per il
riconoscimento vocale
..ma non ricordo l'indirizzo.
ciao
--
Tiberio Grasso
Tecnomare SpA
R&D, Robotics and Space
Tel: 
+39-041-796711
Fax: 
+39-041- 796800
e-mail: 
gras...@tecnomare.it

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

salve a tutti mi servirebbe una aiuto
mi servono le librerie API per C++ per interfacciarmi con le porte di 
comunicazione seriali e parallela chi me le può spedire con un allegato o 
dirmi dove trovarle
ringrazio anticipatamente la mia e-mail è 
carlor...@libero.it
 

 dirmi dove trovarle
Non ti sei dimenticato un piccolo particolare tipo... il sistema 
operativo? E soprattutto, una volta che l'hai trovato, chiedi sul 
newsgroup di quel sistema operativo, avrai piu' fortuna :)
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003
Newsgroup: it.comp.lang.c++
Titolo: template di classe - argomenti di default

Salve,
ho letto che gli argomenti di default per i parametri (di tipo e di valore)
dei template di classe seguono le stesse regole di quelli per le funzioni,
cioč che bisogna partire da destra ad assegnare valori... ma allora questo
codice perchč non da errori? (Uso gpp 2.95)
template <class X = int, class Y>
 class Z{};
int main() {
 return 0;
}
Grazie
--
Luigi


--
Luigi Mantellini
Per il pessimista il bicchiere è mezzo vuoto,
per l'ottimista è mezzo pieno,
per un ingegnere è semplicemente sovradimensionato rispetto l'uso.

 dall'ultimo al primo.
Esatto! :)
E' proprio per questo che mi sorprende il fatto che gpp 2.95 non dia errore
a compile-time.
Ciao

"Luigi" ha scritto
: Salve,
:
: ho letto che gli argomenti di default per i parametri (di tipo e di
valore)
: dei template di classe seguono le stesse regole di quelli per le funzioni,
: cioč che bisogna partire da destra ad assegnare valori... ma allora questo
: codice perchč non da errori? (Uso gpp 2.95)
Non possiedo il gpp 2.95 per cui non posso controllare, comunque
fino a che non istanzi il template, il compilatore effettua solo
una verifica superficiale della correttezza del codice. Dovresti
provare ad usare un oggetto di tipo Z<int> e vedere se segnala
qualcosa.
:
: template <class X = int, class Y>
:  class Z{};
:
: int main() {
:  return 0;
: }
:
ciao
Massimo

Hai ragione, infatti istanziando una cosa simile:
Z<int> y;
Segnala l'errore che doveva, e per correggerlo basta inizializzare partendo
da destra.
ciao
--
Luigi
Newsgroup: it.comp.lang.c++
Titolo: matrici

In C++ standard esistono classi template vector e valarray, ma esistono
classi matrici? Con operatore di moltiplicazione, inversione, trasposta,
ecc. ecc.
Grazie a tutti.

 ecc. ecc.
Le matrici non fanno parte dello standard.
Dai comunque un'occhiata a:
http://oonumerics.org/blitz/

.. e anche qui
http://oonumerics.org/oon/
Newsgroup: it.comp.lang.c++
Titolo: Classe di criptazione

Salve ragazzi, ho un problema. Ho creato un programma col quale scrivere
testi in formato TXT che poi vengono criptati da una classe CInsabbiamento.
Ora, non riesco a capire (anche perché è da poco che uso il C++, VC++ 5.0)
cosa diavolo devo passare alla classe per trasformare il testo, che so, in
numeri.
Riccardo
ri...@wxt.com
http://www.Geocities.com/CollegePark/Quad/9526

numeri.
Veramente non e' che ho capito molto...
La classe "CInsabbiamento" la stai scrivendo tu? Ipotizzo che sia cosi'.
In questo caso probabilmente dovrai passare ad una funzione della tua classe
almeno 2 parametri:
- il testo originale, potrebbe essere "CString", oppure "char *" oppure
"LPCSTR", comunque una stringa;
- il testo criptato, potrebbe essere sempre una stringa naturalmente passata
come puntatore/riferimento, quindi "CString&", "CString *" oppure "char *".
Se non era questa la domanda, chiedo scusa.
Ciao, Angelo.
-----
PS: Complimenti per la tua homepage, davvero molto divertente!

Non mi sembra chiarissimo il problema.
Credo che forse basti passare un puntatore ad una stringa di caratteri in
cui è memorizzato il testo, oppure un reference ad una CString
--
Davide Rampoldi :-)
Como - Italy
***********************
g.ram...@rcl.it
davi...@usa.net
----------------------------
Remove #NOSPAM# to reply via E-mail

Newsgroup: it.comp.lang.c++
Titolo: find_first_of() come funziona?

Salve,
leggendo il Lippman (tradotto in ITA) ho visto che la funzione 
find_first_of della classe string ritorna l'indice di un qualsiasi
elemento contenuto sia nella sottringa data per la ricerca che nella 
stringa in cui si cerca.
Ma allora il seguente sorgente, non dovrebbe stampare 5?  
#include <iostream>
#include <string>
string s = "XSDABC";
string::size_type pos;
int main () {
        if ((pos = s.find_first_of("CAS")) != string::npos)
                std::cout << pos << std::endl; // Stampa 1 (praticamente 
cerca solo S)
        return 0;
}
Grazie
-- 
Luigi
--
bug windows [5] = {"95", "98", "NT", "Me", "2000"};
togli "tilescarpe" per rispondere via e-mail

 }
http://www.sgi.com/tech/stl/basic_string.html
size_type find_first_of(const basic_string& s, size_type pos = 0) const;
Searches within *this, beginning at pos, for the first character that is equal
to any character within s.
Cerca il primo carattere che è uguale a un qualsiasi carattere di s.
quindi se s = "XSDABC"
s.find_first_of("CAS") restituisce 1 perchè la prima lettera che trova è S
--
ciao
xaero

 s.find_first_of("CAS") restituisce 1 perchè la prima lettera che trova è S
ho fatto un po' di casino con tutte queste s. mi correggo
...
quindi se:
std::string mystring = "XSDABC";
mystring.find_first_of("CAS"); // = 1
--
ciao
xaero

 mystring.find_first_of("CAS"); // = 1
Io pensavo che lui prima cercasse C in tutta mystring, poi A, poi S....
invece a quanto par confronta C con il primo, poi A, poi S, poi con il
secondo etc....
Ora tutto ok.
Grazie
Newsgroup: it.comp.lang.c++
Titolo: un piccolo chiarimento per un grande ignorante

una domanda facile facile:
le variabili che dichiaro all'interno di un ciclo for, non dovrebbero
essere visibili solo all'interno di tale ciclo?
se cosě č perchč il mio compilatore non mi permette di usare la stessa
"i" che ho usato come contatore in un ciclo successivo?
E' il mio compilatore che č scrauso?(Borland turbo c++ 3.0)
grazie in anticipo

"i" che ho usato come contatore in un ciclo successivo?
Prendi questi due cicli:
for(int i = 0; true; ++i); // infinito
for(int i = 0; true; ++i); // infinito
Ogni ciclo for possiede una propria variabile i che alla fine dello stesso
viene distrutta.
Se tu scrivi:
for( int i = 0; // altro
for(i = 0; // altro
risulta errore per il motivo detto in precedenza.
Se proprio vuoi usare il medesimo contatore:
int i;
for( i = 0; condizione; iterazione);
fo(i = 0; condizione; iterazione);
ovvero dichiarando la variabile esternamente ai due cicli.
Ciao.
-- 
La classifica dei prodotti MS:
C#, la migliore barzelletta di Bill Gates.
Visual C++, il meno standard dei compilatori C++.
J++, la copiatura piů riuscita.
Windows, il piů instabile.
Visual Basic, un esempio di prodotto decente della MS - forse l'unico -.
OutlookExpress, scandali su scandali.
La classifica degli "amici" coglioni:
Stefano Zanchi, il miglior lamer del mondo.
 

essere visibili solo all'interno di tale ciclo?
si, il tuo compilatore non rispetta lo standard, come MSVC del resto.
ciao
Manfry

 ha scritto nel
messaggio news:3a5a35eb...@news.planetsec.com...

Come con  il Visual C++. Entrambi fuori standard.
Per aggirare ciň si potrebbe usare questo sistema :
{
for( int i=  0; ; );
}
{
for(int i = 0; ; );
}

E' il mio compilatore che è scrauso?(Borland turbo c++ 3.0)
Beh, diciamo che é un pò..ehm,uhm.. oppico.
Lavinia
WINWORD.EXE - ERRORE DI APPLICAZIONE
l'istruzione a "0x3017ff27"ha fatto riferimento alla
memoria a "0x02a3143c".La memoria non poteva essere 'read'.
Newsgroup: it.comp.lang.c++
Titolo: template con argomenti enum

non ho trovato nada al riguardo.
Siccome avevo intravisto sul NG (ma non ritrovo il post, 
accidenti) una roba simile, qualcuno potrebbe farmi un esempio, 
se è effettivamente possibile, di dichiarazione formale e di 
istanziazione e uso di una classe template tra i cui argomenti 
parametrici ci sia almeno un ENUM ? Anche il solo enum, se è 
consentito, va bene.
Non è necessario che compili in modo completo, vorrei solo 
capire la sintassi e in cosa differisce da, che so, un parametro 
di tipo plain int.
grazie
ciao
Soviet

 consentito, va bene.
enum A { b = 1, c, d };
template <A a> struct C {
    int array[a];
};
int main() {
    C<b> cb;
//    C<2> c2;
}
La riga commentata da' errore.
Ciao,
Nicola

 tutto quanto già citato ?
FARE QUALCHE PROVA? no eh?...

 c'è altro, chiedo possibilmente qualche altro commento.
Un mio vecchissimo messaggio:
 
http://groups.google.it/group/it.comp.lang.c++/msg/2e76a4043c33cd83
(Accidenti, come vola il tempo.)
Max

Andrea Laforgia ha scritto:

ehhh, hai ragione. E' periodo di scrutini, e se anche trovo il 
tempo, non ci ho la testa molto collegata.
ciao
Soviet

 Max

 int Funz (pippo <double, char *> Arg)
"pippo<double, char *>" non è un'espressione valida.
Ricordo che 'pippo' era definita come
 template< class T, char* V > class pippo { }; 
 
Quindi, o usi una sua istanziazione specifica (come quella del tuo esempio:
"pippo <double, nam>"), o usi 'pippo' nel contesto di una funzione o classe
template, ad esempio:
 template< char* V >
  int Func( pippo< double,V> Arg );
Max

 Max
Newsgroup: it.comp.lang.c++
Titolo: estrarre path da una stringa

se ho una stringa del tipo
/home/giurrero/prova/file.txt
voglio estrarne il percorso:
/home/giurrero/prova/
e il nome del file:
file.txt
ci sono funzioni che fanno il lavoro da sole?

 ci sono funzioni che fanno il lavoro da sole?
per il nome del file, io uso
,-----
| string baseName(
|   const string & s
| ) {
|   // Strips the (eventual) path information from s = argv[0] ;
|   // if no file name is given, returns an empty string.
| 
|   string::size_type i = s.find_last_of('/');
|   if (i == string::npos) return s;
|   return string(s, ++i);
| }
`-----
(con gli oppurtuni include e using).  puoi facilmente rovesciare il
ragionamento per trovare il pathname.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy              ROT13: 
ybe...@cq.vasa.vg

giurrero...@gmail.com
 ha scritto:

Non portabili e non standard, si'.
Alcuni sistemi operativi rendono disponibili funzioni di sistema per 
gestire il file system e, a volte, anche per manipolare "stringhe" 
contenenti path e/o nomi di file (Windows, ad esempio, ha una serie di 
funzioni Path*(), nel tuo caso servirebbe la PathRemoveFileSpec() ).
Oppure puoi trovare piccole funzioni wul web o scriverne una tu.
Una variante di quella proposta da Maurizio Loreti in questo thread puo' 
andare bene. Se devi estenderne la portabilita', puoi usare la 
compilazione condizionale per scegliere il carattere "separatore di 
path" (es. su Windows si puo' usare \ oppure /).
-- 
Chewingum is disgusting.
Roal Zanazzi

Newsgroup: it.comp.lang.c++
Titolo: Genesis 3D Help

Qualcuno sa se ci sono dei tutorial che mi aiutino a creare un
sparatutto come Half Life (senza troppe pretese) usando l'Engine Genesis
3D???

>3D???
Credo sia ot parlarne qui, meglio it.comp.programmare.win32
anche se...mi vien da dire...gia e' tantissimo che ti abbiano 
"regalato" un engine come quello, direi di accontentarsi :-))))
(Scherzi a parte, ho visto qualche tutorial in giro, ma non contarci 
troppo: certe cose non si imparano con un paio di tut...)
-- 
God@Universe#~>shutdown -r,
  . 
darX...@tin.it
      . 
star...@wappi.com
 (GSM SMS)
   . Fido 2:335/241.5     . 
http://darxstar.cjb.net
    . ICQ UIN# 11151997    . Britannia: UO-T2A,Trisinc, Gwydion the Mage
---
 " I don't want to die,
 I sometimes wish I'd never been born at all "
                                    -- the Queen
Newsgroup: it.comp.lang.c++
Titolo: overload operatore e resize di vector

ciao a tutti,
perchè se ridefinisco l'operatore di assegnamento di una classe non posso
fare un resize di un vector di questa classe?
questo ad esempio non compila:
#include <vector>
#include <iostream>
using namespace std;
class prova{
 
	public:
		int pippo;
		prova operator=(prova &op);
};
prova prova::operator=(prova &op){
	pippo=op.pippo;
 
	return *this;
}
int main(){
 
	vector<prova> ciao;
 
	ciao.resize(20);
 
	return 0;
 
}
grazie per le eventuali risposte!

 fare un resize di un vector di questa classe?
#include <vector>
#include <iostream>
using namespace std;
class prova{
public:
int pippo;
prova operator=(const prova &op);
};
prova prova::operator=(const prova &op){
pippo=op.pippo;
return *this;
}
int main(){
vector<prova> ciao;
ciao.resize(20);
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
The EMG Music page:         
http://www.emagsoftware.it/emgmusic
 

 prova operator=(const prova &op);
Da quanto ne so, oltre a correggere il passaggio del parametro, l'operatore
di assegnamento nella sua forma canonica restituisce un reference:
prova& operator=(const prova &op);
prova& prova::operator=(const prova &op) {
	pippo=op.pippo;
	return *this;
}

 di assegnamento nella sua forma canonica restituisce un reference:
Sě, giusto.


Newsgroup: it.comp.lang.c++
Titolo: AIUTO errore di assegnamento valore di char=char

Aiuto mi viene datto un errore nella parte pat=articoli[1].Nome; con Lvalue
required
qualcuno mi puo essere d' aiuto nonriesco a capire perche il dato che gli
vado ad assegnare è lo stesso un char quindi non dovrebbe dare problemi
# include <conio.h>
# include <stdio.h>
struct Pate {
 char Nome[20];
};
main()
{
   char lettere[3] = { 'A','P','Z'};
   Pate articoli[3]={{"gli"},{"un"},{"una"}};
   Pate
preposizioni[10]={{"di"},{"a"},{"da"},{"in"},{"con"},{"su"},{"per"},{"tra"},
{"fra"}};
 char text[5000],pat[100], te[1];
 int no,count,pos[20],i;
 clrscr();
 cout<<"\n\nInserisci il testo:";
  gets(text);
 cout<<"Inserisci la stringa da cercare:";
// gets(pat);
for (i=0;i<3;i++){
//pat=lettere[i];                               //errore
pat=articoli[1].Nome;                    //errore
}

Maurizio Porcu ha scritto:

A prima vista sembra che tu ti sia dimenticato della parentesi di 
chiusura del main

 vado ad assegnare è lo stesso un char quindi non dovrebbe dare problemi
Innazitutto non è *un* char: sia 'pat' che 'Pate::Nome' sono *array*. In 
secondo luogo sono array di dimensioni diverse, perciò sono tipi diversi. 
In terzo luogo, anche avessero le stesse dimensioni, non potresti comunque 
applicare l'operatore assegnamento, perché gli array non sono Lvalue.
Visto che programmi in C++ e non in C, se devi manipolare stringhe di 
testo, preferirai senz'altro usare la classe 'std::string', che é fatta per 
questo.
Max
Newsgroup: it.comp.lang.c++
Titolo: Lanciare un programma esterno

E' possibile lanciare all'interno di un programma C++ un'altro eseguibile?
Grazie mille
Anic - American Native Information Center
http://anic.terrashare.com

E' possibile lanciare all'interno di un programma C++ un'altro eseguibile?
Generalmente si', ma dipende dall'implementazione.
([OT] Sotto Windows ShellExecute o CreateProcess, ma ne riparliamo su
it.comp.programmre.win32).

 Grazie mille
Non all'interno di un programma Standard C++.
Comunque ogni compilatore ha le sue estensioni, ma per
quelle devi rivolgerti ad un newsgroup più appropriato.
Manlio Perillo

Leggi il newsgroup con il titolo Eseguire un file?? oppure Eseguire un
applicazione da programma ho già risposto.



applicazione da programma ho già risposto.
Version CORRETTA:
Leggi sul newsgroup il thread con il titolo Eseguire un file?? oppure
Eseguire un applicazione da programma dove ho già risposto.
PS: Il 'tu non sai chi sono io' sui NG è da bimbi...
Luc.
Newsgroup: it.comp.lang.c++
Titolo: vector<T> : può essere sorted?

Ciao a tutti,
il problema nasce dalla mia scarsa conoscenza dei contenitori dello standard
C++ ( insomma, della vecchia STL   ;-)  ).
Esiste un modo di inserire un elemento in un vettore direttamente nella
giusta posizione (in modo che rimanga sempre "ordinato") che non sia
inserire l'elemento in un punto qualsiasi e poi chiamare sort() ?
...oppure ho sbagliato completamente contenitore?!!!!
GRAZIE
Daniele.
-----------------------
#exclude <windows.h>


wrote:

Credo che tu debba considerare un contenitore di tipo map che ti permette di
associare una chiave ad un oggetto 
==================================================
E gia' che la verita' e' solo un' interpretazione
finche' il contrario non accadra'
==================================================

 ...oppure ho sbagliato completamente contenitore?!!!!
Sospetto di si`, comunque quel che chiedi e` possibile, anche
se le prestazioni non saranno certo buone.  Se un vector v e`
sortato, le funzioni lower_bound e upper_bound (che trovi in
#include <algorithm>) tornano rispettivamente il primo e
l'ultimo punto in cui si puo` inserire un dato valore cosi`
che v resti sortato; v.insert ti permette poi di effettuare
appunto l'inserzione.
Riassumendo dunque, qualcosa del tipo...:
    #include <vector>
    #include <algorithm>
    template <class T>
    insert_sorted(std::vector<T>& v, const T& t) {
        // pre-condizione: v e` sortato
        std::vector<T>::iterator it;
        it = std::lower_bound(v.begin(), v.end(), t);
        v.insert(it, t);
    }
NB: non ho provato a compilarlo, non sorprenderti se c'e`
qualche piccolo errore.
Ogni chiamata a insert_sorted quando v contiene N
elementi richiedera` tempo O(N).  L'inserimento di
N elementi in questo modo richiede dunque O(N*N),
un costo computazionale molto elevato rispetto al
costo O(N*log(N)) necesario per il solo sort.
Hai varie possibilita` alternative, a seconda di
quello che esattamente devi fare.  L'uso di un
set o multi_set invece del vector e` una di queste
alternative.  Un'altra, mantenendo il vector, e`
usare make_heap e push_heap (eventualmente anche
pop_heap), che invece di mantenere il vector
totalmente sortato lo mantiene nella condizione
di 'heap', che ha comunque la sua utilita` e ad
un prezzo spesso inferiore.  Ecc, ecc...
Alex

 ...oppure ho sbagliato completamente contenitore?!!!!
In effetti non č il piů adatto per questo tipo di operazioni. I tipi
std::set, std::multiset, std::map e std::multimap sono implementati
attraverso alberi bilanciati mantenuti costantemente ordinati.
EMG
Newsgroup: it.comp.lang.c++
Titolo: quale linguaggio scegliere ???

vorrei conoscere un linguaggio per poter lavorare in ambito industriale, per
la gestione di automazioni industriali (oltre al plc)
o installazione e assistenza di macchinari automatizzati ecc.
non  web grafica o contabilità e amministrazione.Sono completamente ingnaro,
chi mi aiutasse ad orientarmi nella scelta gliene sarei molto grato, ( o
anche pubblicazioni per l'orientamento al linguaggio da apprendere) scrivere
a 
luc...@tin.it

lucespo ha scritto nel messaggio ...


Newsgroup: it.comp.lang.c++
Titolo: Passaggio di SAFEARRAY con VARIANT

Salve a tutti.
Ho bisogno, con visual c++, di passare un array di byte, da VC a VB,
attrverso la proprietà di un controllo OCX.
Ore il codice che ho inserito è il seguente, supponendo che MA sia la
proprietà di tipo VARIANT
 SAFEARRAYBOUND MAbound[1];
 VariantInit(&MA);
 int Size = 10;
 long i=0;
 BYTE * ValBin = new BYTE[Size]; // crea l'array da passare
 for (i=0;i<Size;i++)
 {
  ValBin[i]='a' + int(i);
 }
 MAbound[ 0 ].lLbound = 0;
 MAbound[ 0 ].cElements = Size;
 MA.vt = (VT_ARRAY|VT_UI1);
 MA.parray = SafeArrayCreate(VT_UI1,1,MAbound);  // crea il safearray dentro
il VARIANT
 unsigned char * buf;
 SafeArrayAccessData(MA.parray,(void**)&buf);
 for (i=0;i<Size;i++)
     buf[i]=ValBin[i];                // riempe il safearray
 SafeArrayUnaccessData(MA.parray);
La cosa funziona, cioè i dati vengono passati, ma dopo qualche istante VB5
da un errore di protezione.
Dove sbaglio.
Grazie.
Nicola Viganò

PROVA

Non e' che dal lato VB stai ciclando tra 1 e Size ?
Se cosi voui fare devi porre
MAbound[ 0 ].lLbound = 1;
Io a scanso di equivoci
preferisco
Public Sub SetMessage(pduMsg() As Byte)
Dim i%, uno%, N%
    uno = LBound(pduMsg)
    N = UBound(pduMsg)
    For i = uno To N
        .......
    Next i
.....
Davide
d...@menhir-informatica.com

...

Newsgroup: it.comp.lang.c++
Titolo: std::wstring

Ciao a tutti,
sto cercando di compilare codice sorgente scritto da altri con g++ sotto 
cygwin e ottengo sempre lo stesso errore. Per il codice:
#ifndef Foundation_UnicodeConverter_INCLUDED
#define Foundation_UnicodeConverter_INCLUDED
#include "Poco/Foundation.h"
namespace Poco {
class Foundation_API UnicodeConverter
  /// A convenience class that converts strings from
  /// UTF-8 encoded std::strings to UTF-16 encoded std::wstrings
  /// and vice-versa.
  ///
  /// This class is mainly used for working with the Unicode Windows APIs
  /// and probably won't be of much use anywhere else.
{
public:
  static void toUTF16(const std::string& utf8String, std::wstring& 
utf16String); //linea *57*
		/// Converts the given UTF-8 encoded string into an UTF-16 encoded 
wstring.
	static void toUTF16(const char* utf8String, int length, std::wstring& 
utf16String);	
		/// Converts the given UTF-8 encoded character sequence into an UTF-16 
encoded string.
	static void toUTF16(const char* utf8String, std::wstring& utf16String);	
		/// Converts the given zero-terminated UTF-8 encoded character 
sequence into an UTF-16 encoded wstring.
	static void toUTF8(const std::wstring& utf16String, std::string& 
utf8String); //linea *66*
		/// Converts the given UTF-16 encoded wstring into an UTF-8 encoded 
string.
Ottengo:
In file included from src/Debugger.cpp:51:
include/Poco/UnicodeConverter.h:57: error: `std::wstring' has not been 
declared
include/Poco/UnicodeConverter.h:57: error: ISO C++ forbids declaration 
of `utf16String' with no type
include/Poco/UnicodeConverter.h:60: error: `std::wstring' has not been 
declared
include/Poco/UnicodeConverter.h:60: error: ISO C++ forbids declaration 
of `utf16String' with no type
include/Poco/UnicodeConverter.h:63: error: `std::wstring' has not been 
declared
include/Poco/UnicodeConverter.h:63: error: ISO C++ forbids declaration 
of `utf16String' with no type
include/Poco/UnicodeConverter.h:66: error: expected unqualified-id 
before '&' token
include/Poco/UnicodeConverter.h:66: error: expected `,' or `...' before 
'&' token
include/Poco/UnicodeConverter.h:66: error: ISO C++ forbids declaration 
of `parameter' with no type
make[1]: *** 
[/usr/local/poco/Foundation/obj/CYGWIN/i686/debug_shared/Debugger.o] Error 1
make[1]: Leaving directory `/usr/local/poco/Foundation'
make: *** [Foundation-libexec] Error 2
Ho provato a dichiarare esplicitamente i namespace, ad aggingere degli 
#include (un po' a caso, ad essere sincero) ma non sono riuscito a 
risolvere il problema. A questo punto comincio a pensare che cygwin "non 
supporti" wstring. E' possibile?
Suggerimenti? ;-)
Grazie in anticipo e buona serata,
Giulio
-- 
OnAir:

 supporti" wstring. E' possibile?
Ho visto un altro post su questo argomento, e sembra che non c'e' il typedef
per std::wstring in cygwin.
Fortunatamente, puoi semplicemente mettere questo in qualche posto, e tutto
dovrebbe andare bene (a meno che tu non abbia incluso wchar.h)
namespace std {
typedef std::basic_string <wchar_t> wstring;
};