Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2008, 16:51   #1
Umnik1
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 23
По умолчанию ошибка чтения файла

Надо прочитать bin файл с действительными числами. Пишу:

procedure TForm1.Button1Click(Sender: TObject);
var
c: real;

begin

Assignfile(f,'file.bin');
reset(f);
while not eof(f) do
begin
blockread(f,c,sizeof(c));
end;
CloseFile(f);

end;

выдается: project1.exe raised exception class EinOutError with message 'read beyond end of file'. Process stopped.

Что не так?
Umnik1 вне форума Ответить с цитированием
Старый 18.11.2008, 17:07   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Что не так?
А где у вас объявляется f ?
mihali4 вне форума Ответить с цитированием
Старый 18.11.2008, 17:12   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

А f скопировано с учебника, который не дочитал до конца...
_SERGEYX_ вне форума Ответить с цитированием
Старый 18.11.2008, 17:12   #4
Umnik1
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 23
По умолчанию

в начале - как глобальная переменная. если объявить в процедуре то тоже самое...
Umnik1 вне форума Ответить с цитированием
Старый 18.11.2008, 17:17   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Значит в файле не действительные числа
пыщь
JTG вне форума Ответить с цитированием
Старый 18.11.2008, 17:20   #6
Umnik1
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 23
По умолчанию

нет там действительные точно)
Umnik1 вне форума Ответить с цитированием
Старый 18.11.2008, 17:44   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

ааа, блин

blockread(f,c,1);

3й параметр - не размер, а количество блоков, которые надо считать. Размер задаётся явно (f:file of real)
или f:file; ... reset(f,sizeof(c));
пыщь
JTG вне форума Ответить с цитированием
Старый 18.11.2008, 17:44   #8
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

blockread(f,c,sizeof(c));
blockread(f,c,1);

А чем собственно read(f,c) не устраивает?
Kostia вне форума Ответить с цитированием
Старый 18.11.2008, 17:53   #9
Umnik1
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 23
По умолчанию

заработало когда reset(f,1) написал...
а как read работаяет я не знаю)
Umnik1 вне форума Ответить с цитированием
Старый 18.11.2008, 18:04   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Reset открывает файл по файловой переменной f (она обьявляется заранее и в AssignFile связывается с указанным файлом. А read - процедура считывания данных с файла f.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++: ошибка при открытии файла Retiz Помощь студентам 2 30.08.2008 22:12
ошибка чтения KiSH333 БД в Delphi 12 22.08.2008 11:09
Програма чтения из файла на дельфи terminadoor Помощь студентам 18 03.07.2008 18:14
Ошибка, связанная с загрузкой из файла! kayman Помощь студентам 5 01.06.2008 21:23