Newsgroup: it.comp.programmare.win32
Titolo: concatenare stringhe...

BOOL AddText(HWND hwndDlg, LPCTSTR text)
{
 HWND hEdit1 = GetDlgItem( hwndDlg, IDC_EDIT1 );
 GetWindowText(hEdit1, log, 16386*4);
 SetWindowText( hEdit1, text + "\n" + log);
// ....
                                     ^^^^^^^^^^^^
come faccio a concatenare variabili/stringhe per fare un'unica LPCTSTR?
scusate ma sono proprio all'inizio
ogni volta che aggiungo una linea devo compilare per correggere quei 4 o 5
errori che faccio... :)
--
ciao
xAERO

  SetWindowText( hEdit1, text + "\n" + log);
--
ciao
xAERO

 un'unica LPCTSTR?
Se non usi MFC lo devi fare a mano (ossia ti serve un buffer temporaneo
in cui concatenare a parte le stringhe con lstrcpy e lstrcat). Se usi
MFC, e` sufficiente che una delle prime due strighe che concateni sia
una CString:
SetWindowText( hEdit1, text + CString("\n") + log);
In questo modo l'operatore + della classe CString fa il lavoro per te.
---
Bye! Lorenzo Lutti
http://www.geocities.com/cirovampiro/

 in cui concatenare a parte le stringhe con lstrcpy e lstrcat).
mi puoi spiegare come?
non ho capito bene...
--
ciao
xAERO

 wrote in message
8u483o$ogb1$1...@ID-51253.news.dfncis.de...

Te lo spiego io brevemente.
Se devi concatenare due stringhe ad esempio stringa1 con stringa2, devi
accertarti che la stringa che riceverà il risultato (stringa1) abbia spazio
sufficiente, altrimenti vai a scrivere su aree di memoria non controllate,
con risultati spesso imprevedibili.
ES:
char stringa1[100]="prima stringa, ";
char stringa2[]="seconda stringa";
lstrcat(stringa1, stringa2);
In stringa1 ottieni "prima stringa,seconda stringa"
Sottolineo ancora una volta che stringa1 deve avere sufficiente spazio per
ospitare la stringa concatenata, se stringa1 l'avessi dichiara come segue:
char stringa1[]="prima stringa, ";
il compilatore avrebbe riservato a stringa1 lo spazio strettamente
necessario per ospitare la stringa (quindi 15 byte più uno di terminatore).
In questo caso non ci sarebbe abbastanza spazio per ospitare la
concatenazione.
Infine prendiamo parte del tuo codice non funzionante:
SetWindowText(hEdit1, lstrcat(text,lstrcat("\n", log)));
la prima concatenazione che il compilatore trova è:
lstrcat("\n", log);
che non funziona perché la prima stringa "\n" non ha la dimensione
necessaria per poter ospitare il risultato della concatenazione.
Una possibilità ptrebbe essere la seguente:
char text[100];
SetWindowText(hEdit1, lstrcat(lstrcat(text,"\n"),log));
Ovviamente si suppone che text[100] sia sufficiente per contenere la
concatenazione
Porlock.

 non ho capito bene...
Una cosa cosi`:
char *tmpbuffer = (char*)malloc(lstrlen(text)+lstrlen(log)+3);
lstrcpy( tmpbuffer, text);
lstrcat( tmpbuffer, "\n");
lstrcat( tmpbuffer, log);
SetWindowText( hEdit1, tmpbuffer);
free( tmpbuffer);
Prima allochi un buffer temporaneo che possa contenere le tre stringhe
(piu` lo 0 alla fine), poi ci copi la prima stringa e concateni le altre
due. Dopo che l'hai usato, devi liberare la memoria allocata per il
buffer.


come faccio a concatenare variabili/stringhe per fare un'unica LPCTSTR?
char temp_buf[1024] ;
lstrcpy( temp_buf, text ) ;
lstrcat( temp_buf, "\n" ) ;
lstrcat( temp_buf, log ) ;
SetWindowText( hEdit1, temp_buf ) ;
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------
Dovro' prendere lezioni di Internet, 
se non sai di Internet non ti considera nessuno 
(Carmen di Pietro) 
-----------------------------------------------