![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| davandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 25.10.2005 Где: Украина, Харьков Репутация: нет Всего: нет |
Всем привет.
Пишу утилиту для работы с файлами. Возникла такая задачка: необходимо проверять целостность файла, т.е. проверять не поврежден ли он или не испорчен. Пока что я просто пытаюсь скопировать его в другой файл, но думаю, что это не совсем правильно. Хочу узнать вашего мнения. |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Можно попробовать поэкспериментровать с контрольной суммой.
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
copy /b filename.ext nul
Nul - это такой девайс, который молча съедает всё, что в него суют. А если при чтении возникает ошибка, то она возникает.. А вообще, проще читать файл блоками в память. Только такая проверка - скорее проверка физического носителя.
Ну, типа такого. --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
для этого нужно знать формат файла, конкретного каждого файла, иначе как проверить, что у него ДОЛЖНО БЫТЬ "внутри"?
А CRC проверяется после копирования, для сравнения 2х копий файла: исходного и скопированного. тоже самое и с Nul - можно выявить преблемы на диске, а не проблемы с внутренностями файла, т.к. скопировается всё, что угодно. К примеру, возьми копию любоого exe-файла, открой его на редактирование (F4) Far`ом, измени там его-нибудь и попробуй запустить. Винда выдаст ошибку, файл неправильный, так сказать, а теперь попробуй этот "неправильный" файл скопировать на дискету, в Nul, всё скопируется, аж бегом |
|||
|
||||
| ConstantinXXX |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 27.5.2006 Где: U.S.A. :-) Репутация: нет Всего: 0 |
Самое главное определить типизированный файл или нетипизированный
--------------------
Как вы относитесь к девушкам, которые курят сигареты?Как не ослепнуть за компьютером© ORENCODE.info |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
Купился.. А вообще, есть очень надёжный способ проверки файла - бинарная сверка файла с его эталонной копией. --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Задача неподьемная.
Почаму?
В общем нужно распознавать формат (и скорее всего распознавать по содержанию, а не по расширению) и проверят в соответствии с форматом, поврежден файл или нет. А это одному не под силу. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
Тогда нужно определиться ещё и с семантикой слова "повреждён".. Можно же предположить, что файл - это нечто объективное, что существует в своем текущем виде независимо от того, как его могли бы [или собираются] интерпретировать. Такой файл есть нормальный, и целостный. Для того, чтобы его повредить, нужно его каким-то образом изменить. Допустим, имеется копия эталонного файла, неповрежденность которой и проверяем. Тогда только сравнением. Если же такой копии нет, и нет данных об изменениях файла, то просто невозможно судить о его корректности. Пример: файл корректен, если он содержит строку в ASCII коде, с терминатором строки CRLF, но содержит неточные координаты южного полюса? И вообще, как можно анализировать данные, формат которых не известен? Этакого TCustomFile? Заметим, в сабже ни слова не сказано, о том, какого рода повреждения необходимо детектить, какого рода данные в файлах, какие есть критерии оценки целостности, .. ничего нет. Что бы здесь терь в каментах не предлагалось, всё будет чистейшей воды демагогией [словоблудием], и субъективными измышлениями... Ну, в лучшем случае - это просто мозговой штурм! --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| davandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 25.10.2005 Где: Украина, Харьков Репутация: нет Всего: нет |
Подразумевалась всего лишь проверка на возможность чтения файла с физического носителя. Поянятно, что реализовать проверку формата файла - это задача, которую "на арапа" не возьмешь. ))
Большое всем спасибо за участие. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |