функция WriteFile

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

  1. trust

    trust New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    49
    Добрый день всем. Есть функция WriteFile она записывает строку в файл. Как мне перейти на новую строку? Потому что эта функция записывает только в строчку. Подскажите пожалуйста. Заранее спасибо.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    она записывает не строку, а блок данных. блоку данных все равно - одна строка он, или две или десять или вообще бинарный.

    строки разделяются в Windows текстовых файлах байтами 0D 0A ( "\r\n" на си )

    То есть чтобы записать две строки надо записать в файл "One line\r\nAnother line", четыре - "1\r\n2\r\n3\r\n4"
     
  3. trust

    trust New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    49
    ну допустип у меня такой код
    Код (Text):
    1. .data
    2. sect db "======================================================================",0
    3. .code
    4.     invoke WriteFile,hFile,addr sect,70,addr Buffer,NULL
    5.     invoke WriteFile,hFile,string,sizes,addr Buffer,NULL
    Мне нужно чтобы в файл записалось: первая в файле строка sect, вторая string?
     
  4. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    запиши между строками строчку "\r\n"
     
  5. trust

    trust New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    49
    Код (Text):
    1. .data
    2. sect db "======================================================================",0
    3. rn db "0D0A",0
    4. .code
    5.     invoke WriteFile,hFile,addr sect,70,addr Buffer,NULL
    6.         invoke WriteFile,hFile,addr rn,4,addr Buffer,NULL
    7.     invoke WriteFile,hFile,string,sizes,addr Buffer,NULL
    Так?
     
  6. trust

    trust New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    49
    или так
    Код (Text):
    1. .data
    2. sect db "======================================================================",0D0Ah,0
    3. .code
    4.     invoke WriteFile,hFile,addr sect,70,addr Buffer,NULL
    5.     invoke WriteFile,hFile,string,sizes,addr Buffer,NULL
    У меня так и так не выходит.
    Все время записывает: ======================= .... вторя строка .............
    никак на другую строку не переводит.
     
  7. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Вот так
    Код (Text):
    1. .data
    2. sect db "======================================================================",0D0Ah,0
    3. .code
    4.     invoke WriteFile,hFile,addr sect,72,addr Buffer,NULL
    5.     invoke WriteFile,hFile,string,sizes,addr Buffer,NULL
    или так
    Код (Text):
    1. .data
    2. sect db "======================================================================",0
    3. rn db "0D0A",0
    4. .code
    5.     invoke WriteFile,hFile,addr sect,70,addr Buffer,NULL
    6.         invoke WriteFile,hFile,addr rn,2,addr Buffer,NULL
    7.     invoke WriteFile,hFile,string,sizes,addr Buffer,NULL
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ОМГ)

    надо так: CRLF db 0dh, 0ah, 0
     
  9. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    напиши или 0A0Dh, или 0D, 0Ah - порядок имеет значение.

    П.С.: второй вариант правильнее (когда нулевой символ идет после абзаца)
    П.П.С.: 70 байт точно хватает, чтобы записать все символы равно и символы абзаца?
     
  10. trust

    trust New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    49
    спсаибо заработало;)