atodw и сложение чисел.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by DooD, 26 May 2011.

  1. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    короче такое дело:
    имеется 2 edit-a проверять введенное ли число или символ пока не надо,но допустим вводится число,заносить его в регистр я не догадываюсь как кроме:
    1)invoke GetWindowText,hwndEdit,addr buffer,512
    -получим строку.дальше т.к. пишу на масме что б не парится юзаю atodw для конвертации строки в число
    2)invoke atodw,addr buffer
    на выходе в eax-число
    3)тоже самое проделую со вторым эдитом.
    но как сложить числа в двух регистрах? думал через xhcg после вызова atodw помещать число в ebx например и далее add eax,ebx но выдается какято херь.короч жду помощи (масм)
     
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    GetDlgItemInt
    как сложить выдели 2 переменных под числа и складывай
     
    _________________________
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Открою тебе великий секрет - для Edit'а можно поставить опцию, чтобы в нем можно было вносить только цифры. И тогда тебе не надо будет проверять что там введено
     
  4. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    какой флаг не подскажешь?
     
  5. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    RTFM
     
    _________________________
  6. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    че то не то получается.
    делаю так

    invoke GetDlgItemInt,hwndEdit,EditID,0,1
    mov op1,eax ; op1 dd 0
    invoke GetDlgItemInt,hwndEdit2,Edit2ID,0,1 ; -> в eax число
    add eax,op1 ; плюсую его к 1-му


    invoke wsprintf,addr string,addr format,eax
    invoke MessageBox,0,addr string,0,MB_OK

    но постоянно выдается 0.
     
  7. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Гугли ES_NUMBER. Этот стиль должен быть выставлен у поля.
    Почему сначала делается GetDlgItemInt для хэндла hwndEdit, а потом для hwndEdit2 какого-то? Первый параметр этой функции - хэндл окна родительского диалога должен быть.
     
  8. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    флаг нагуглил уже,там вроде верно, это хэндлы 1-го и 2-го эдита.
     
  9. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Нет, не верно.
    http://msdn.microsoft.com/en-us/library/ms645485%28v=vs.85%29.aspx
     
  10. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    тьфу ты точно,спс.наночь уже туплю:)спс всем отписавшимся.тему можно закрывать
     
    #10 DooD, 26 May 2011
    Last edited: 26 May 2011