Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
ВнизПроцедура 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c