Mam richEdita,w którym są pewnie cyfry 0 i 1 i każda linijka ma taką samą ilość znaków 0,1. Np.
00000\r\n
01011\r\n
10010\r\n
11100
Chciałbym mieć kod taki co jeśli wykryje, że jakiś wiersz==jakiemuś innemu wierszowi to by usunąć automatycznie wiersz ten co jest najniżej. Mój niedziałający kod:
LPSTR linijka,linijka2;
int *tab;
tab=new int[liczba_wierszy];
for(i=0;i<liczba_wierszy;i++)
tab[i]=0;
linijka=(LPSTR)GlobalAlloc(GPTR,liczba_kolumn);
linijka2=(LPSTR)GlobalAlloc(GPTR,liczba_kolumn);
for(i=0;i<liczba_wierszy-1;i++) //biorę wiersz
{
linijka[0]=liczba_kolumn; //wpisuję jak dokumentacja msdn mówi ile pobrać bajtów
SendMessage(hWejscie,EM_GETLINE,i+1,(LPARAM)linijka); //pobieram wiersz i
for(j=i+1;j<liczba_wierszy;j++) //biorę wiersze poniżej
{
linijka2[0]=liczba_kolumn; //wpisuję ile pobrać bajtów
SendMessage(hWejscie,EM_GETLINE,j+1,(LPARAM)linijka2); //pobieram każdy z nich
if(linijka==linijka2) //jeśli wiersze równe to zapamiętaj wiersz j, aby potem go usunąć
tab[j]=1;
}
}
//usuwanie wierszy
i=0;
for(j=0;j<liczba_wierszy;j++)
if(tab[i]==1)
{
nr_znaku=SendMessage(hWejscie,EM_LINEINDEX,j,0); //pobierz nr 1-szego znaku wiersza j
SendMessage(hWejscie,EM_SETSEL,nr_znaku,nr_znaku+liczba_kolumn); //zaznacz wiersz
SendMessage(hWejscie,EM_REPLACESEL,0,(LPARAM)""); //usuń go
wiersze--; //zmniejsz aktualną ilość wierszy
j--; //wiersz j stał się po usunięciu wierszem j+1 a go też trzeba sprawdzić
i++;
}
GlobalFree(linijka);
GlobalFree(linijka2);
delete []tab;