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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.05.2014, 01:55   #1
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию Не пойму почему выдаёт ошибку. StringGrid

Доброго времени суток.
Чего-то не могу понять, почему выдает ошибку I/O error 6..
Обрабатываемый файл содержит только целочисленные циферки, все строго построчно. Код вроде должен работать...
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var f : file of Integer;
     buf : integer; // буфер
begin
AssignFile(f,'statistic.txt');
Reset(f); // открываю для чтения
if IOResult <>0 then  //проверим?
 begin
  MessageDlg('Ошибка доступа к файлу ' + 'statistic.txt',mtError, [mbOk] ,0);
  exit;
 end;
// чтение из файла
while not EOF(f) do
 begin
  Readln(buf); // прочитать строку из файла
  StringGrid1.RowCount := StringGrid1.RowCount+1;  //увеличить на 1 строку
  StringGrid1.Cells[0,StringGrid1.RowCount-1] := FloatToStr(buf); //записать в ячейку буфер
 end;
 CloseFile(f) ; // закрыть файл
end;
Artsiom вне форума
Старый 07.05.2014, 08:17   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Код:
StringGrid1.Cells[0,StringGrid1.RowCount-1] := FloatToStr(buf);
Уже не правильно. Текст в ячейке имеет тип String, а переменная buf Integer. Поэтому FloatToStr, не отработает, по крайней мере нормально. StrToInt.
В какой именно строчке процедуры возникает ошибка? Что говорит отладчик?
Streletz вне форума
Старый 07.05.2014, 08:43   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var f : Textfile;
...
  Readln(f,buf); // прочитать строку из файла
А FloatToStr или StrToInt в данном случае не принципиально
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 07.05.2014, 14:37   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
var f : Textfile;
...
А FloatToStr или StrToInt в данном случае не принципиально
ну, шансов немного, но вдруг у него не текстовый файл, а действительно бинарный типизированный файл?!
Тогда TextFile не будет работать!



Artsiom, Вы понимаете, что означает запись:
var f : file of Integer;
Как Вы заполняете исходный файл?! И Вы отдаёте себе отчёт в том, что это бинарный файл, его нельзя открыть в текстовом редакторе (блокноте, например)?!
Serge_Bliznykov вне форума
Старый 07.05.2014, 14:46   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Обрабатываемый файл содержит только целочисленные циферки, все строго построчно
Вот и решил что у ТС текстовый файл
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 07.05.2014, 15:00   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Вот и решил что у ТС текстовый файл
Ага. Убедительно.
Тогда я согласен с вашим советом(кодом).
Serge_Bliznykov вне форума
Старый 07.05.2014, 18:04   #7
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Artsiom, Вы понимаете, что означает запись:
var f : file of Integer;
Упс, теперь понял. Думал, что укажу тип данных файла... кто ж знал
А заполняю через блокнот.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Как Вы заполняете исходный файл?! И Вы отдаёте себе отчёт в том, что это бинарный файл, его нельзя открыть в текстовом редакторе (блокноте, например)?!
Ну... можно HEX-редактором
Artsiom вне форума
Старый 07.05.2014, 23:02   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Artsiom Посмотреть сообщение
А заполняю через блокнот.
Значит, TextFile Вам будет в самый раз.

Проблема решена? Тему можно закрывать?
Serge_Bliznykov вне форума
Старый 08.05.2014, 00:02   #9
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Да, вполне, спасибо(!), хотя конечно ещё есть вопросы очень важные, но это уже наверно нужно создавать новую.
Artsiom вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10
Программа выдаёт ошибку, не пойму, как исправить. Яна Гришина Помощь студентам 14 06.08.2011 18:43
Проверьте правильность кода. Почему выдаёт ошибку? vlados92 Общие вопросы C/C++ 4 02.03.2011 12:58
Выдаёт ошибку: acos DOMAIN error,полсе нажатия окей,ещё одну ошибку pow OWERFLAW ERROR prikolist Общие вопросы C/C++ 4 10.04.2009 20:27
Почему ошибку выдаёт? Inbox Общие вопросы Delphi 14 24.06.2007 02:15