Перенесение содержимого одного файла в другой, с определённым порядком

Тема в разделе "WASM.BEGINNERS", создана пользователем GetF, 12 мар 2006.

  1. GetF

    GetF New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2006
    Сообщения:
    6
    Адрес:
    Russia
    Есть файл(блокнот, с убранным расширением):

    1

    2

    3

    4

    5

    6

    7

    8

    9

    0

    Его содержимое нужно перенести в другой файл в таком порядке:

    1234

    5678

    90

    Helh me
     
  2. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    тоесть все сводится к тому штобы правильно 0d0a(возврат каретки и новая строва) расставить?

    я правильно понял?
     
  3. GetF

    GetF New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2006
    Сообщения:
    6
    Адрес:
    Russia
    Правильно. Но только в WINDOWS!!!!
     
  4. OlegA11

    OlegA11 New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2006
    Сообщения:
    102
    Ну, открываешь файл CreateFile затем заказываешь памяти кусок GlobalAlloc. И деле всё туда читаешь ReadFile. Но побайтно. Что делать дальше, я думаю понятно, или ты хочешь, чтобы тут всё за тебя написали?

    Прочитай туториалы iczelion'a они есть на этом сайте.
     
  5. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Предлагаю вначале убрать из файла все символы 0a0d, а затем

    выделять кусок памяти на 6 байт (реально получится 8), считывать 4 байта из файла, добавлять 0a0d, ну и наконец записывать в файл. Это первое, что мне пришло в голову, так, что возможно это не идеальное решение.
     
  6. GetF

    GetF New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2006
    Сообщения:
    6
    Адрес:
    Russia
    Вот только вопрос: куда добавлять эти 0D0Ah ?

    в функцию SetFilePointer их не вставишь, толку нет(WINDOWS как-никак), а начнёшь делать прерывания ничего кроме ошибки не получишь... Ешё раз: мне это просто нужно сделать под WINDOWS XP PROFESSIONAL(просто переставить каретку на начало строки).

    Огромное спасибо за советы, но они мне пока не помогли...
     
  7. OlegA11

    OlegA11 New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2006
    Сообщения:
    102
    .data

    buf DWORD 0

    CRLF db 0Dh,0Ah

    ...

    Дальше читаешь пошагово(по 4 байта) из файла дынные в buf, а затем перемешьаешь(можно конечно rep movsb, но тебе пойдёт и RtlMoveMemory) ПО 6 БАИТ с началом в buf(т.е зашватывается как и сам buf, так и CRLF) в общий буффер.



    ЗЫ: Решение которое предложил я не является правильным, оно просто основанно на твоих домыслениях. В принципе можно всё сделать более рацианально. Думай дальше сам!
     
  8. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    куда добавлять эти 0D0Ah ?

    в функцию SetFilePointer их не вставишь, толку нет



    штота я недогнал зачем их туда пихать? конешно невставиш.

    тебеж сказали, читаеш файл в память (можеш юзать ReadFile можеш в память промэпить(в данном случае луче ненадо)), в памяти проделываеш все необходимые манипуляции и сохраняеш файл. вернее даже так, читаеш (опятже побайтово) из файла, если это символы 0d or 0a то записываеш их только в том случае если они идут после четвёрки или 8ки. так утя в памяти будит уже готовый вариант, остаёца его запихать обратно в файл.