Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.034 c
15-1180532361
VirEx
2007-05-30 17:39
2007.07.01
что это за ошибка такая, и как от нее избавиться


15-1180692251
Думкин
2007-06-01 14:04
2007.07.01
Просили док-во т.Ферма? Получите, распишитесь.


2-1181222942
webpauk
2007-06-07 17:29
2007.07.01
Array of TmyRec


2-1181303716
koha
2007-06-08 15:55
2007.07.01
на странный глюк нарвался


1-1177845915
Cj
2007-04-29 15:25
2007.07.01
BeginUpdate для всей StringGrid