Originariamente inviato da NeoArgo
!!!! ADDIRITTURA SE SCRIVO IL MIO NOME "NICOLA" MI CONTA 4 CARATTERI!!!

UFFA!!
Ciao,
se ti puo' consolare ho provato io stesso questo codice e non funziona:
al posto dell'istruzione char *str=Memo1->Lines->Text.c_str(); //che estrapola tutto il contenuto del memo
ho inserito questa:
char *str=Memo1->Lines->Strings[0].c_str(); //in questo caso la prima riga
//e poi le istruzioni
int cont=0;
while (*str++) { //calcola che così fatto il ciclo salta il primo carattere, poiche' vi e' l'incremento
if (*str!='0') //dovresti togliere il carattere '\' dal tuo controllo
cont++;
}
ShowMessage("caratteri: "+IntToStr(cont));


ebbene, mi stampa il valore intero 1. In pratica il ciclo effettua una sola iterazione.
Allora: ho tutti e due abbiamo dimenticato l'artimetica dei puntatori, o non saprei proprio cosa e' successo.

ho provato anche a scrivere il ciclo così:
int i=0;
while (*(str+i)) {
.......
i++
}


ma non va lo stesso.

In alternativa ti posto questo codice, ti garantisco al 1000% che funziona, e un pezzo di codice che avevo scritto

per il Builder molto tempo fa:
unsigned int contline, cont, i, j;
cont=0;
AnsiString linea;
contline=reText->Lines->Count;
for (i=0; i<contline; i++)
{
//memorizzo una riga alla volta e la scorro
linea=reText->Lines->Strings[i];
for (j=1; j<linea.Length(); j++)
{
if (linea[j]>='a' && linea[j]<='z' || linea[j]>='A' && linea[j]<='Z' || linea[j]>='0' && linea[j]<='9')
cont++;
}
}
MessageDlg("Il documento contiene:\n"+IntToStr(reText->GetTextLen())+" caratteri,\ndi cui "+cont+" di solo

testo in \n"+contline+" righe totali",mtInformation, TMsgDlgButtons()<<mbOK, 0);


Come puoi notare, conto i caratteri, i caratteri di testo semplice e le righe totali.
Con le opportune modifiche puoi estrarre quello che ti serve.

Fammi sapere.
Se c'è qualcuno che vuole illuminarci sul ciclo while, ci farà ad entrambi un grande favore!