Чтение файла.

Тема в разделе "WASM.WIN32", создана пользователем Lex2029, 8 ноя 2007.

  1. Lex2029

    Lex2029 New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2007
    Сообщения:
    199
    Всем привет. Подскажите как правильно читать файл?
    Т.е. если я читаю его функцией ReadFile, то кол-во прочтенный байт, возвращается равное количесту, которое я указал в байт для прочтения. Т.е. файл например 10 байт, я его читаю в буффер длиной 65к, то мне вернет, как буд-то я 65к байт и проситал.
    И еще например, как прочитать байты ехе файла? Мне 3 символа каких-то возвращает и все... Код взят отсюда: http://www.wasm.ru/article.php?article=1001012
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    GetFileSize()
     
  3. Lex2029

    Lex2029 New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2007
    Сообщения:
    199
    Сейчас попробую. Но дело еще в том, что если я читаю например текстовый файл, то все нормально, а если ехе, то он выдает 3 символа и все... В примере который я вам дал, можете сами увидеть :dntknw:
     
  4. Lex2029

    Lex2029 New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2007
    Сообщения:
    199
    Понял в чем дело. Ехе файл считывается, но у него в 4-ый байт=0, поэтому едит бокс, считает что это конеч строки, и не печатает дальше. Как вывести весь файл?
     
  5. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Рич едит в режиме "филтер стринг=олл файл" прекрасно открывает ексе, бмп и все остальные. Из него можно вытянуть информацию о длине и тд - см. 33,34,35 уроки Икзелиона.
    Нужно быть осторожным - обязательно сделать кнопку " закрыть файл с отменой всех изменений ". Похоже, если просто закрыть - происходит какое-то переформатирование, файл накрывается.
    Решил посмотреть что там в ядре делается, забыл нажать отмену, а у меня автосохранение сделано в редакторе. После этого в биосы не мог зайти.
    Может я нашёл ещё одну уязвимость? Встраиваем такую штуку в обычную прогу, которые юзеры скачивают тысячами каждый день, и 6 июня, например она включается и за пару секун делает неработоспособным всё до чего успеет дотянуться, пока система не рухнет...Я не виноват...
    Получается, что прога, в которой есть рич-едит представляет потенциальную опасность и антивирус должен её немедленно уничтожать ?
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Veter
    У меня, например, "автосохранение _не_ сделано в редакторе".
     
  7. 7inner

    7inner New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2007
    Сообщения:
    20
    Жесть:) Ядро уже и за биос отвечает.

    Это вы WFP обойшли richedit-ом? Круто! Дайте и мне этой травы!
     
  8. explosion

    explosion Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    34
    ну еще бы. RichEdit все таки для текста создан. Магическая комбинация 10,13 "\r\n" дает о себе знать...

    я думаю, RichEdit'ом можно разрушить цивилизацию, если знать как. Просто раньше его применяли для других, более мирных целей


    А если серьезно, Lex2029 попробуй в MSDN'е набрать ReadFile, и все станет ясно. Про возвращаемое значение сказано примерно следующее: в случае успеха функция возвращает ненулевое значение, а в случае провала - ноль. Никто не обещал что она будет возвращать какое то количество байт.
    Действительное число прочитанных байт возвращается в переменную, на которую указывает lpNumberOfBytesRead, передающийся четвертым параметром.
     
  9. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Если честно, не знаю что такое WFP. Ничем серьёзным не занимаюсь - машина одна, так по мелочи - год назад задался целью написать для себя кое какие програмки, пробовал дельфи, с++. Как-то случайно на фриваре встретилась ссылка на мбилдер - и когда через 20 минут я сделал свое первое окно - 3 кило всего, то понял, что ассемблер - очень похожь на сермяжную сущность програмирования и вот...
    Щас ещё раз проверил - Рич едит с олл файл ( так держу на всякий случай , веб доки удобно редактировать , текстовые файлы и многое ещё - и не надо переключать фильтр... ленивый я, что делать) открывает в систем 32 всё подряд , едиственное - нт длл - долго - около 10 секунд ... У меня оключено слежение системы за пользователем, может из-за этого она молчит? В принципе, слежение можно всегда оключить программно, наверное....Как раз на прошлый новый год - решил сдуру посмотреть и забыл нажать отмену ....при закрытии файла у меня автоматом сохраняются все изменения. Система умерла, но странно, что часа два потом тыкался - не пускает в биосы и всё тут, не знаю что наделал...
     
  10. Lex2029

    Lex2029 New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2007
    Сообщения:
    199
    Это я понимал :) Проблемма была в другом. Но уже она мне очень глупой кажется :)
    А реально то что я спрашивал, как в edit вывести текст. Но мне уже посоветовали richedit юзать.
    Спасибо
     
  11. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Veter, мне кажецо что не изза ричедита, а изза того, что ты "часа два потом тыкался" тебя не пустило в магические биосы, видимо трава не сразу отпустила :)
     
  12. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    :dntknw:( я в завязке, не надо...
     
  13. 7inner

    7inner New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2007
    Сообщения:
    20
    WFP - это Windows File Protection, которая создана специально для того, чтобы предохранять изменение системных файлов richedit-ом:)
     
  14. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Понял, в твикере вроде есть опция - отключить эту штуковину, не помню чтобы ставил галочку ...