Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.031 c
1-1100334175
AlexBragutsa
2004-11-13 11:22
2004.11.28
Для начинающего Делфиста


8-1093770518
DimOn2
2004-08-29 13:08
2004.11.28
Avi


11-1082976925
bigcrush
2004-04-26 14:55
2004.11.28
Как создать дочерний контрол, зная только HWND радителя


1-1100173549
kirov_igor
2004-11-11 14:45
2004.11.28
printer


9-1090874908
RyDmi
2004-07-27 00:48
2004.11.28
Для чего нужен параметр doWaitVBlank в DXDRAW?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский