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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2011, 06:24   #1
kyop
Пользователь
 
Регистрация: 04.08.2010
Сообщений: 20
По умолчанию чтение из типизированного файла

день добрый столкнулся с проблемой, которую не могу понять, если кто может подсказать что дельное...

при компиляции модуля выдает ошибку 121 Invalid qualifier
файл уществует и называется правильно

Код:
procedure create_menu;

var l:byte;
line:integer;
f_menu:file;

begin
assign(f_menu,'f_menu.dat');
rewrite(f_menu);

repeat
	line:=0;
	seek(f_menu,line);
	line:=line+1;
	write('txt menu?');
	readln(f_menu.{курсор тут}name_str);
	
	
	write('stroka menu ',line);  
	write('tree nom 1?');
	readln(f_menu.tree_nom_1);
	  
	if f_men.tree_nom_1=0
kyop вне форума Ответить с цитированием
Старый 13.07.2011, 08:47   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так, немедлено читать теорию и изучать, что такое типизированный файл и чем он отличается от нетипизированного!

у Вас ошибка тут:
Цитата:
Код:
f_menu:file;
Какой тип файла Вы задали?! (подсказка - никакой! это нетипизированный файл). Нельзя читать Readln из нетипизированного файла (кстати, Readln-ом можно читать только строки и только из текстового файла)
подозреваю, что Вы хотели такое:
Код:
var
   ...
  f_menu:text;
успехов в учёбе...

p.s. а если бы Вы рассказали, что у Вас есть и что Вы хотите сделать, то я бы не только отметил Вашу ошибку, я бы Вам и вариант решения предложил...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.07.2011, 12:03   #3
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

Хм, сам факто того, что он командой Rewrite перезаписывает файл, уже говорит, о том, что здесь что - то не то
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 13.07.2011, 12:53   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от lux16
Хм, сам факто того, что он командой Rewrite перезаписывает файл, уже говорит, о том, что здесь что - то не то
lux16, +100

А я что-то затирание файла проглядел (читал код по диагонали, на это даже внимание не обратил).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.07.2011, 13:05   #5
kyop
Пользователь
 
Регистрация: 04.08.2010
Сообщений: 20
Сообщение

хм, наверно стоило написать вот так:
Код:
		t_r_menu=record
				name_str:string;
				tree_nom_1:integer;
				tree_nom_2:integer;
				tree_nom_3:integer;
				tree_nom_4:integer;
				end;
. . .

Код:
procedure create_menu;

var l:byte;
line:integer;
f_menu:file of t_r_menu;

begin
assign(f_menu,'f_menu.bin');
rewrite(f_menu);

repeat
	line:=0;
	seek(f_menu,line);
	line:=line+1;
	write('txt menu?');
	readln(f_menu.name_str);
	
	
	write('stroka menu ',line);  
	write('tree nom 1?');
	readln(f_menu.tree_nom_1);
	  t_r_menu
	if f_menu.tree_nom_1=0
	  then
	  begin
	  end
	  else
	  begin
			write('tree nom 2?');
			readln(f_menu.tree_nom_2);
	  end;
а задача, я просто пытаюсь сделать меню, которое получало бы данные из файла, а это процедура\, которая создаст этот файл...

наверно вы правы пойду подыщу что-нибудь из теории, четырех часов теории явно "маловато".
kyop вне форума Ответить с цитированием
Старый 13.07.2011, 13:08   #6
kyop
Пользователь
 
Регистрация: 04.08.2010
Сообщений: 20
По умолчанию

Цитата:
Сообщение от lux16 Посмотреть сообщение
Хм, сам факто того, что он командой Rewrite перезаписывает файл, уже говорит, о том, что здесь что - то не то
по идее эта процедура должна быть использована ОДИН раз и забыта...

p.s. на этой процедуре я просто пытаюсь разобраться, данные для "выдачи на экран" будут изыматься другой процедурой.

Последний раз редактировалось kyop; 13.07.2011 в 13:11.
kyop вне форума Ответить с цитированием
Старый 13.07.2011, 13:27   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

думаю, что Вы пытались сделать что-то вроде такого:
Код:
type
  t_r_menu = record
    name_str: string;
    tree_nom_1: integer;
    tree_nom_2: integer;
    tree_nom_3: integer;
    tree_nom_4: integer;
  end;


procedure create_menu;
var l: byte;
  line: integer;
  f_menu: file of t_r_menu;
  OneElement: t_r_menu;

begin
  assign(f_menu, 'f_menu.bin');
  rewrite(f_menu);

  line := 0;

  repeat
    line := line + 1;

    write('txt menu? (pustay stroka - okonchanie vvoda)');
    readln(OneElement.name_str);
    if OneElement.name_str <> '' then begin
      write('stroka menu ', line);
      write('tree nom 1?');
      readln(OneElement.tree_nom_1);
      write('tree nom 2?');
      readln(OneElement.tree_nom_2);
      write('tree nom 3?');
      readln(OneElement.tree_nom_3);
      write('tree nom 4?');
      readln(OneElement.tree_nom_4);

    {запишем данные в типизированный файл}
      Write(f_menu, OneElement)


    end;
  until OneElement.name_str = '';

  {обязательно нужно закрыть файл}
  Close(f_menu);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.07.2011, 13:36   #8
kyop
Пользователь
 
Регистрация: 04.08.2010
Сообщений: 20
По умолчанию

да примерно так, (line := 0;не там поставил и OneElement воообще забыл, позор на мою голову)

сейчас буду переделывать...
kyop вне форума Ответить с цитированием
Старый 13.07.2011, 14:44   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

кстати, я так и не понял, зачем вам line ?!
Просто порядковый номер строки меню? (чтобы не сбиться при вводе?)

кстати, обратите внимание, что seek я выкинул. В нём (в данном случае) совершенно нет необходимости!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.07.2011, 17:32   #10
kyop
Пользователь
 
Регистрация: 04.08.2010
Сообщений: 20
По умолчанию

ага, на этапе формирования меню, так наверно будет удобнее сверяться со списком, какое под меню из какой строки открывается, а при выводе просто не показывать это излишество...
kyop вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из типизированного файла с последней записи и до первой vmilyoshin Помощь студентам 7 28.04.2010 15:34
Insert для типизированного файла. Alex Cones Общие вопросы Delphi 4 19.02.2010 20:00
создание типизированного файла Siluet Общие вопросы Delphi 10 26.09.2009 12:47
Cортировка типизированного файла по 3м признакам Dremgor Помощь студентам 3 05.06.2009 14:10