wsprintf подскажите

Тема в разделе "WASM.BEGINNERS", создана пользователем La_plaza, 9 ноя 2008.

  1. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    в общем не пойму как сделать чтобы после wsprintf строка имела вид "stroka\n" т.е перевод каретки осуществялся

    вот так неполучается:
    Код (Text):
    1. __createfile:
    2.             mov ebp,esp
    3.             push NULL
    4.             push FILE_ATTRIBUTE_NORMAL
    5.             push CREATE_ALWAYS
    6.             push NULL
    7.             push FILE_SHARE_READ+FILE_SHARE_WRITE
    8.             push GENERIC_READ+GENERIC_WRITE
    9.             push files
    10.             call [CreateFile]
    11.             push eax                                ;[ebp-0x4] hFile
    12. __writefile:
    13.             [b]invoke wsprintf,message,f,eax[/b]
    14.             invoke WriteFile,dword [ebp-0x4],message,0xc,temp,NULL
    15. exit:
    16.             push NULL
    17.             call [ExitProcess]
    18.  
    19. section '.data' data readable writable
    20. files db 'c:\myfile.txt',0
    21. buffer rb 0x16
    22. message db 'test_my_file',0
    23. temp dd ?
    24. [b]f db "%s\n"[/b]
    25. section '.idata' import readable writable
    26. library kernel32,'KERNEL32.DLL',\
    27.         user32,'USER32.DLL'
    28. ;include '%fasminc%\API\kernel32.inc'
    29. ;include '%fasminc%\API\user32.inc'
    подскажите как сделать ?
     
  2. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    1) очень полезный совет: сделай буфер message больше
    2) если форматная строка у тебя "%s\n", то предполагается, что %s - строка, а у тебя это либо хэндл открытого CreateFile'ом файла, либо INVALID_HANDLE_VALUE.
     
  3. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    покажите как правильно
     
  4. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    La_plaza
    я не понял, что ты хотел получить в приведенном тобой коде, поэтому, естественно, не могу написать правильный вариант.
    Если волнует вопрос использования wsprintf, то вот:
    Код (Text):
    1. invoke wsprintf,buf,format,str
    2.  
    3. buf rb 1024
    4. format db "%s",13,10,0
    5. str db "hello world",0
     
  5. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    откуда вы берете эти 13,10 ? =)
    хочу знать
     
  6. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    La_plaza
    13 - возврат каретки
    10 - перевод строки
    Таков Windows формат перевода строки.
     
  7. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    del
     
  8. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    я понял, а где про это почитать ? всмысле откуда ты это все вычитал\а ?
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8
     
  10. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    La_plaza
    Советую учебник по асму от Зубкова или от Юрова
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    meduza
    Пирогова.
     
  12. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    ну в Юрове я невидел чтобы про это хоть слово говорилось
     
  13. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    hello worldhello world получается если делать как вы предлагаете
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    La_plaza
    Ну правильно 10, 13 надо в строку, а не в строку форматирования.
     
  15. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    нда.... даже хз что ответить на вопрос "откуда вы берете эти 13,10"
    Подозреваю были времена, когда программисты знали все аски-коды от управляющих до псевдографики. И был дос... и интерфейсы были другие... А теперь "откуда вы берете эти 13,10".

    Из стандартной ASCII-таблицы они берутся.
     
  16. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    а открыть любой текстовый файл в хекс-просмотре не судьба наверное?
    там видно что перевод строки осуществляется двумя символами 0x0D и 0x0A
    соответственно для перевода строки нужно ставить "\n\r"
     
  17. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    так что, сама ф-ция wsprintf только умеет строку представлять в разных видах т.е числовом, символьном и тд, а переводы каретки и тд она неумеет делать чтоли ? хм
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    La_plaza
    А нафига это ей?
     
  19. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    вовсе не обязательно
    просто TextOut не поддерживает многострочность, при сохранении в файл или MessageBox всё нормально.
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Y_Mur
    Сори, тупанул.

    Афтар юзай DrawText.