mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Esportare/importare file.obj tra visual C++ e Borland c++ Builder AIUTATEMI vi prego ...

Come da oggetto...
Ho scritto e compilato delle funzioni che devo necessariamente
implementare con il VC++, quindi dovrei importarle per usarle con il
c++ builder 4.0.
Ricordo che in dos si usavano direttive tipo export e extern ma
provando qui la cosa non sembra funzionare : (((
CHI MI DA UNA MANO ... RAGAZZI MI GIOCO 1 MATERIA PLEASE!!!
Attendo fiducioso consigli (perfavore il + dettagliati possibile non
ho alcun libro se non turbo c++ ... che è ormai obsoleto)

 c++ builder 4.0.
Visto che la questione che poni e` cosi` specifica della
piattaforma Win32, ti raccomando di porre la domanda
anche su it.comp.programmare.win32.
Comunque, potrebbe essere anche un problema generale,
in qualche misura: il mangling dei nomi differisce sempre
fra diversi compilatori C++ per la stessa piattaforma.
Quindi, per condividere funzioni fra due compilatori C++,
si ricorre al minimo comun denominatore:
    extern "C" int lafunzione(argomenti);
Quella
    extern "C"
blocca il mangling (e gli overload, e il controllo automatico
di sicurezza dei tipi, che dal mangling dipendono) e quindi
e` un primo passo.
Poi c'e` il problema di garantire che un compilatore renda
visibili le funzioni (immagino da una DLL) e l'altro le
importi (idem), e questo e` meno adatto a questo gruppo
visto che, ahime`, il C++ in quanto tale il concetto di
"DLL" non lo ha proprio.  Problemi altrettanto specifici
della piattaforma sono quelli relativi alle "convenzioni
di chiamata" che possono differire fra compilatori; anche
per quelli, meglio parlarne su it.comp.programmare.win32.
Alex

Newsgroup: it.comp.lang.c++
Titolo: lanciare processi

So che è qualcosa che in linea di massima potrebbe dipendere dal sistema 
operativo.. ma non si sa mai :
esiste una funzione della libreria standard c++  che mi permette di 
lanciare eseguibili (processi) come da una linea di comando 
bash/cmd.exe/
command.com/la_scell_di_tu_ma
 ??
-- 
Hai recensioni nel cassetto di musica, cinema, letteratura,fumetti??
Ascolta e pentiti e se hai tempo vergognati
http://tonysuper.altervista.org


Esisteva già dalla libreria standard del C e si chiama
system("C:\\path\\nome_eseguibile.exe"), esiste anche un'API di Windows che
si chiama ShellExecute che ti dà qualche opzione in più ma è legata appunto
a Windows (guarda l'MSDN).

Acaccia wrote:

quindi qualcosa tipo
#include <cstdlib>
int main()
{
	std::system(a.out);
}
g++ test.cpp -o a.out
dovrebbe darmi un programma che si autochiama ricorsivamente all'infinito?


 dovrebbe darmi un programma che si autochiama ricorsivamente all'infinito?
Infatti,
Ciao

 bash/cmd.exe/
command.com/la_scell_di_tu_ma
 ??
#include <cstdlib>
int system(const char * cmd)
Prende come paramentro una stringa contenente il comando da eseguire e
restituisce il corrispondente valore di uscita.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: istanze di funzioni template dichiarate friend in classi template

Nel "C++ primer" Lippman spiega che per dichiarare come friend un'istanza di
una funzione template all'interno di una classe template è necessario
specificare esplicitamente l'argomento template della funzione.
Esempio tratto dal libro (capitolo 16.4, pagina 834 nella versione inglese)
:
template <class Type>
    void foo (QueueItem<Type);
template <class Type>
class QueueItem {
    friend void foo<Type> (QueueItem<Type>);
    // altre 2 dichiarazioni non pertinenti al problema
};
Lui spiega questa dichiarazione così :
"The syntax used with the friend declaration for foo() may seem surprising :
friend void foo<Type> (QueueItem<Type>);
The name of the function is followed by a list of explicit template
arguments : foo<Type>.
This syntax is used to specify that the friend declaration refers to an
instantiation of the
function template foo(). If the list of explicit template arguments were
omitted as follows,
friend void foo (QueueItem<Type>);
then the friend declaration would be interpreted as referring to a
nontemplate function with a
parameter type that is an instance of the class template QueueItem."
Due pagine piu' avanti pero' introduce un
template <class Type> ostream&
    operator<< (ostream &, const Queue<Type> &);
E all'interno della classe Queue lo dichiara friend in questa maniera :
friend ostream& operator<< (ostream &, const Queue<Type> &);
perchè in questo caso non specifica l'argomento template della funzione ?
mi sarei aspettato un
friend ostream & operator<< <Type> (ostream &, const Queue<Type> &);
perchè, seguendo il suo discorso, la dichiarazione dell' operator<< senza
specificare l'argomento template
dovrebbe riferirsi ad un operator<< non template.
che mal di testa :)
Grazie
Franz

 perchè in questo caso non specifica l'argomento template della funzione ?
Penso proprio che si sia sbagliato (o quantomeno deprecato)...
Compilando con gcc la prima sintatti (funzione foo) e' corretta, ma la 
seconda (operatore<<) mi solleva una warning.
In realta' la sintassi corretta dovrebbe essere:
friend ostream& operator<< <Type>(ostream &, const Queue<Type> &);
Comunque puoi omettere "Type" tra le <>. Mi spiego con un esempio:
template < typename T >
void foo( T );
template < typename T >
void operator << ( T, T );
template < typename R >
class Aclass
  {
  friend void foo<>( R );
  friend void operator << <>( R, R );
  };
Ciao!
Newsgroup: it.comp.lang.c++
Titolo: S.O.S. classi derivate

Supponiamo di avere una classe C, che deriva da una classe B.
A sua volta la classe B deriva dalla classe A che ha un costruttore di
questo tipo: A(int P_x) {...}.
Ora mi chiedo: la classe C "e' anche una classe A!", perche' allora posso
fare B() : A(5) {... } (chiamo il costruttore di A prima del costruttore di
B e gli passo 5 come parametro) ma il compilatore non mi permette C() : A(5)
{...}???? :-o
E' un errore di sintassi o concettuale? Perche'?
...sono confuso, potete aiutarmi?!! :-(
Grazie, Marco'76

 E' un errore di sintassi o concettuale? Perche'?
Concettuale.  Perche` una classe X ha pieno controllo su quali
costruttori delle sue basi dirette non virtuali vengono usati, e
una classe Y che eredita da X non ha il diritto di rubarglielo.
Considera:
    class A {
        const int theInt;
    public:
        A(int x=0): theInt(x) {}
        int getInt() const { return theInt; }
    };
    class B: public A {
    public:
        B(): A(7) {
            assert(getInt()==7);
        }
    };
Questo appare corretto, non e` vero?  B inizializza
la sua base A a 7, e quindi l'assert dovrebbe essere
garantito (poiche` A e` base diretta non-virtuale).
Ma se ora fosse ammesso aggiungere:
    class C: public B {
    public:
        C(): A(5) {
            assert(getInt()==5);
        }
    };
quale dei due assert dovrebbe fallire, ed in base a
quale logica?
Il costruttore di B specifica quale costruttore di A
vada usato (se non lo asserisce esplicitamente, dice
di usare il costruttore di default); se anche il
costruttore di C potesse specificare la stessa cosa,
cio` potrebbe essere solo ridondante (se specifica
identico costruttore a quello gia` specificato da B)
o contraddittorio (se specifica un costruttore diverso),
e in quest'ultimo caso entrerebbe in conflitto con la
semantica che B ha pieno diritto di aspettarsi.
Se hai esigenze di, diciamo, "override" della costruzione
di una qualche "base profonda", da parte della classe
piu` derivata, rispetto alle contraddittorie specifiche
di una classe base intermedia, allora usa basi virtuali.
Per le basi virtuali, infatti, e` specificato che quello che
conta e` il costruttore specificato dalla classe piu`
derivata (compreso, se essa non ne specifica uno
esplicitamente, quello di default).  Per basi non-virtuali, e`
invece specificato che quello che conta e` il costruttore
specificato dalla classe discendente diretta, tanto e`
vero che tutte le altre non possono neppure provare
a "ri-specificarlo".
Alex
Newsgroup: it.comp.lang.c++
Titolo: Direct x (forse OT)...

Salve a tutto il NG, dato che è la prima volta che ci vengo saluto tutti....
Vado subito a lanciare un appello : qualcuno mi sa indicare un qualche
tutorial-manuale-FAQ-qualsiasicosa che
introduca all' uso delle directx in ITALIANO ?
tnx in anticipo...
-= NetRi0t =-

In effetti sei OT. E' piu' facile che trovi aiuto su
it.comp.programmare.win32.
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: Cambiare font di un controllo CStatic e/o CEdit

Come e' possibile modificare il font di un controllo CStatic e/o CEdit
su un evento di un altro controllo dello stesso dialog ?
-- 
Grazie a tutti
----------------------------------------------------
 Marco Maroni		mailto:
m.ma...@esa-group.it
 Analista/Programmatore
 ESA Software S.p.A.	
http://www.esa-group.it
 via Draghi, 39		tel. +39 541 368.111
 47900 Rimini (ITALY)	fax  +39 541 368.268
----------------------------------------------------
----------------------------------------------------

su un evento di un altro controllo dello stesso dialog ?
hai provato ad usare SetFont() (equivalente al messaggio WM_SETFONT) ?
Sugli statici non so, ma sugli edit controls dovrebbe funzionare.
Gianpaolo Bottin
- Live Long and Prosper -

 Sugli statici non so, ma sugli edit controls dovrebbe funzionare.
Si ho provato e funziona in parte, ma solo utilizzando la funzione 
SetDlgItemMessage, con questa funzione  ottengo l'effetto ma solo
durante la creazione del dialog non dopo, ciao' quando il dialog e' gia
stato creato.
-- 


stato creato.
boh, mi pare strano, in una dialog non so se ho mai cambiato dei font
al volo, di sicuro l'ho fatto su degli edit control piazzati su delle
normali finestre e funziona, sia con la SendMessage(WM_SETFONT... che
con la SetFont(), anche perche' poi in fin dei conti fanno la stessa
cosa. Sei sicuro di non sbagliare qualcos'altro ? Ad esempio mi pare
molto strano che ti funzioni la SendDlgItemMessage ma non la SetFont.


 molto strano che ti funzioni la SendDlgItemMessage ma non la SetFont.
Il codice e' molto semplice , non credo di aver fatto cavolate, ma
rimane comunque il problema che dopo la creazione del dialog non
funziona, sto' cercando in giro una situazione analoga e funzionante ma
le speranze non sono tante :-(
-- 
grazie lo stesso


Grazie a tutti
Prova ad usare queste due righe di codice, dove IDC_STATIC1 è l'ID del
controllo...
Fnt.CreateFont(20,
8,0,0,700,2,0,0,255,OUT_TT_PRECIS,CLIP_MASK,DEFAULT_QUALITY,DEFAULT_PITCH,"System");
((CStatic*)GetDlgItem(IDC_STATIC1)) -> SetFont(&Fnt);	


Alla faccia della sintesi ! Comunque cosi' ero riuscito gia' a farlo il
problema e' che nel dialog dove mi serve farlo, questo codice, non ha
effetto dopo che il dialog e' stato creato, per esempio se inserisco
questo codice nell'evento di pressione di un pulsante non funziona.
-- 
ciao e grazie

Newsgroup: it.comp.lang.c++
Titolo: STL: un piccolo aiuto

Come si fa per leggere un predeterminato numero di oggetti da un
input_iterator con la funzione 'copy' senza per forza dover
leggere fino ad EOF con:
copy(input_iterator<oggetto>(cin), input_iterator<oggetto>(), destination_iterator);
?
Ringrazio chiunque vorra' intervenire sull'argomento.
Claudio
--
******* Claudio Castelpietra *******
E-mail:  
i09...@spv.ing.uniroma1.it
 
castel...@acm.org
URL: 
http://spv22.ing.uniroma1.it:8080/clix.html

Come si puo' fare per leggere un predeterminato numero di oggetti
da un input_iterator con la funzione 'copy' delle STL,


Newsgroup: it.comp.lang.c++
Titolo: Soluzione esefciaio

Salve, sto imparando il C++ grazie al libro elettronico "Thinking in
C++". Il mio problema è il seguente: non riesco a risolvere
l'esercizio n°2 del capitolo sul C. L'esercizio è:
"Write a program that uses two nested for loops and the
modulus operator (%) to detect and print prime numbers
(integral numbers that are not evenly divisible by any
other numbers except for themselves and 1)."
Qualche dritta da darmi?
Ciauz,
manticore
-- ICQ # 149675811


La prima cosa che mi è venuta in mente. Si potrebbe ottimizzare memorizzando
i numeri primi trovati fino a un certo momento.
for (int i=1; i<42; i++) {
    bool primo = true;
    for (int j=2; j<i; j++) {
        if (i%j == 0) {
            primo = false;
            break;
        }
    }
    if (primo) cout << i << endl;
}


Grazie :))


     for (int j=2; j<(i/2)+1; j++) {
o qualcosa del genere...
insomma il denominatore deve essere al max la meta'! :-)
--
Ciao by Allanon

 insomma il denominatore deve essere al max la meta'! :-)
... o la radice quadrata?

 ha scritto nel messaggio
news:p0586u0kstgh32006...@4ax.com...


 ... o la radice quadrata?
mmm... puo' essere,ma non ho tempo di fare ne' dimostrazioni ne' prove!
:-)
comunque a prima vista dovrebbe tornare!
-- 
Ciao by Allanon

Newsgroup: it.comp.lang.c++
Titolo: Ancora sul C++ Builder

Scusate l'ennesima domanda stupida:
Come posso convertire un'AnsiString in una stringa di char ???
Leggendo help e guide non ho trovato o capito questa cosa...e il libro sul
Builder deve ancora arrivare.
Ringraziando in anticipo...
--
Bye
§uperbep§
mail: 
supe...@softhome.net
UIN 22294495

Se ti serve un (char*) alla stringa contenuta in un AnsiString usa il metodo
AnsiString::c_str()
Stefano

Ciao cerco c++ Builder.
Grazie in anticipo

Ringraziando in anticipo...
AnsiString as;
char* s[255];
s=as.c_str())

Grazie in anticipo
La 1.0 adesso è free. L'ho trovata in edicola (
inter.net
 di agosto).
Se avessi difficoltà, fammi sapere, te la masterizzo.

 s=as.c_str())
    Mi sembra piuttosto pericolosa, come operazione, ammesso che il
compilatore l'accetti :-)
    Ritengo sia meglio:
AnsiString as;
char* s[255];
if(as.Length()<255) strcpy(s,as.c_str()); else ........
    meglio ancora:
AnsiString as;
as="qualsiasi cosa....";
char* s=new char[as.Length()+1];
strcpy(s,as.c_str());
....fai quel che vuoi...
delete s;
    Ciao!!!

    Ciao!!!
Niente da dire! Hai perfettamente ragione. Ma io sono notoriamente un
cialtrone :)
Grazie della dritta
Topoldo
(Grazie a Dio, sono ateo)
Newsgroup: it.comp.lang.c++
Titolo: scambio di dati tra c e assembly

Vorrei sapere, come fare per fare una cosa del tipo:
[...]
char carattere_da_stampare
asm {
            mov ah,2
            mov dl, carattere_da_stampare
            int 21h
         }
questa sintassi non è corretta, come posso fare per fare passare un valore
alla funzione in assembly???
il compilatore da come errore:   "Invalid combination of opcode and
operands"
Please answer me!

Non so se ho ben capito .. ,ma mi sembra che la sintassi sia corretta.
Mi sembra che tu non stai usando una funzione completamtente in
Assembler ,ma stai inserendo codice assembler in una funzione C++.
Ti riporto qui l'esempio che ho provato sul mio compilatore e funziona
perfettamente :
main()
{
char value = 'A' ;
asm {
            mov ah,2
            mov dl, value
            int 21h
         }
return 0 ;
}


~~~~~~~~~~~~~~~~~
MAINARDI Gianfranco
Burago di Molgora (MI)
Italia
Email : 
main...@tin.it
ICQ# number : 11607125
~~~~~~~~~~~~~~~~~
Newsgroup: it.comp.lang.c++
Titolo: Aiuto! Problema da principiante

Questo è  Queue.h
#ifndef _QUEUE_H
#define _QUEUE_H
 int Queue_costr(void);
 int Queue_destr(int q);
 int Queue_insert(char *i, int q);
 int Queue_extract(int q);
 int Queue_count(int p);
#endif
#define N 8;
----------- Queue.cpp ---------------
# include "Queue.h"
typedef struct quelemTAG{
 struct quelemTAG *next;
 struct quelemTAG *prev;
 char *info;
} quelem
typedef struct QueueTAG{
 quelem *head;
 int items;
} Queue;
Queue Q[N];
int Queue_costr(void)
{
 int k;
 for (k=0; k<N; ++k) {
  Q[k].items =0;
  Q[k].head = NULL;
 } return(0)
}
void Queue_destr(int q)
{
 if(q<0 || q>N)
  MessageBox("Errore");
 // deallocare l'intera coda
 Q[q] = NULL;
}
int Queue_insert(char *i, int q)
{
 quelem *temp = malloc(sizeof(quelem));
 if (quelem==NULL) MessageBox("Errore");
 temp ->info=i;
 temp ->prev=NULL;
 temp ->next=NULL;
 // incremento il contatore
 ++Q[q].items;
 if (Q[q].head==NULL)
 {
  Q[q].head=temp;
  temp->prev=Q[q].head;
 } else {
  temp -> next = Q[q].head;
  Q[q].head -> prev = temp;
  temp -> next = Q[q].head;
  Q[q].head = temp;
 } return(0);
char *Queue_extract(int a)
{
 char *r = NULL;
 if (Q[q].head == NULL) {
  MessageBox("Coda vuota");
 } else {
  quelem *t = Q[q].head; *t1;
  while (t->next) {
   t1=t;
   t=t->next;
  }
  r = t->info;
  t1 -> next;
  free(t);
 }
 --Q[q].items;
 return(r);
}
quando lo compilo mi dice
c:\programmi\microsoft visual studio\myprojects\sysinfo\queue.cpp(77) :
fatal error C1010: unexpected end of file while looking for precompiled
header directive
cosa significa?
siate semplici per favore!


[ALT]+[F7]
Scegli tab [C++]
Category -> [Precompiled headers]
Seleziona -> [Not using precompiled headers]
Spero che basti e che sia chiaro 8)
Luc.

 siate semplici per favore!
Manca #include <stdafx.h> ?
p.s. Le domande specifiche sui compilatori microsoft vanno fatte su
it.comp.programmare.win32

 [...]
E questo non è C++.
Dovresti provare a postare su it.comp.lang.c.
Manlio Perillo

 #define N 8;
e' errata :)
togli il ;
le macro sono una sostituzione. ogni volta che viene trovato N viene
sostituito in 8; (che e' sbagliato). La riga Q[N]; quindi diventerebbe
Q[8;]; che e' sbagliata.

int Queue_insert(char *i, int q)
{
 quelem *temp = malloc(sizeof(quelem));
 if (quelem==NULL) MessageBox("Errore");
 temp ->info=i;
 temp ->prev=NULL;
 temp ->next=NULL;
 // incremento il contatore
 ++Q[q].items;
 if (Q[q].head==NULL)
 {
  Q[q].head=temp;
  temp->prev=Q[q].head;
 } else {
  temp -> next = Q[q].head;
  Q[q].head -> prev = temp;
  temp -> next = Q[q].head;
  Q[q].head = temp;
 } return(0);
^^^^^^^^^^^^^^^^^^^^
Non serve una } ??
^^^^^^^^^^^^^^^^^^^^
fatal error C1010: unexpected end of file while looking for precompiled
header directive
Scusa se dico una cazzata, sono un principiante anch'io, ma...
in fondo alla ruotine che ho lasciato nel testo, non ci dovrebbe volere una
"chius-graffa"?
}
Penso sia x quello...se ho detto una cazzata non me ne vogliate...ci ho
provato:-))
Ciao
    Mao
Newsgroup: it.comp.lang.c++
Titolo: Al posto di CStdioFile ?

Io ho sempre usato le ReadString e WriteString
della classe CStdioFile.
Ma se un giorno non potessi usare MFC?
Quelle 2 particolari funzioni membro sono gia` implementate
da altre funzioni C/C++?
Mi scrivereste 3 (di numero) righe di esempio?
Grazie mille.
Michele.

 Mi scrivereste 3 (di numero) righe di esempio?
Per scrivere in un file:
	ofstraem *fp = new ofstream (filename);
	fp->write(string);
	...
	fp->close ();
	delete fp;
Per  leggere da un file:
	ifstream *fp = new ifstream(filename);
	fp->getline (string, nbyte);
	...
	fp->close ();
	delete fp;
Ciao.
Tagliento Francesco.
--
Posted from 
tlvsdy.vim.tlt.alcatel.it
 [151.98.8.244]
via Mailgate.ORG Server - 
http://www.mailgate.org

         fp->getline (string, nbyte);
questo metodo non è applicabile per lo stesso motivo di cui sopra.
Potresti utilizzare
getline(*fp, s);
oppure
*fp >> s;
ma in questo secondo caso ci sarebbero problemi per la gestione degli
spazi.
EMG

 fp->write(s.c_str(), s.size());
Intendevo string come char* e non come classe String.
Certo la size e' stata una dimenticanza perche' queste classi
non le uso quasi mai e non avevo voglia di consultare
il manuale.
FT

Newsgroup: it.comp.lang.c++
Titolo: CControlBar e compagni

Salve a tutti, 
E la prima volta che scrivo su questo newsG...ed è un pò che lavoro con
MS c++ 5.0, vorrei sapere se qualcuno ha avuto ha che fare con
CControlBar, in particolare se avete provato a derivare qualcosa.
E in proposito, se esistono da qualche parte quelle belle toolBar col
le  barrette verticali, che si vedono nei pacchetti MS.
Grazie per l'attenzione
 
	Lure
-- 
********************************************
*       <<Misura Anti Spam>>               *
*    Se l'indirizzo vuoi calcolare,        *
* un punto fra dgsp e tesoro devi piazzare *
********************************************

le  barrette verticali, che si vedono nei pacchetti MS.
che io sappia c'e' solo l'Objective Toolkit della Stingray ma non e'
gratis :(
Gianpaolo Bottin
- Live Long and Prosper -

 
Prima di tutto, grazie per l'interessamento.
Queste sono le ragioni:
L'idea è quella di arrivare a qualcosa che assomigli all'object browser
di visual c++.
Una sorta di panello piuttosto intelligente (Zeppo di controlli) da
poter allineare a 
piacimento. 
Il Problema che mi si è posto, è quello di piazzare una Tree-View da
qualche parte, che mi cambiasse
le viste da qualche altra parte.
La tree dovrebbe essere sempre disponibile all'utente. Se non mi
sbaglio, mi sembra abbastanza 
in linea con la filosofia di MS Vc piazzare un controllo di questo tipo
su una toolbar.
Le ragioni per cui non ho trovato utile derivare da CToolBar e
CStatusBar mi sembrano evidenti.
Per quanto riguarda la CDialogBar, ho avuto delle difficoltà enormi, tra
cui:
1) Non riesco a impostare il Docking...probabilmente non è una
CWnd-Derived quella sorta di pannello
che crea la CDIalogBar.
2) Non riesco quindi a fare la resize dei componenti nella dialog
...insomma alla fine 
mi è venuto (Come sempre) l'atroce dubbio che non ho capito un c...o di
tutto il sistema :-)
	Grazie amcora per l'attenzione
	Lure


tutto il sistema :-)
non so che dirti, io ho usato piu' volte le CDialogBar e non ho
trovato nessuno dei problemi che lamenti, ho anche derivato un paio di
classi che si comportano piu' o meno nel modo che hai descritto. Una
si comporta come la sezione in basso del VC (quella con
"Build","Output",...) solo che invece di avere degli edit control ha
un list box e un paio di combo, ha le stesse funzionalita di resize
verticale ma non e' floating. Questo e' stato un lavoro piuttosto
semplice. Se invece si vuole che la CDialogBar possa anche essere
floating e che quando sia docked possa essere ridimensionata
dall'utente, le cose si complicano parecchio, mi sono cimentato anche
in questo, pero' mi sono limitato a consentire il docking sul lato
sinistro della finestra principale in modo da limitare i problemi di
resize. Alla fine comunque era un po' un casino da gestire e dato che
mi servivano anche altre classi ho acquistato l'Objective Toolkit
della Stingray che ha diverse cosette davvero molto interessanti.

Newsgroup: it.comp.lang.c++
Titolo: Separazione applicazione dal DataBase

Salve,	
	e' possibile separare l'applicazione dal DataBase ODBC dopo
	aver creato inizialmente tale collegamento? Il tutto senza riscrivere
	l'applicazione stessa?
	Grazie
	Enrico

...


Newsgroup: it.comp.lang.c++
Titolo: due seplici domande

Salve gente!
Mi sapreste dire cosa vogliono dire queste due righe di codice?
La prima e' scritta dopo gli #include ed e':
using namespace ::std;
a che serve??
e l'altra e':
a = 1 + (int) ( 100.0 * rand() / (1.0 + RAND_MAX)  )
capisco che assegna ad a un numero casuale, ma che vuol dire (int) e quel
RAND_MAX alla fine???
Grazie
Michelangelo

> a = 1 + (int) ( 100.0 * rand() / (1.0 + RAND_MAX)  )
a = 1 + (converti a numero intero ciò che segue)  (100.0 *
NumeroCasualeDa_0_A_RAND_MAX / (1.0+RAND_MAX))
Ossia assegna ad "a" un numero casuale compreso tra 1 e 100 (o 101...?)

 Ossia assegna ad "a" un numero casuale compreso tra 1 e 100 (o 101...?)
Ma RAND_MAX quanto vale? non l'ho mai definito in precedenza nel
programma...
E riguardo alla prima domanda? non sai aiutarmi?
Grazie
Michelangelo


A importare l'intero namespace std, ovvero, per brevità, per poter scrivere
cout<<"hello world"<<endl;
invece di
std::cout<<"hello world"<<std::endl;
Ciao,
--
zello
Newsgroup: it.comp.lang.c++
Titolo: Puntatore a template.

E' possibile definire un puntatore ad un template? Una cosa del tipo:
template <class T> class P1 {
public:
      void f();
};
class P2 {
public:
       template <class T> P1<T> *pool;
};
int main()
{
    P2 obj;
    obj.pool->f();
    return 0;
}
Grazie,
Fulvio.

 ha scritto nel messaggio
news:3A083324...@libero.it...

Per prima cosa l'esempio č errato.
Considera ad esempio una funzione membro template in P2:
    template<class T> T f() { return T(); }
In main devi scrivere:
  int a = obj.f<int>();
Tornando al tuo esempio avresti dovuto quindi scrivere:
    P1<int>* p = obj.pool<int>;
In generale ciň non č (giustamente) permesso.
Infatti non potresti determinare il sizeof(P2).
Nel tuo caso, tuttavia, usi un puntatore...
(la cosa č interessante, dovresti postarla in
 comp.lang.c++.moderated).
Ho provato con il DJGPP che mi da un errore quando dichiaro
pool in P2, mentre il BCC 5.5 mi da un errore di sintassi
solo in main.
Manlio Perillo

 }

Newsgroup: it.comp.lang.c++
Titolo: PostMessage tra applicazioni

Salve a  tutto il NG,
vorrei poter inviare un messaggio a piu applicazioni in esecuzione
attraverso l`istruzione PostMessage.
Ho definito un messaggio personale (WM_MYMSG come WM_USER+100) e lo invio al
sistema utilizzando il comando PostMessage(HWND_BROADCAST, WM_MYMSG, 0, 0L);
Nelle altre applicazioni ho inserito nel ciclo che gestisce i messaggi
diretti all`applicazione
il ramo case che dovreabbe gestire il messaggio.
            .
            .
            .
 switch (message)
 {
   case WM_MYMSG:
            cc++;//
            break;
  case WM_COMMAND:
   wmId    = LOWORD(wParam);
   wmEvent = HIWORD(wParam);
            .
            .
            .
Purtroppo il messaggio non viene ricevuto dalle altre applicazioni.
Sono sicuro che il messaggio sia stato inviato al Broadcast perche
l`applicazione SPY.EXE (di Microsoft) lo riceve e
lo mostra tra i messaggio WM_USER.
Vi sarei grato per qualsiasi aiuto.

 attraverso l`istruzione PostMessage.
Spostarsi in it.comp.programmare.win32.
Grazie.
EMG

MSDN raccomanda l'uso di RegisterWindowMessage() prima di inviare messaggi ad altre applicazioni. Guarda li'.
Antonio Donatiello

 wrote in message
37D88E5D...@flashnet.it...


it.comp.lang.visualc++ o it.comp.lang.c++.visualc++ ???
E perche' mai? Penso che molti programmi scritti in Visual C++ si
possano portare anche su altri linguaggi (tipo il Pascal) o framework
(OWL ad esempio). Pertanto meglio lasciare it.comp.programmare.win32,
poiche' tratta sempre di API.
Newsgroup: it.comp.lang.c++
Titolo: Ereditarietà

Mi dite come posso ereditare proprietą, medoti o funzioni presenti in un 
altro file .h?
Se nel file lista.h ho delle funzioni pubbliche del tipo:
 class Lista
  {
   ....
   public:
   inserisci();
   cancella();
   ....
  };
e le volessi ereditare nel File pila.h, cosa dovrei scrivere?
ho provato cosģ ma non funziona:
...
#include <lista.h>
class Pila : public Lista
 {
  ....
 }

  }
"non funziona" = qualunque cosa. Nessuno qui ha la palla di vetro, 
quindi magari essere un po' piu' specifico sarebbe meglio.
Comunque il modo per ereditare i due metodi pubblici indicati in Lista, 
e' corretto. Forse il tuo problema e' che non vede lista.h?
Reference che ti posso dare: tutorial online, vecchi post di questo 
newsgroup.
-- 
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

 #include <lista.h>
Riguardo al problema specifico, io fossi in te proverei
anzitutto con:
#include "lista.h"
-- 
SiMoStro
Newsgroup: it.comp.lang.c++
Titolo: Proporzione

C : Kernighan & Ritchie = C++ : X
Quanto vale X?
--
Noisemaker
"Dove il tempo non è che una curva, un filo sciolto del tessuto universale,
un tessitore potrebbe creare un fatale nodo, e gettare nel caos la sorte dei
pianeti"

 Quanto vale X?
X = Stroustrup


Grazie 1000

Newsgroup: it.comp.lang.c++
Titolo: Lista files e directory

Ciao a tutti
sto facendo un programmino in c++ a cui serve avere la lista dei file e 
delle directory.
Sotto Windows so che esiste la libreria <dir.h> in cui ci sono le 
funzioni che mi servono (anche se non me ne ricordo più il nome), ma 
sotto linux, cosa devo fare???
AIUTATEMI!!! :-)
ah, dimenticavo: non voglio lanciare un comando (tipo ls o dir) e 
guardarne l'output... voglio che faccia tutto il mio programma!
Grazie in anticipo
Telegraph Road


I'm not prejudiced, I hate everyone equally.

delle directory.
x-post in due newsgroup e due OT, complimenti :-)
A parte gli scherzi il newsgroup giusto è quello specifico della
piattaforma su cui sviluppi.
-- 
Marco Barisione (ICQ 84277092)

 piattaforma su cui sviluppi.
chiedo scuisa, ma mi serve quell'informazione... ho spedito il msg su 
it.comp.os.linux.development ma non mi rispondeva nessuno, allora ho 
pensato di chiedere qui... (pensavo ci fossero dei metodi standard)
:-)
bye


In C++ non c'è niente per fare quello che vuoi.
In POSIX tuttavia è c'è opendir.
E' presente in tutti i sistemi UNIX (ed anche nel compilatore
della Borland).
Saluti  Manlio Perillo
Newsgroup: it.comp.lang.c++
Titolo: Simple Welding of two small C/C++ Programs, But How??

Hi everyone, I'm a newbie to C/C++ and I need some help with a minor C 
program.  My assignment is to take two programs and mesh them together.  The 
1st program I wrote compiles and works fine.  The 2nd program is to add to 
the 1st program with an if_then_else statement, and it's code is also 
correct as well; I just don't know how to or where to put it into the rest 
of the 1st program to make it work as one.  I've tried to modify it but I 
get compiler errors.  I look forward to any help some kind soul can provide. 
The code with both pieces is below.  Thanks, Basil Fawlty of Fawlty Towers
FYI - I'm using Notepad to edit the text and a free C/C++ compiler yanked of 
the Internet via Download.com called Digital Mars.
#include <stdio.h>
main()
{
                int age;
                float weight;
                char first[15], last[15]; /* 2 char arrays */
                printf("\nWhat is your first name? ");
                scanf(" %s", first);                /* No ampersand on 
character strings */
                printf("What is your last name? ");
                scanf(" %s", last); /* No apersand on character strings */
                printf("How old are you? ");
                scanf(" %d", &age);                /* Ampersand required */
                printf("How do you weight? ");
                scanf(" %f", &weight);                /* Ampersand required 
*/
                printf("\nHere is the information you entered:\n");
                printf("Name: %s %s\n", first, last);
                printf("Weight: %3.0f\n", weight);
                printf("Age: %d", age);
                if (age < 18)
                                { printf("You cannnot vote yet\n");
                                  yrs = 18 - age;
                                  printf("You can vote in d% years.\n", 
yrs);
                                }
                else
                                {
                                  printf("You can vote.\n);
                                }
                return 0;                /* Always best to do this */
}

where u define age, weight.....
"Basil Fawlty" <Basil_Fa...@NOSPAMyahoo.com> 在郵件
news:DOadnfCkF7m...@comcast.com
 中撰寫...


Hi,
You may not be aware that you posted your message on the italian C++
newsgroup (the "it" in the group's name stands for "Italy").
You may have better luck with one of the following:
comp.lang.c++
comp.lang.c++.moderated
Best regards,
Nicola Musatti
Newsgroup: it.comp.lang.c++
Titolo: Aiuto neofita vxd

Salve a tutti sono nuovo di questo gruppo e confido nalla vostra
gentilezza.
Sono uno studente di ingegneria elettronica e per una tesina devo
utilizzare una scheda proprietaria il cui software di cestione e' in
basic. All' uni ho il builder 3 e l'interfaccia con gestione dati l'ho
fatta Ma ecco il problema :::
Devo leggere e scrivere byte singoli su una porta che fa riferimento alla
scheda( port 6oo Credo) dapprima pensavo a codice asm inline m,a non credo
che w95 lo riceva bene.
Come posso fare????
Siccome vorrei fare anche altre schede di controllo esiste un vxd una dll
per accedere alle porte piu' o meno direttamente??
altrimenti come si fa' una vxd?
Grazie
MAtteo Mottica 
Facolta' di ingegneria Elettronica di Trieste
PS potete postarmi anche sulla mia EMAIL e non solo sul news cosi' almeno
sono sicuro che mi arriva qualcosa (senza impegno)
PPS Complimenti a tutti per la competenza
Ciao Ciao 
=================================================================
=      Matteo Mottica 
i310...@ingstud.univ.trieste.it
          =
=          Facolta' di Ingegneria elettronica                   =       
=                Universita' di TRIESTE                         =
=================================================================

 per accedere alle porte piu' o meno direttamente??
Dai un'occhiata qui 
http://www.einev.ch/references/mondada/mmp/
Ciao.
-- 
     (ZZZ)       Filippo Salotti, Bagni di Lucca, Lucca, Italy.
    //   \\  _                 E-mail : 
fil...@humnet.unipi.it
   /Y\    ZD<_o===============================================o
 .oZZZZZo.     | Studente Ingegneria Informatica Automatica  |
<OXXXXXXXO>    | Dip. Sistemi Elettrici Universita' di Pisa. |

Ciao. ...RIZAC
Sto provando da alcuni giorni a collegarmi al link proposto da Filippo ma
non ci riesco....
E' il server ad essere down o il link ha qualche cosa che non va ??
Ciao a tutti
Andrea
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
per rispndere rimuovere NOSPAM dall'indirizzo
to reply please remove NOSPAM from the address
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
** La nuvoletta del Ragioniere e' ben poca cosa se confrontata con
l'anticiclone del Programmatore! **
Newsgroup: it.comp.lang.c++
Titolo: Aiuto con le Eccezioni...

Non riesco a capire come usare le eccezioni...
guardate questo pezzo di codice (il programma è compilato con mingw32
usando devc++)
ifstream input(nomefile);
 try
 {
  if (!input) throw "Impossibile aprire il file!";
  persona giocatore = X;
  int i , k;
  while(1)
  {
   i = 3; k = 3;
   input >> i >> k;
   if (i == 3 || k == 3) break;
   if(giocatore == X)
    array[i][k]='X';
   else
    array[i][k]='O';
   giocatore ? giocatore = X : giocatore = O;
   if (vinto(array, 'X')) return 1;
   if (vinto(array, 'O')) return 2;
  } 
 }
 catch(char  str[])
 {
  cout << str << endl;
  system("pause");
 }
se nomefile è giusto tutto è ok, ma se lancio "Impossibile aprire il
file!" la console dos visualizza una scritta del tipo
"This application has requested the Runtime to terminate it in an unusual
way blablabla"
Dove sbaglio?

  catch(char  str[])
    catch(const char* str)
Il C++ e' molto fiscale per certe cose :)
Cmq non conviene usare degli throw del genere... meglio delle classi 
apposite.
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 apposite.
in effetti questo programma č a scopo didattico, e mentre lo facevo ho
pensato: "Ma perchč sto usando le eccezioni?"
Hai qualche link dove spiega come usarle e farle "fruttare"?

 Hai qualche link dove spiega come usarle e farle "fruttare"?
Ricordo che nella seconda parte di Thinking in C++ di Bruce Eckel 
(scaricabile gratuitamente dal suo sito) si parlava delle eccezioni in 
profondita', nei loro aspetti di sintassi/semantica e pragmatica. Cmq il 
tema delle eccezioni e' e sempre sara' un tema caldo dei linguaggi ad 
oggetti ;-)


Newsgroup: it.comp.lang.c++
Titolo: Mi serve il C++ !!!!!!!!!!!!!!!!

Scusate , qualcuno sa dirmi dove posso trovare il software del C++?
Ve ne sarei molto grato

 Ve ne sarei molto grato
Prova a cercare il djgpp con un motore di ricerca, oppure anche il
borlanda c++. 
--
Blackstorm
*iddieffer giovane guardia*
La torre di Pisa...
E se avesse ragione lei?


Intendi un compilatore? Vai su 
www.delorie.com
 e scarica DJGPP.
Ciao
Domenico Barra

Se quello che ti serve e' un compilatore c++ a linea di comando gratis
puoi provare questo
http://www.borland.com/bcppbuilder/freecompiler/
Cesare


A me piace molto il DevC++, facile da usare ed ha un bell惺de.
Vai a scaricarlo qua:
http://www.bloodshed.net/devcpp.html
ciao
Mauro

Scusate , qualcuno sa dirmi dove posso trovare il software del C++?
g++ ("fratello" di gcc) è un ottimo compilatore
VIde (
www.objectcentral.com
) un ottimo ambiente grafico
Documentazione la trovi un po' ovunque
-- 
-----BEGIN GEEK CODE BLOCK-----
Version 3.1 (with proprietary extensions)
Comments: waiting for version 4.0 ;)
GE/M/S/O d- s:--- !a C++++()>$ UL P+>+++ L+>++ e w++>$ N++ o-- K- W++ O? 
M? V? PS++ PE- Y+>+++ PGP++ t+ 5? X++(+) R tv--  b++>++++ DI++ D++ G-- e 
h! !r xy**
------END GEEK CODE BLOCK------
Newsgroup: it.comp.lang.c++
Titolo: Ringrazio in anticipo.....

quanti potranno dirmi del perchč del messaggio "Processor Fault" quando
mando in esecuzione un programmino C molto semplice che il compilatore
Borland 4.51 mi emette.
Inoltre vi č anche un warning durante la compilazione ma durante
l'esecuzione, ed esattamente "no module definition file specified: using
default"
Tanto per farvi due risate il programma č il seguente
#include <stdio.h>
int i=10;
void main()
   {  printf("i č uguale a %d",i);
    }
Un ingegnee elettronico che si riconverte informatico.
PS
Il programma č banale, ma non gira e non riesco a settare il compliatore del
ca..o.

 quanti potranno dirmi del perchè del messaggio "Processor Fault" quando
A dir la verità non saprei...
Prova comunque a scaricarti una versione recente del compilatore (c'è la 5.5
ad esempio) forse è un'incompatibilità tra il compilatore e le nuove CPU
(anche se di default compilano con codice del 80386).
Al sito della Borland puoi scaricarti il suddetto compilatore.


Il "module definition file" (o file .DEF) è usato nella compilazione dei
programmi e dll per Windows, e contiene di solito l'elenco delle funzioni
esportate (accessibili dall'esterno del programma), oltre ad altre cose.
Il tuo è un semplice programmino per dos, dovresti compilarlo come tale, o
forse l'opzione è 'per consolle' o simili.
Dan.
PS: perchè 'i' lo dichiari fuori da main, se lo usi solo al suo interno?
PS2:main DEVE essere dichiarato così:
    int main() o int main(int argc, char *argv[])

Newsgroup: it.comp.lang.c++
Titolo: leggere codici della macchina in c++ per chiave software

ciao a tutti mi Chiamo Fabio e sto realizzando un piccolo pacchetto mi
servirebbe un aiuto ,A me occorrerebbe un qualcosa per proteggere un
applicativo, una specie di chiave ma a livello software. La classica con il
serial dell'hd mi sembra un po' pochino ,č possibile estrarre ad esempio il
serial number della scheda madre , il serial del bios o qualche altro dato
che caratterizzi il pc e che non venga cambiato da una stupida
formattazione?
grazie in anticipo
Fabio

 wrote

questa non e' che sia proprio una chiave software...
puoi, non sempre, e cmq non in c++ standard.
inoltre facendo cosi' se uno vuole cambiare macchina e' costretto a
rivolgersi a te.... non mi piace molto come idea..
Tommy

 > serial dell'hd mi sembra un po' pochino ,è possibile estrarre ad esempio


 
Per essere vincolato alla macchina deve esserlo necessariamente anche al
sistema operativo. Quindi, chiedi sul ng piů adatto (prova it.comp.os.dos
oppure it.comp.programmare.win32 se usi windows)
Newsgroup: it.comp.lang.c++
Titolo: [1/2 OT] colorazione mappa geografica

Non e' proprio inerente il C++, ma proviamo lo stesso..
Avevo letto un bel po' di tempo fa una soluzione al seguente problema che
pero' in questo momento non riesco a ricordare:
ho una mappa geografica, ogni paese puo' confinare con un numero imprecisato
di altri paesi. Il punto non e' considerato un confine.
Devo colorare la mappa, assegnando un colore ad ogni paese, in modo che due
paesi confinanti non abbiano lo stesso colore.
Il numero di colori a disposizione (chiaramente) non e' infinito. Se si
potesse stabilire il numero massimo di colori utilizzabili alla partenza
sarebbe meglio.
Mi pareva che con 4 colori fosse sempre possibile risolvere il problema, ma
non ricordo come.
Se qualcuno sapesse indirizzarmi...
Ciao e grazie, Morusaka!


Come dice un mio amico: sono un pigrone, quindi ti passo solo un link :P
http://www-history.mcs.st-and.ac.uk/history/HistTopics/The_four_colour_theorem.html
-- 
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/
Linux registered user 299762 @ Linux registered machine 213003

 ha scritto nel messaggio
news:ci3mlh$54r$1...@le1.cs.unibo.it...

Newsgroup: it.comp.lang.c++
Titolo: URGENTE un intero/codice ascii deve diventare carattere

Ciao
Leggo da disco un intero che è un codice ascii (derivato appunto da
__toascii(c) )
Ora però devo ritrasformarlo in carattere, come si fa?
--
Riccardo
scozz...@iol.it
http://www.Geocities.com
\CollegePark\Quad\9526
scozz...@geocities.com


fai un cast.
es: int pippo = 71;    // 'G'
        char carattere;
        carattere = (char) pippo;
Puoi anche leggere direttamente da disco al posto dell'intero un carattere.
Buon lavoro
Bruno La Torre
Newsgroup: it.comp.lang.c++
Titolo: Help me Help me Help me

Salve ragà!!
Ti va di aiutare un principiante che deve presto affrontare un esame di
programmazione in C++?
Se la risposta e si allora vi chiedo che cosa ha che non va il mio
compilatore Borland turbo C++ (credo che sia la versione 5).
L'incoveniente che mi trovo ad affrontare consiste nel fatto che il mio
compilatore sembra che non sia in grado di lavorare con la libreria
iostream.h.
Guardate infatti che succede quando compilo un file qualsiasi che richiede
l'utilizzo di tale libreria:
#include <iostream.h>
int main () {
    << 1 ; return 0 ;
}
 bene se ora compilo il file mi esce fuori una sfilza di
Error C:\TC\INCLUDE\IOSTREAM.H N°......: Declaration syntax error
Error C:\TC\...... etc. etc.
Che cavolo gli piglia???!!!
Se invece uso Dev-C++ l'effetto è questo:
#include <iostream.h>
int main(){
    << 1 ; return o;}
Gli errori che mi segnala sono:
In file included from C:\\Dev-C++\\prova.cpp:1:
C:\\DEV-C++\\Include\\G++\\iostream.h:274: parse error before `['
C:\\DEV-C++\\Include\\G++\\iostream.h:275: stray '\' in program
C:\\DEV-C++\\Include\\G++\\iostream.h:275: stray '\' in program
C:\\DEV-C++\\Include\\G++\\iostream.h:275: stray '\' in program
C:\\DEV-C++\\Include\\G++\\iostream.h:275: stray '\' in program
C:\\DEV-C++\\Include\\G++\\iostream.h:276: stray '\' in program
C:\\DEV-C++\\Include\\G++\\iostream.h:276: stray '\' in program
C:\\DEV-C++\\Include\\G++\\iostream.h:276: stray '\' in program
Sono completamente in alto mare, non ci capisco un acca!!
                                    Massimo

#include <iostream.h>
int main()
{
    cout << 1 << "Ciao" << endl;
    return 0;
}
se non scrivi cout l'operatore << dove li manda i dati??
cout è lo stream di output standard, scrivendo cout << "pippo" stai dicendo
che mandi in output la stringa "pippo"...
Ciao Davide
Newsgroup: it.comp.lang.c++
Titolo: Software house ricerca sviluppatori C/C++.

La Lightning Entertainment Software cerca sviluppatori C/C++. 
Si richiede conoscenza delle DirectX/OpenGL e della programmazione 3D
realtime.
La residenza in Roma o nel Lazio costituisce un titolo preferenziale.
Si prega inviare curriculum a: ric_personale AT 
usa.net
 
			  (sostituire AT con @) 


Newsgroup: it.comp.lang.c++
Titolo: Aiuto sul linker...

Perche non mi riesce a linkare i seguenti file?
#include<stdio.h>
int a;
int b;
int totale;
void Calcola(int a, int b, int totale);
void main()
{
 printf("Primo numero: ");
 scanf("%d", &a);
 printf("Secondo numero: ");
 scanf("%d", &a);
Calcola(a, b, totale);
 printf("IL TOTALE č %d", totale);
 }
 }
void Calcola(int a, int b, int totale)
{
 totale=a+b;
}

Leo ha scritto:

Prova cosě...
#include<stdio.h>
int a;
int b;
int totale;
void Calcola(int a, int b, int *totale);
void main()
{
 printf("Primo numero: ");
 scanf("%d", &a);
 printf("Secondo numero: ");
 scanf("%d", &b);
 Calcola(a, b, &totale);
 printf("IL TOTALE č %d", totale);
 getch();
}
void Calcola(int a, int b, int *totale)
{
  *totale=a+b;
}
salutoni a tutti Dave.

 }
Attenzione: la variabile "totale" non ha effetti all'esterno della funzione Calcola:
infatti "totale" e' ha tutti gli effetti una variabile locale.
Riscrivi con:
int Calcola(int a, int b)
{
  return a+b;
}
E la chiamata sara':
totale = Calcola(a, b);
oppure
void Calcola(int a, int b, int *totale)
{
  *totale = a + b;
}
In questo caso l'invocazione della funzione (procedura) sara':
Calcola(a, b, &totale);
Bye
Newsgroup: it.comp.lang.c++
Titolo: Puntatori e stringhe

ciao a tutti, sono un neofita...
ho kuesto piccolo problemino
dopo aver dichiarato un puntatore a char del tipo:
char *s[]="sfortunato";
lo voglio trasformare in un char *s[]="fortunato".
come posso fare usando solo i puntatori?
avevo pensato qualcosa del genere:
while(*s)
        {
        *s=*(s+1);
        s++;
        }
ma non funziona. voglio farlo senza utilizzare un altra variabile di
appoggio
grazie a tutta la NG!

 ma non funziona. voglio farlo senza utilizzare un altra variabile di
 > appoggio.
1) e' impossibile farlo senza usare una variabile di appoggio
    per il semplice motivo che se usi *s per scandire la stringa
allora perdi il puntatore all'inizio della stringa....
quindi ti devi memorizzare il puntatore iniziale.
poi puoi fare qualcosa del tipo:
char *p = s;
while (*p=*(p+1)) p++;
2) alternativamente l'operazione che trasforma "sfortunato" in
fortunato e'
s++;
cioe' avanzando di un carattere il puntatore *s non vedo piu' la lettera
iniziale, ma non penso sia quello che volevi.
ciao,
g.

 appoggio
's' è un array, non un puntatore. Se vuoi usare i puntatori devi almeno
dichiararne uno. Attenzione, però: non ti azzardare a dichiarare qualcosa
del genere
    char* s = "sfortunato";
e tentare di scriverci dentro. Sebbene assegnabili a puntatori a char
non-const, i letterali stringa NON sono modificabili.
Quindi, quello che puoi fare è questo:
 char s[]="sfortunato";
 char * p = s;
 while( *p )  { *p=*(p+1); p++;     }
Max

 come posso fare usando solo i puntatori?
Eccoti un esempio funzionante:
#include <iostream>
void Trasforma( char *s )
{
    while ( *s )
    {
        *s = *( s + 1 );
        ++s;
    }
}
int main()
{
    char s[] = "sfortunato";
    Trasforma( s );
    std::cout << s << std::endl;
    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: Spostamento elemento tra due std::list

Mi sono trovato con un problema che per il momento non sono riuscito a risolvere in modo elegante.
Ho una lista di persone:
 
std::list<Person> people; 
 
 
da questa lista voglio estrarre tutte le persone che soddisfano una condizione e spostarle in una seconda lista dello stesso tipo:
 
std::list<Person> selectedPeople;
 
La prima soluzione che ho trovato è un ciclo con un if, se la condizione è soddisfatta copia l'elemento nella seconda lista e lo cancella dalla prima. 
 
it = people.begin();
 
while(it != people.end())
{
  if( <condition> )
  { 
    selectedPeople.push_back(*it);
    it = people.erase(it);
    continue;
  }
 
  ++it;
}
 
Questa soluzione funziona, ma passa attraverso la copia dell'elemento, cosa che vorrei evitare: di una persona (elemento) dovrebbe esistere sempre e solo un'istanza univoca non copiabile. Quindi bisognerebbe fare proprio una move da una lista all'altra.
 
Ho provato con splice, ma senza successo, mi pare sia una funzione più orientata a spostare intere sezioni tra liste, piuttosto che un elemento solo. 
 
selectedPeople.splice(selectedPeople.end(), people, it, it);
 
Secondo voi qual è l'approccio migliore?
 
 
 
 
 

Il 16/09/19 08:50, _merlinO_ ha scritto:

for (auto& person : people)
    selectPeople.push_back(std::move(person));
 
ovviamente la classe Person deve avere Person(Person&&) se no copia
 
 
-- 
|___|


Sono definiti tutti gli operatori = e costruttori, sia per copia che per movimento.

>> Questa soluzione funziona, ma passa attraverso la copia dell'elemento, cosa che vorrei evitare: di una persona (elemento) dovrebbe esistere sempre e solo un'istanza univoca non copiabile. Quindi bisognerebbe fare proprio una move da una lista all'altra.
 
una una linked list e sposta solo il link da una lista all' altra, non
hai bisogno di copiare nulla.
AA.
 

 hai bisogno di copiare nulla.
 
a che tipo ti riferisci di presciso? 


Vedi un po' questo, mi sembra abbastanza chiaro:
https://www.geeksforgeeks.org/data-structures/linked-list/
 
 
Comunque se cerchi, trovi molto materiale ;-)
 
aa
 

 Comunque se cerchi, trovi molto materiale ;-)
 
Ti ringrazio, sì so che in rete c'è molto ma il mio era uno studio sulle collezioni della STL library. Tra poco posto un nuovo topic più focalizzato sulle differenze utilizzando puntatori oppure no.