Доброго времени суток! Пишу на асме, програмку которая берет из некого чата построчно сообщения и обрабатывает их, использую последовательно при помощи SendMessage следуцщие сообщения: EM_GETLINECOUNT, EM_LINEINDEX,EM_LINELEGTH,EM_GETLINE, но возникает проблема с тем, что когда edit достигает некого порога строчек, он меняет вимдимо внутренее число строк и после этого EM_GETLINECOUNT уже выдает реузльтат совсем не последовательный. Т.е обработка выгладит примерно так: invoke SendMessage, hwch,EM_GETLINECOUNT,NULL,NULL cmp eax,linenew je rrr mov linenew,eax stroki: ...... здесь идет последовательная орбработка каждой новой строчки mov eax,linenew cmp eax,line1 je rrr inc line1 jmp stroki rrr: ret Как с этим можно бороться?
в эдите вроде бы есть предел, говорили, что 60 килобайт. может сдвигать указатель и открывать файл частями? как конкретно сделать не знаю, когда возникла проблема с эдитом, вместо того, чтобы почесать репу и разобраться, поменял его на Ричэдит
это и есть ричэдит что дальше? Он меняет неожиданно все индексы когда доходит до определенного кол-ва строк, как это изменение нормально воспринять без потери строк?
Код (Text): PAGE proc LOCAL rect:RECT invoke SetWindowText,hwndedit,NULL invoke SendMessage,hwndRichEdit,EM_GETRECT,0,addr rect invoke SendMessage,hwndRichEdit,EM_CHARFROMPOS,0,addr rect.right invoke SendMessage,hwndRichEdit,EM_LINEFROMCHAR,eax,0 add eax,30 shr eax,4 shr eax,1 .if eax ==0 .else invoke wsprintf,addr TextEdit,addr lpFmt,eax invoke SetWindowText,hwndedit,addr TextEdit invoke InvalidateRect,hwndedit,0,TRUE .endif xor eax,eax ret PAGE endp Вот такая ф. определяет ( приблизительно) номер страници в текстовом редакторе, и показывает в маленьком едите. Код некорректный, но работает и ф. с ним. Сравни со своим, посмотри I. - уроки 33,34,35 Может крыша едет у едита из-за того, что есть пустые строки и строки from char...
немного не подходит так так мне неизвестно солько новых строк было вброшено в эдит за 1 сек (может одна может ни одной а может штук 5)