Текущий архив: 2007.07.01;
Скачать: CL | DM;
Вниз
Значение FilePointer при ошибке чтения файла. Найти похожие ветки
← →
Riply © (2007-06-06 01:32) [0]Здравствуйте !
Допустим, мы читаем файл блоками cbBufSize = 4096.
var
OldPointer, NewPointer: Int64;
.......
SetFilePointerEx(FHandle, 0, @OldPointer, FILE_BEGIN);
ReadFile(FHandle, Buffer, cbBufSize, ...);
SetFilePointerEx(FHandle, 0, @NewPointer, FILE_CURRENT);
И, например, из-за повреждения поверхности на расстоянии ErrMark = 2048,
от начала файла, получаем ошибку чтения.
Чему будет равняться NewPointer ?
Нулю( как бы и не пытались читать ) или ErrMark ?
cbBufSize, как мне кажется, врядли будет :) Может непредсказуемо ?
P.S. Не сумела придумать как это можно эмулировать.
Ну не царапать же, например, CD-диск :)
← →
Германн © (2007-06-06 01:52) [1]
> P.S. Не сумела придумать как это можно эмулировать.
> Ну не царапать же, например, CD-диск :)
>
Ну "царапни" 3.5" дискету. Это дешевле :)
Не, ну я и вправду восхищён таким стремлением "методом научного тыка" обшарить всё, что только можно!
:-)
Вас ждёт большое будущее!
Если дождётся всё-таки. Имхо.
:-)
← →
Riply © (2007-06-06 01:57) [2]> [1] Германн © (06.06.07 01:52)
:) Привет ! Опять полуночничаешь ? :)
>Ну "царапни" 3.5" дискету. Это дешевле :)
Не скажи. Их у меня мало осталось, а выпуск прекращен.
Я, даже, не знаю: есть ли они еще в магазинах.
← →
Германн © (2007-06-06 02:39) [3]
> Riply © (06.06.07 01:57) [2]
>
> > [1] Германн © (06.06.07 01:52)
> :) Привет ! Опять полуночничаешь ? :)
>
Это моё естественное состояние! Поэтому и свой ник я выбрал таким.
← →
Германн © (2007-06-06 02:45) [4]
> >Ну "царапни" 3.5" дискету. Это дешевле :)
> Не скажи. Их у меня мало осталось, а выпуск прекращен.
> Я, даже, не знаю: есть ли они еще в магазинах.
>
Есть. В Москве точно есть. В СПБ - наверняка тоже есть.
Но впрочем можно "царапнуть" и CD!
Ну что такое 15 руб? Полтора батона белого хлеба!
Или полторы булки дороже?
:-)
← →
Плохиш © (2007-06-06 03:04) [5]
> Riply © (06.06.07 01:32)
Ничего не понял, какое отношение OldPointer, NewPointer имеют к позиции в файле при чтении? Если их подставляют в SetFilePointerEx в качестве старшего слова для перемещения позиции.
← →
Riply © (2007-06-06 05:52) [6]> [5] Плохиш © (06.06.07 03:04)
>Ничего не понял, какое отношение OldPointer, NewPointer имеют к позиции в файле при чтении? Если их >подставляют в SetFilePointerEx в качестве старшего слова для перемещения позиции.
Это я тебя понять не могу. Что значит "их подставляют в SetFilePointerEx в качестве старшего слова" ?
Была принесена великая жертва ради науки !(перевод: нашла старую испорченную дискету :).
Опыты показали, что FilePointer остается неизменным
(тем, который был до неудачной попытки чтения).
← →
Плохиш © (2007-06-06 11:06) [7]
> Riply © (06.06.07 05:52) [6]
> > [5] Плохиш © (06.06.07 03:04)
> >Ничего не понял, какое отношение OldPointer, NewPointer
> имеют к позиции в файле при чтении? Если их >подставляют
> в SetFilePointerEx в качестве старшего слова для перемещения
> позиции.
> Это я тебя понять не могу. Что значит "их подставляют в
> SetFilePointerEx в качестве старшего слова" ?
Да я справку по указанным фукциям прочитал...
← →
Desdechado © (2007-06-06 11:08) [8]> Опыты показали, что FilePointer остается неизменным
И это естественно, ведь операция завершилась с ошибкой, следовательно, исходные остались теми же.
Ты же не низкоуровневыми функциями пользуешься. Это если б ты обращалась напрямую к контроллеру или к евойному драйверу, там другие варианты возможны были бы.
← →
Плохиш © (2007-06-06 11:13) [9]
> Опыты показали, что FilePointer остается неизменным
Кстати, я рад, что опыты подтвердили то, что стоит в первом абзаце описания функции :-))The ReadFile function reads data from a file, starting at the position indicated by the file pointer. After the read operation has been completed, the file pointer is adjusted by the number of bytes actually read, unless the file handle is created with the overlapped attribute. If the file handle is created for overlapped input and output (I/O), the application must adjust the position of the file pointer after the read operation.
Страницы: 1 вся ветка
Текущий архив: 2007.07.01;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.005 c