помогите разобраться с edit (em_getline)

Тема в разделе "WASM.BEGINNERS", создана пользователем deadly83, 13 дек 2007.

  1. deadly83

    deadly83 New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2007
    Сообщения:
    71
    Доброго времени суток!
    Пишу на асме, програмку которая берет из некого чата построчно сообщения и обрабатывает их, использую последовательно при помощи 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

    Как с этим можно бороться?
     
  2. loxodromic

    loxodromic New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2007
    Сообщения:
    65
    в эдите вроде бы есть предел, говорили, что 60 килобайт.
    может сдвигать указатель и открывать файл частями?
    как конкретно сделать не знаю, когда возникла проблема с эдитом, вместо того, чтобы почесать репу и разобраться, поменял его на Ричэдит
     
  3. deadly83

    deadly83 New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2007
    Сообщения:
    71
    это и есть ричэдит что дальше? Он меняет неожиданно все индексы когда доходит до определенного кол-ва строк, как это изменение нормально воспринять без потери строк?
     
  4. loxodromic

    loxodromic New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2007
    Сообщения:
    65
    Код (Text):
    1. PAGE    proc
    2.  LOCAL rect:RECT  
    3. invoke SetWindowText,hwndedit,NULL
    4. invoke SendMessage,hwndRichEdit,EM_GETRECT,0,addr rect
    5. invoke SendMessage,hwndRichEdit,EM_CHARFROMPOS,0,addr rect.right
    6. invoke SendMessage,hwndRichEdit,EM_LINEFROMCHAR,eax,0
    7.    add eax,30
    8.    shr eax,4
    9.    shr eax,1
    10.     .if eax ==0  
    11.     .else
    12. invoke wsprintf,addr TextEdit,addr lpFmt,eax    
    13.  invoke SetWindowText,hwndedit,addr TextEdit
    14. invoke InvalidateRect,hwndedit,0,TRUE
    15. .endif
    16. xor eax,eax
    17. ret
    18. PAGE    endp
    Вот такая ф. определяет ( приблизительно) номер страници в текстовом редакторе, и показывает в маленьком едите.
    Код некорректный, но работает и ф. с ним.

    Сравни со своим, посмотри I. - уроки 33,34,35
    Может крыша едет у едита из-за того, что есть пустые строки и строки from char...
     
  5. deadly83

    deadly83 New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2007
    Сообщения:
    71
    немного не подходит так так мне неизвестно солько новых строк было вброшено в эдит за 1 сек (может одна может ни одной а может штук 5)