Главная страница
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.039 c
3-1099378064
Frozzen
2004-11-02 09:47
2004.11.28
Проблемы с Ibase


1-1100264276
klerk
2004-11-12 15:57
2004.11.28
Про удаление файлов


14-1099781091
BURN
2004-11-07 01:44
2004.11.28
Kylix 3


14-1100244846
ArMellon
2004-11-12 10:34
2004.11.28
Какой модем лучше?


3-1099042569
Olga123
2004-10-29 13:36
2004.11.28
Каскадное обновление в DB2 UDB 5.2