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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2017, 20:55   #1
pavelmorash12
 
Регистрация: 17.04.2017
Сообщений: 6
По умолчанию не работает процедура

Помогите, пожалуйста
Файл типизированный. Выходит ошибка I/O error 6
Код:
procedure TVyvody.Chtenie(var inf: array of data);
var i,n:integer;
  begin
  Reset(f);
  i:=0;
  n:=0;
  SetLength(tovar,FileSize(f));
  while not eof(f) do
    Begin
    Read(f,tovar[i]);
    Form1.stringgrid1.Cells[0,i+1]:=inf[i].name;
    Form1.stringgrid1.Cells[1,i+1]:=inf[i].sg;
    Form1.stringgrid1.Cells[2,i+1]:=inttostr(inf[i].cena);
    Form1.stringgrid1.Cells[3,i+1]:=inf[i].izg;
    i:=i+1;
    n:=n+1;
    Form1.stringgrid1.RowCount:=Form1.stringgrid1.RowCount+1;
    end;
closefile(f);
end;
 
procedure TForm1.openClick(Sender: TObject);
var i:integer;
begin
for i:= 1 to n do
StringGrid1.Rows[i].Clear;
stringgrid1.RowCount:=2;
if OpenDialog1.Execute then
   Begin
   AssignFile(f,OpenDialog1.FileName);
   vyvody.chtenie(tovar);
end else exit;
SF.Hide;
end;

Последний раз редактировалось Serge_Bliznykov; 19.04.2017 в 22:01.
pavelmorash12 вне форума Ответить с цитированием
Старый 19.04.2017, 22:04   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1)

Цитата:
Сообщение от pavelmorash12 Посмотреть сообщение
Read(f,tovar[i]);
прочитали в массив tovar

Цитата:
Сообщение от pavelmorash12 Посмотреть сообщение
Код:
Form1.stringgrid1.Cells[0,i+1]:=inf[i].name;
    Form1.stringgrid1.Cells[1,i+1]:=inf[i].sg;
    Form1.stringgrid1.Cells[2,i+1]:=inttostr(inf[i].cena);
    Form1.stringgrid1.Cells[3,i+1]:=inf[i].izg;
а в грид пытаемся из массива inf взять информацию.
Ошибка?

2)

Цитата:
Сообщение от pavelmorash12 Посмотреть сообщение
procedure TVyvody.Chtenie(var inf: array of data);
так нельзя передавать массив.
объявите свой тип данных и передавайте его:

Код:
type
  TTovarArray =  array of data;


procedure TVyvody.Chtenie(var inf:  TTovarArray);
var i,n:integer;
  begin
    Reset(f);
    n:=FileSize(f);
    SetLength(inf,n);
    Form1.stringgrid1.RowCount:=n;
    for i:=0 to n-1 do 
    Begin
      Read(f,inf[i]);
      Form1.stringgrid1.Cells[0,i+1]:=inf[i].name;
      Form1.stringgrid1.Cells[1,i+1]:=inf[i].sg;
      Form1.stringgrid1.Cells[2,i+1]:=inttostr(inf[i].cena);
      Form1.stringgrid1.Cells[3,i+1]:=inf[i].izg;
    end;
    closefile(f);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.04.2017, 22:20   #3
pavelmorash12
 
Регистрация: 17.04.2017
Сообщений: 6
По умолчанию

Спасибо Вам большое
pavelmorash12 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает процедура delete gufon Общие вопросы Delphi 2 16.05.2011 23:16
почему не работает процедура? MyLastHit Общие вопросы Delphi 5 20.08.2010 22:05
Не работает процедура Golovastik SQL, базы данных 2 22.11.2009 14:22
Хранимая процедура не работает! Только_Учусь SQL, базы данных 6 08.09.2008 09:22
Процедура не работает Михаил Юрьевич Общие вопросы Delphi 4 03.06.2008 07:22