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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2011, 18:23   #1
Lubawa
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 21
По умолчанию Запись типизированного файла из текстового.

Есть текстовый файл в котором 10 строчек. Необходимо порчитать данные из файла и создать типизированный файл типа рекорд. Мой код:
Код:
type
  person = record
    fam: string[15];
    sex: char;
    ball: string[4];
   end;

var
  A:array [1..10] of person;
  finput: text;
  typefile: file of person;
  i:integer;
  S: string;
Begin
  assign(finput, 'lab_in.txt');
  reset(finput);
for i:=1 to 10 do
begin
  Readln(finput,a[i]);
end;
  close(finput);
  assign(typefile, 'typefile.txt');
  rewrite(typefile);
  for i:=1 to 10 do
  Write(typefile,a[i]);
  close(typefile);
end.
Помогите исправить ошибки.

Последний раз редактировалось Stilet; 05.11.2011 в 12:02.
Lubawa вне форума Ответить с цитированием
Старый 04.11.2011, 18:30   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Код:
type
person = record
fam: string[15];
sex: char;
ball: string[4];
end;

var
A:array [1..10] of person;
finput: text;
typefile: file of person;
i:integer;
S: string;
Begin
assign(finput, 'lab_in.txt');
reset(finput);
for i:=1 to 10 do
begin
Readln(finput,s);
end;
close(finput);
reset(finput);
while not eof(finput) do
assign(typefile, 'typefile.txt');
rewrite(typefile);
for i:=1 to 10 do
Write(typefile,s);
close(typefile);
end.
В первом цикле ты считиваеш строки из файла, строки типа string(но никак не елементы масива).
Приведи хоть содержимое файла lab_txt.
Люблю на ты.Я человек простой

Последний раз редактировалось Leshii; 04.11.2011 в 18:43.
Leshii вне форума Ответить с цитированием
Старый 04.11.2011, 18:44   #3
Lubawa
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 21
По умолчанию

Да, это я уже исправила. Всё равно не получается.
Докимент имеет вид:
Цитата:
Иванов м 4555
Иванова ж 2453
Сидоров м 5555
Сидорова ж 4345
Петров м 4355
Петрова ж 5434
Талашов м 5544
Таланова ж 4435
Смирнов м 4343
Смирнова ж 5444
Код:
program lab1;

type
  person = record
    fam: string[15];
    sex: char;
    ball: string[4];
   end;

var
  A:array [1..10] of person;
  finput: text;
  typefile: file of person;
  i:integer;
  S:string;
Begin
  assign(finput, 'lab_in.txt');
  reset(finput);
  while not EOF(finput)do
  begin
  Readln(finput,s);
  end;
  close(finput);
  assign(typefile, 'typefile.txt');
  rewrite(typefile);
  for i:=1 to 10 do
  Write(typefile,a[i]);
  close(typefile);
end.
Читает теперь весь текст, осталось вывести.

Последний раз редактировалось Stilet; 05.11.2011 в 12:03.
Lubawa вне форума Ответить с цитированием
Старый 04.11.2011, 19:33   #4
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Код:
program iores;
label
     konec;
var
     f:text;
     fname:string[80];     
      res:integer;              
     otv:char;                   
	 s: string;
begin

     assign(f,'lab_in.txt');
     repeat
          {$I-}
          reset(f);   
          {$I+}
          res:=IOResult;
          if res<>0
          then begin
               write('ERROR ',fname, ' not found');
               write('repeat?(y/n)');
               readln(otv);
          end;
     until (res=0) OR (otv='n');
     if res<>0 then goto konec;
while (not EoF(f)) do
begin
	readln(f,s);
	writeln(s);
end;
readln;
konec:
end.
Тебе сюда для вывода добавить только пол и циферки)Ну думаю это уже проще будет, а ту прогу выкинь ибо ересь. Сам там с трудом разобрался, и много много ран тайм ероров.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 04.11.2011, 19:38   #5
Lubawa
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 21
Печаль

Обязательным условием решения задачи является наличие типизированного файла типа рекорд.
Lubawa вне форума Ответить с цитированием
Старый 04.11.2011, 19:42   #6
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Ну так с этого и надо было начинать)
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 04.11.2011, 19:45   #7
Lubawa
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 21
По умолчанию

Мне показалось что я с этого начала)))
Lubawa вне форума Ответить с цитированием
Старый 04.11.2011, 19:48   #8
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Цитата:
Сообщение от Lubawa Посмотреть сообщение
Мне показалось что я с этого начала)))
Обязательным условием решения

Сейчас переделаем.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 04.11.2011, 20:02   #9
Lubawa
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 21
По умолчанию

Код:
var
  A:array [1..10] of person;
  finput: text;
  typefile: file of person;
  i:integer;
  S:person;

Begin
     assign(finput,'lab_in.txt');
     reset(finput);
     assign(typefile,'tan.txt');
     rewrite(typefile);
     while not eof(finput) do begin
           with s do begin
                read(finput,s);
                if s.fam[length(s.fam)]<>' 'then
                   s.fam:=s.fam+' ';
                write(typefile,s.fam);
                writeln(typefile);
                end;
           end;
     close(finput);
     close(typefile);
 end.
Так написала, вроде всё правильно(только пока без пола и балла) но почему-то создается чистый типизированный файл.

Код:
program lab1;

type
  person = record
    fam: string[15];
    sex: char;
    ball: string[4];
   end;

var f: file of person;
 c: char;
 i,j,min,max: integer;
 a: array[1..10] of person;
 b:person;
 begin
 assign(f,'lab_in.txt');
 reset(f);
 for i:=1 to 10 do
 if not eof(f) then
 begin
   read(f,a[i]);
   write(f,a[i]));
 end;
 close(f);
end.
Так формируется типизированный файл из текстового, только теперь всё не на своих местах. Подскажите как выравнять текст в полях записи.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Stilet; 05.11.2011 в 12:08.
Lubawa вне форума Ответить с цитированием
Старый 04.11.2011, 23:49   #10
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Lubawa Посмотреть сообщение
Так формируется типизированный файл из текстового
Нет.
ТАК он не может формироваться.
Ты читаешь из типизированного файла. У тебя вообще нет текстового файла в программе..

И, кстати, о каком таком выравнивании в типизированном файле идет речь?? Его просто НЕ БЫВАЕТ.

ОбЪяви в проге ДВА файла, f и g:
f: text;
g: file of person;

Открой f на чтение, g на запись. Читай из f, записывай в g. Если хочешь, чтоб g имел то же имя, что и было у f, то сначала закрой f, а потом открой g.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение из типизированного файла kyop Паскаль, Turbo Pascal, PascalABC.NET 9 13.07.2011 17:32
Insert для типизированного файла. Alex Cones Общие вопросы Delphi 4 19.02.2010 20:00
создание типизированного файла Siluet Общие вопросы Delphi 10 26.09.2009 12:47
Загрузка данных из типизированного файла diliana Паскаль, Turbo Pascal, PascalABC.NET 33 30.07.2009 14:59
перегонять информацию из типизированного в текстовый и обратно из текстового в типизированный tgig Помощь студентам 4 09.06.2009 14:04