Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Процедура Read читает только 8 байт...   Найти похожие ветки 

 
ПЛОВ ©   (2004-11-16 11:10) [0]

Больше не хочет, а нужно аж 16 :)))


type
fName: array[0..15] of Char;
...

var
 FFILE: file of BYTE;
...

Seek(FFILE, (T*24)+16);
for C:=0 to 15 do Read(FFILE, BYTE(fName[C]));
// именно тут при попытке прочитать 16 байт вылетает ошибка "Read beyong end of file".

Помогите, пожалуйста, разобраться что это означает и как с этим бороться?


 
clickmaker ©   (2004-11-16 11:13) [1]


> что это означает и как с этим бороться?

означает, что вылез за конец файла. Либо неправильно спозиционировался, либо файл меньше, чем нужно


 
ПЛОВ ©   (2004-11-16 11:18) [2]


> clickmaker ©

В том то и дело, что файл большой...


 
Amoeba ©   (2004-11-16 11:20) [3]

A чему равна переменная T? Может из-за нее позиционирование неправильное. Что отладчик показывает?


 
Reindeer Moss Eater ©   (2004-11-16 11:21) [4]

// именно тут при попытке прочитать 16 байт вылетает ошибка "Read beyong end of file".

От тебя кто-то прячет в шкаф твою текущую позицию в файле перед чтением? Или размер файла?


 
ПЛОВ ©   (2004-11-16 11:26) [5]


> A чему равна переменная T?

предположим, нулю...

написал в цикле так:

if not Eof(FFILE) then Read(FFILE, BYTE(FName[C]));

...работает :) Ниче не понимаю :)))


 
ПЛОВ ©   (2004-11-16 11:28) [6]

Ладно, я человек не гордый, работает - и хорошо. Всем спасибо!


 
Reindeer Moss Eater ©   (2004-11-16 11:29) [7]

Надо верить сообщениям об ошибках.
Тогда все будет понятно.


 
Cosinus ©   (2004-11-16 11:38) [8]

Хм... А последние 8 байт я так понимаю не нужны?


 
Zekson   (2004-11-16 12:01) [9]

Отладчик - решение всех подобного рода проблем.


 
Ditrix ©   (2004-11-16 13:28) [10]

а если так ?
var
FFILE: file of WORD;


 
ПЛОВ ©   (2004-11-16 13:50) [11]


> а если так ?
> var
> FFILE: file of WORD;

А не подходит! Нужно читать по байтам только...

Кстати, другая проблема возникла - теперь число "читабельных" байт равно 255 :))) Eof(FFILE) уже не помогает...


 
Kergma   (2004-11-16 14:03) [12]

А чего б тебе не читать весь массив целиком BlockRead"ом?
там кстати и посмотришь скоко прочиталось.
а то неблагодарное это занятие из большого файла по байтику читать....


 
ПЛОВ ©   (2004-11-16 14:24) [13]


> Kergma  

Так вот я и не понимаю, чего эти байтики не читаються, файл то большой! И вообще, кажеться мне, что дело не в Read"e, а в чем-то другом... Уже локализовал проблемный участок кода, буду искать баг!


 
Ega23 ©   (2004-11-16 14:38) [14]

Seek(FFILE, (T*24)+15); ?


 
ПЛОВ ©   (2004-11-16 14:59) [15]


> Seek(FFILE, (T*24)+15); ?

Не, "+16" с 0 ведь счет... Это пройденный этап :)))

Извиняюсь за вроде бы оффтопик, но... High ведь возвращает максимальный индекс массива, так? Есть массив из 4-х байт - возвр. значение - 3, есть массив из некоторого количества индексов сложного типа:

 PIBDF_TYPE_ITEM = record
   IBDResName: array[0..15] of Char;
   IBDResPos: DWORD;
   IBDResSize: DWORD;
 end;

- возвращает значение "-1" :) не понимаю, почему??? Может тут у меня баг? ...
задолбался, пойду в КС пошпилю :)))))


 
Kergma   (2004-11-16 15:25) [16]

For this type High returns

Array type The highest value within the range of the index type of the array. For empty arrays, High returns –1.

(С) Delphi Help

a:array of PIBDF_TYPE_ITEM;
...
edit1.Text := inttostr(high(a));

в edit1.text упадет -1, потому как елементов массива нет, то есть он пустой.
ЗЫЖ хотя понять твою последнюю ..... фразу было трудно.


 
ПЛОВ ©   (2004-11-16 16:02) [17]


> в edit1.text упадет -1, потому как елементов массива нет,
> то есть он пустой.

Он не пустой, у меня там 2 элемента...


> ЗЫЖ хотя понять твою последнюю ..... фразу было трудно.


> задолбался, пойду в КС пошпилю :)))))

Эту чтоли? :))))



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.048 c
14-1100196893
OneFragLeft
2004-11-11 21:14
2004.11.28
IDHTTP и POST. Глюки.


3-1099281637
sanek
2004-11-01 07:00
2004.11.28
как создать вычисляемое поле через DBGRId


3-1098891213
AlexGof
2004-10-27 19:33
2004.11.28
Как сохранить файл (например word или exel) в БД ?


6-1095423432
Uran
2004-09-17 16:17
2004.11.28
Как зарегестрировать ActiveX Server на клиенте


1-1100085884
chuk
2004-11-10 14:24
2004.11.28
запись в файл, ошибка