News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

strings and procedures

Started by RuiLoureiro, March 23, 2005, 03:16:20 PM

Previous topic - Next topic

RuiLoureiro

Hi, all
        Hi Paul,
   I intend to be not hostile against anyone. I dont like a lot of things, too. There are helps i dont like ( it doesnt help ), there are documentation i dont like ( it doesnt help ) but i am not hostile in any way. Do you know someone that needs some kind of help and he pretends to be hostile ?
   I think i should not to waste time talking about help and track record and threats and what i consider to be bad and good answers. I think my topic doesnt deserves your interpretation and i dont want troubles with anyone. Perhaps, sometimes we fail, too. I want to implement an editor  to do something like that. It is legit. What kind of help you can give me if you dont know nothing about some matter ? As you can see, i posted a topic in 12 April 10:03:29 am (in Windows API32 ... ) and noone give me any help about reading InputRecords. Did you see any reply (help) ?
   I am trying to write a short procedure to Edit a string (print and read keyboard).
Can you help me ? Here is the main procedure (by now). The problem is that i am getting 2 keys (AABBMM...aa11) whats wrong ?
(Offtopic what means cheekygeen)
; ---------------------------------------------------------------------------------------------------------------------------------------
; Action:  Reads one key from InputBuffer
; Input:
;        Nothing       
; Output:
;       clc:
;           The key was pressed:
;           AL  - ascii code
;           AH  - char code
;           DX  - control
;           CX  - repetitions
;       stc:
;           ERROR
; Uses:
;       _hInputBuffer  = input buffer
;
CharRead            proc    nLin:DWORD, nCol:DWORD
                         push    ebx
                         push    esi
                         ;
                         ; Potition cursor
                         ; ------------------
                         invoke  CursorSetPos, nLin, nCol
                         ;
_iCharRead:         mov    esi, offset _InputBuffer
                         mov    dword ptr [esi - 8], 0                    ; Recorsds' number
                         ;
                         invoke  ReadConsoleInput, _hInputBuffer,         
                                                               ADDR _InputBuffer,       
                                                               10,                             ; = it reads  1 !!!
                                                               ADDR _InputBuffer - 8   ; number read
                          cmp      eax, 0
                          jne      _CharRead1         
                          stc
              ;
                            pop     esi
                            pop     ebx
                            ret
                           ; -----------------------------
                           ; How many read records
                           ; -----------------------------
_CharRead1:         mov    esi, offset _InputBuffer
                          movzx  edx,  word ptr [esi + 0]          ; EventType
                          mov    ecx, dword ptr [esi - 8]            ; Records' number read
                          ;
                          mov    ebx, dword ptr [esi + 2]           ; pressed\released
                          movzx  eax, word ptr  [esi + 6]           ; repeat count
                          cmp    ecx, 0
                          je     _iCharRead                           ; Read 0                       
                          ; ------------------------------------------------------
                               cmp    edx, KEY_EVENT
                               jne    _iCharRead                           ; not key event
                       ;
                                cmp    ebx, FALSE
                                jne    short  _CharRead2
                       ;
                       ; Print Msg Released
                       ; ------------------
                       invoke  PASStrPrint, ADDR _MsgReleased, 1, 40
                       ;
                       mov     _LastRecord, 0
                       invoke    FlushConsoleInputBuffer, _hInputBuffer
                       ;
                       jmp     _iCharRead                              ; released
                       ;
                       ; Print Msg Pressed
                       ; ----------------------
_CharRead2:               invoke  PASStrPrint, ADDR _MsgPressed, 1, 40
                                ;
                                mov     ecx, eax
                                mov     esi, offset _InputBuffer
                                movzx   edx, word ptr  [esi + 14]       ; Ascii Code
                                mov     ax,  word ptr  [esi + 12]         ; Char Code      PgUp,PgDn...
                                shl        ax, 8                                   ; AH= Char code
                                mov     al, dl                                  ; AL= Ascii code
                                movzx   edx,  word ptr [esi + 16]       ; ControlKeyState
                       ;invoke  RecordGet
                       ;
                                 cmp      ecx, 1
                                 jbe      _eCharRead
                       ;
                       ; Read all pressed keys
                       ; --------------------------
                      ; invoke  CharRepRead
                       ;
_eCharRead:                clc
                                 pop     esi
                                 pop     ebx
                                 ret
CharRead                    endp

My best regards to you