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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2014, 17:35   #1
danas
 
Регистрация: 22.05.2013
Сообщений: 9
По умолчанию Запись в файл

Создание в консоле Delphi справки. Текст помощи для некоторой программы организован как линейный список. Каждая компонента помощи содержит термин (слово) и текст, содержащий пояснение к термину. Количество строк текста, относящихся к одному термину от1-5. Составить программу которая обеспечивает:
• начальное формирование текста помощи
• Результат действий записать в файл

Вроде бы написала, но почему то не происходит запись в текстовый файл 21. Пожалуйста проверьте и подскажите
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Type
FriendRec =^FR;
FR=RECORD
Name   : string[30];
Age      : string;
V:FriendRec;
End;
FrPtr = ^FriendRec;
Var
 P:POINTER;TEK, PRED,PERV,RAB : FriendRec; OT,IM:STRING; I,NOM:INTEGER; f1,f2:text;
 F:FILE OF FriendRec;

  { TODO -oUser -cConsole Main : Insert code here }
   PROCEDURE INPUT;
BEGIN  ASSIGN(F,'11.DAT'); REWRITE(F);

NEW(TEK);
Write('vvtdite termin : ');  Readln(TEK^.Name);
Write('vvedite opredelenie : ');  Readln(TEK^.Age);
TEK^.V:=NIL;
PERV:=TEK; WRITE(F,TEK);
FOR I:=1 TO 3 DO BEGIN
NEW(TEK^.V);
TEK:=TEK^.V ; TEK^.V:=NIL;
 Write('vvtdite termin  : ');  Readln(TEK^.Name);
Write('vvedite opredelenie  : ');  Readln(TEK^.Age);
 WRITE(F,TEK);
 PRED:=TEK;
        END;
      close(f);
  END;
 procedure PRITM;
begin  
 ASSIGN(F1,'21.txt'); REwrite(F1);
  ASSIGN(F,'11.DAT'); RESET(F);
FOR I:=1 TO FILESIZE(F) DO BEGIN
READ(TEK^.Name);  READ(TEK^.Age);


  writeln('termin  - ',TEK^.Name,'    ','opredelenie- ',TEK^.Age);
  write(f1,' ', TEK^.Name );  write(f1,' ',TEK^.Age);
  end;close(f); close(f1); END;

 
Begin
writeln('******Spravo4naa systema*******');
writeln('-------------------------------------------');

 REPEAT
 writeln('-------------------------------------------');
writeln('******menu*******');
writeln('1-vvod');
writeln('2-vivod');
writeln('3-poisk ');
WRITELN('vvedite # operacii'); READLN(NOM);
if (nom = 1)or (nom =2) or (nom = 3)
 then
  begin
 CASE NOM OF
1: INPUT;
2:  PRITM;
       END;
  writeln('hotite prodolzit? esli da nazmite lubuu klavisu,esli net 0');
  readln(ot) ; end  else WRITELN('vvedite zifru ot 1-3') ;

  until (ot='0'); writeln('zaversenie ');



FreeMem(TEK);
end.
заранее спасибо
danas вне форума Ответить с цитированием
Старый 03.02.2014, 17:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Создание в консоле Delphi справки.
Твой преподаватель не умен, ибо консольные справки в файл отправляются командой-перенаправлением а не своими встроенными средствами.
Цитата:
не происходит запись в текстовый файл 21.
А данные из файла 11.DAT на экран вообще выводятся?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.02.2014, 18:53   #3
danas
 
Регистрация: 22.05.2013
Сообщений: 9
По умолчанию

А как сделать правильно?
danas вне форума Ответить с цитированием
Старый 03.02.2014, 19:00   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А правильно нужно полностью выкинуть программу и сделать заново с нуля.
Например тут твою процедуру переписывания так:
Код:
 procedure PRITM;
var rec:FR;
begin  
  ASSIGN(F1,'21.txt'); Rewrite(F1);
  ASSIGN(F,'11.DAT'); RESET(F);
while not eof(f) DO BEGIN
  READ(f,rec);  
  writeln('termin  - ',rec.Name,'   opredelenie- ',rec.Age);
  writeln(f1,' ', rec.Name,' ',rec.Age);
end;
close(f); 
close(f1); 
END;
Хотя бы так.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.02.2014, 19:07   #5
danas
 
Регистрация: 22.05.2013
Сообщений: 9
По умолчанию

текст помощи должен быть организован как линейный список. Так как вы предложили и у меня получается
danas вне форума Ответить с цитированием
Старый 03.02.2014, 19:09   #6
danas
 
Регистрация: 22.05.2013
Сообщений: 9
По умолчанию

В строке READ(f,rec); выдает ошибку
danas вне форума Ответить с цитированием
Старый 03.02.2014, 19:15   #7
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от danas Посмотреть сообщение
В строке READ(f,rec); выдает ошибку
переменную объявите
ZuBy вне форума Ответить с цитированием
Старый 03.02.2014, 19:15   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я не предлагал а указывал на явные ошибки: Цикл FOR и несозданный элемент в памяти - этак нельзя делать.
По поводу списка: проход осуществляется по другому. Тебе придется изучить работу со списками, хочешь ты этого или нет.
Например считывание файла в список:
Код:
Type
FriendRec =^FR;
FR=RECORD
 Name   : string[30];
 Age      : string;
 Next,Prev:FriendRec;
End;

var head,tek,cur:FriendRec; f:file of friendRec;
...
 assignfile(f,'file'); reset(f);
 head:=nil; Tek:=nil; cur:=nil;
 while not eof(f) do begin
  new(tek);
  if head=nil then head:=tek;
  read(f,tek^);
  tek^.prev:=cur;
  if cur<>nil then cur^.next:=tek;
  cur:=tek;
 end;
 closefile(f);
...
И проход по списку:
Код:
 tek:=head;
 assignfile(f1,'11.txt'); rewrite(f1)
 while tek<>nil do begin
  writeln(f1,tek^.name,' ',tek^.age);
  tek:=tek^.next;
 end;
 closefile(f);
Пишу с потолка, и не проверяю, но смысл надеюсь донес.

Цитата:
В строке READ(f,rec); выдает ошибку
Срочно читать учебники!!! Бегом!!! Иначе даже не пробуй пытаться.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись информации в файл в файл Anubys Win Api 0 04.11.2011 23:27
запись в файл Angryant Помощь студентам 2 06.07.2011 00:58
Запись в файл С++ Viteks Общие вопросы C/C++ 3 18.04.2008 13:18
Запись в файл на С++ Mails Помощь студентам 7 31.03.2008 14:37