Oppure

Loading
16/03/11 22:01
Lafa_96
sto creando un programma che mi ha chiesto di sviluppare una professoressa di latino che corregge le versioni di latino sul pc, in pratica funziona in questo modo, si inserisce il testo nella richtextbox1 e per correggerlo si evidenzia la parte da correggere e quando si preme sul button1 la parte evidenziata diventa rossa sottolineata e la variabile x (che all'inizio vale 1) si inserisce tra parentesi prima dell'errore.
il mio problema è il seguente, quando si preme il button1 per correggere il 1°errore ovviamente x sarà uguale a 1 e quando lo si preme per correggere il 2° x sarà uguale a x+1 ecc..., io vorrei che se per caso si trovasse un errore tra 2 errori già corretti, la variabile x prenda valore di conseguenza, mi spiego meglio:
prendiamo in considerazione la frase:
Marco fa la spesa;
mettiamo che "Marco" e "spesa" siano 2 errori
(1)Marco fa la (2)spesa
adesso supponiamo che durante la rilettura del testo io mi accorga che anche "fa" è un errore, nel mio programma logicamente verrebbe così
(1)Marco (3)fa la (2)spesa
mentre io vorrei che venisse così
(1)Marco (2)fa la (3)spesa

come faccio??
aaa
16/03/11 22:14
HeDo

considera inizialmente di separare la vista del testo, dalla vista del testo corretto. in questo modo puoi tener conto delle posizioni degli inserimenti dei numeri in maniera assoluta. Dopodichè ad ogni inserimento ricalcoli tutti i numeri seguendo l'ordine dei caratteri.
aaa
17/03/11 11:01
Il Totem
Quello che dice HeDo è che tu, attualmente, modifichi in modo permanente il testo da correggere, cosicché sia impossibile sapere come era il testo prima di ogni correzione. Se separassi la logica di correzione dal testo in sé potresti andare di volta in volta a ricalcolare le posizioni di ogni errore numerandole opportunamente.
In parole povere, ti tieni il testo non corretto T0. Ogni volta che viene selezionato un errore lo memorizzi a parte, ad esempio memorizzando l'indice della parola nel testo e la sua lunghezza. Dopodiché usi una funzione per evidenziare gli errori, che passa da T0 a T1, quindi visualizzi T1. Se viene aggiunto un ulteriore errore, riutilizzi quella funzione, che ti restituirà un risultato diverso, ma coerente.
aaa