Newsgroup: it.comp.programmare.win32
Titolo: CString

1- come posso ottenere un puntatore alla stringa di un oggetto CString?
GetBuffer (mi sembra si chiami cosi') mi restituisce un LPSTR ma a me
serve un LPCTSTR, cosi' ho provato ad usare l' "operator LPCTSTR", ma no
so bene come si usa, da qual che dice msdn dovrei fare LPCTSTR stringa =
(LPCTSTR)OggettoStringaDiClasseCString; ma questo non e' un cast?
2- esistono 2 CString::Insert(), entrambe prendono due parametri, in
entrambe il primo e' l'indice della posizione in cui voglio inserire la
stringa, il secondo invece cambia,
in una e' un TCHAR_ (mi sembra) e mi consente di inserire un singolo
carattere,
nell'altra, quella che devo usare io, e' un LPCTSTR
io passo 0 come indice (primo param), e un LPCTSTR come secondo param.
il compilatore dice "cannot convert parameter 2 from LPCTSTR to TCHAR_"
(o qualcosa di simile), praticamente vuole costringermi ad usare la funz
col TCHAR_, che faccio?
...
sfogo:
ma la M$ quando ha fatto la CString non poteva pensare che la
CString::Insert() (che serve ad inserire sottostringhe) potesse essere
usata passando un altro oggetto CString come sottostringa da inserire,
ovvero mi fanno le MFC, mi dicono usale che sono belle le abbiamo fatte
noi, mi fanno la classe CString, e non mi permettono di inserire in una
stringa CString una sottostringa CString, ma devo prima convertire la
sottostringa in LPCTSTR??????????? mah, misteri di M$

 sottostringa in LPCTSTR??????????? mah, misteri di M$
Come avevo pensato: č stata una tua svista :-) Infatti prova questo pezzo di
codice:
CString frase = _T("Questa prova.");
CString inserimento = _T("č una ");
frase.Insert(7, inserimento);
TRACE(_T("La frase č %s\n"), frase); // Avvia il programma con F5
P.S. alla Microsoft non sono poi cosě cretini :-)
--
  Jerle Shannara
Per rispondere in email togli JERLEANTISPAM
homepage 
http://utenti.tripod.it/jerleshannara

 P.S. alla Microsoft non sono poi cosě cretini :-)
a parte che no so bene cosa sia TRACE...
io avevo fatto
CString str1;
CString str2;
//varie operazioni con le stringhe
str1.Insert(0, (LPCTSTR)str2);
questo perche' VC++6 mi mostra i prototipi delle funz mentre scrivo e mi
mostrava quei due di cui ho parlato quello che accetta il TCHAR e quello
che accetta l'LPCTSTR, forse non dovevo fidarmi di VC++6?
in questo modo intendevo chiamare la Insert con l'LPCTSTR e attraverso
quel cast passare appunto un LPCTSTR, al che il compilatore diceva
impossibile convertire in TCHAR...
forse la Insert non prende un LPCTSTR ma un CString, ora vado a vedere
su msdn...
ciao e grazie ^_^
ps. mi ero fidato di VC++6 in quanto esso stesso di casa M$!
pps. come posso fare in una mia classe un sistema di cast tipo quello di
cui si parlava?

 su msdn...
no, aveva ragione vc++6, o TCHAR o LPCTSTR, neanche l'ombra di una
CString::Insert(int, CString) !!!!

 cui si parlava?
Aggiungi un
operator Tipo() {
  ...
}
dove naturalmente Tipo si riferisce al cast che vuoi fornire.


 ha scritto nel messaggio
news:8KRa8.58435$om6.1...@news1.tin.it...

Infatti il cast da CString a LPCTSTR è implicito, come ti ho già spiegato.


 operatore LPCTSTR che *implicitamente* viene richiamato. Ecco perché
non va
aaaaaaahhhhhhhhhhhhhh!!!!!!!!!!!!!!!!!!
adesso penso di aver capito davvero ^^; pero' il fatto e' che msdn
diceva:
esempio:
CString str;
(LPCTSTR)str;
per spiegare l'uso dell'operator LPCTSTR...
va beh, ora provero' a vedere se cosi' funziona, grazie ancora!