![]() |
|
Модераторы: bsa |
![]()
|
|
| Cybernetick |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.6.2011 Репутация: нет Всего: нет |
Доброго времени суток! Получил лабу- вывести список всех удалённых файлов из заданного каталога и подкаталогов. Посколько WinAPI ещё не изучал, да и предмет требует реализации под DOS, бьюсь со следующим кодом-
по теории я понял, что нужно ловить из первого байта поля ffb.ff_name код E5h, который и означает, что файл удалён. только проблема в том, что с написанным условием в тело IF'а программа не заходит. вот и прошу совета опытных в этой среде людей- что именно я делаю не так?) Зараннее благодарен! |
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 2 Всего: 12 |
имхо это преступление заставлять учить студентов программированию под DOS, где предполагается применять потом эти знания?
Это сообщение отредактировал(а) triclosan - 20.6.2011, 22:32 |
|||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
так лови из первого:
-------------------- undefined |
|||
|
||||
| Cybernetick |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.6.2011 Репутация: нет Всего: нет |
попробовал- по прежнему это условие игнорируется... проверял кстати следующим образом- выводил список всех *.txt-шников в каталоге, потом удалял один из них и ставил это условие... результата никакого. |
||||
|
|||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
у printf есть фича %x, сделай так
-------------------- undefined |
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 2 Всего: 12 |
||||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
-------------------- undefined |
|||
|
||||
| Cybernetick |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.6.2011 Репутация: нет Всего: нет |
я так понял что новый printf должен будет выдавать первый байт для всех txt-шников? я вставил его и получил только одно значение, значит что у меня проверлся только один файл?
|
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 2 Всего: 12 |
fish9370, поскольку язык Си растет их Юникс-мира, в текстовом режиме принято конец строки обозначать юниксоидным символов \n - при этом в *nix системах он не меняется, а в этих ваших ДОСах превращается в \r\n
Это сообщение отредактировал(а) triclosan - 20.6.2011, 23:03 |
|||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
IF SUCKS печатает?
Добавлено через 1 минуту и 30 секунд никогда такого не слышал, где это написанно? -------------------- undefined |
|||
|
||||
| Cybernetick |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.6.2011 Репутация: нет Всего: нет |
предыдущая инфа была не совсем верной- вообщем прога адекватно ловит все файлы и выводит их коды, только после удаление ничего не происходит и просто вместо 6 кодов (по количеству файлов) выводит 5 и 5 раз сообщение IF SUCKS. попробовал уже даже в findfirst завести весь список известных аттрибутов- не помогло... может есть альтернатива этому методу поиска удалённого файла?
|
|||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
да, есть.. только он тебе не понравится.. нужно считывать первый сектор диска (MBR), определять где находится системный раздел, находить таблицу распрределения файлов (FAT, кстати мы имеем дело с FAT32?), пробегаться по ее каталогу и делать тоже самое.. если у тебя есть ДОС, то найди проду diskedit.. с помощью нее можно шастать по диску, и дебажить.. все это у меня лишь воспаминания, десятилетней давности.. -------------------- undefined |
|||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
ха-ха-ха..
порылся в исходниках findfirst и вот что я нашел:
- что не удивительно, это же пользовательская функция.. другими словами он не выдает удаленные файлы.. нужно искать другой метод.. либо тупо переписать функции поиска.. время у нас есть? Это сообщение отредактировал(а) fish9370 - 21.6.2011, 00:18 -------------------- undefined |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Никакие стандартные функции поиска (включая и findfirst) не будут возвращать записи для удаленных файлов (и это сделано уже на уровне ОС, а не в run-time библиотеке)
Так что только напрямую потрошить диск (в DOS), или открывать директорию на чтение (CreateFile с FLAG_BACKUP_SEMANTIC - в Win) и читать. И то и другое требует недюжинных познаний во внутренних структурах файловой системы |
|||
|
||||
| Cybernetick |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.6.2011 Репутация: нет Всего: нет |
думаю топик можно закрывать,всем спасибо за помощь) буду насиловать FAT)
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |