![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BlockRead и AV
Vovan #2 © (2007-01-17 16:29:00)Что я делаю не так? Размер файла 100 Кб.
var f: file;
i: Integer;
begin
OpenDialog1.Execute;
AssignFile(f, OpenDialog1.Filename);
Reset(f);
BlockRead(f, i, SizeOf(Integer));
CloseFile(f);
---> AV
palva (2007-01-17 16:42:00) [1]Параметр у Reset это длина блока в байтах. По умолчанию длина блока какая-то довольно большая. При чтении мы должны указать длину в БЛОКАХ. Поэтому если длины файла хватило, то может прочитаться, если длину блока забыли указать. Единственно, что прочтется гораздо больше чем запрошено, и могут затереться какие-то другие области.
Германн (2007-01-17 16:38:00) [2]
> А почему когда я до этого делал
>
> BlockRead(f, SomeHeader, SizeOf(TSomeHeader));
>
> то читало нормально?
>
Это тебе только так казалось.
Плохиш (2007-01-17 16:37:00) [3]
> А почему когда я до этого делал
>
> BlockRead(f, SomeHeader, SizeOf(TSomeHeader));
>
> то читало нормально?
Повезло...
Vovan #2 (2007-01-17 16:36:00) [4]М-м, похоже. Спасибо!
А почему когда я до этого делал
BlockRead(f, SomeHeader, SizeOf(TSomeHeader));
то читало нормально?
Германн (2007-01-17 16:31:00) [5]Reset(f,1);