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

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

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

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

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

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

Цитата:
Сообщение от TinMan Посмотреть сообщение

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

Открой f на чтение, g на запись. Читай из f, записывай в g. Если хочешь, чтоб g имел то же имя, что и было у f, то сначала закрой f, а потом открой g.
мне необходимо чтоб в типизированный файл был типа рекорд, когда я сразу открываю на чтение текстовый и на запись типизированный, компилятор выдает ощибку о невозможности преобразования строковых данных в данные типа рекорд.
Lubawa вне форума Ответить с цитированием
Старый 05.11.2011, 00:31   #12
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Люб, ты вникаешь в то, что тебе пишут вообще? Я посмотрел тему, Леший тебе все написал подробно. На мою фразу твой ответ тоже ни в красную армию..

Ты НЕ ОТКРЫВАЕШЬ на чтение текстовый. У тебя ВООБЩЕ НЕТ в программе текстового файла. Текстовый - это который в разделе var описан как text. Пойми, что тебе нужно ДВЕ файловых переменных (я написал выше, как, и Леший писал тоже).

Я тебе немного попозже напишу прогу с пояснениями. Я вижу, что ты вроде хочешь разобраться. Но только пойми: не надо повторять, что тебе НАДО. Надо пытаться понять ПРОЦЕСС в деталях. Если ты и дальше будешь писать "мне необходимо", то ты это самое необходимое не получишь. Ты стоишь перед стеной и твердишь: "Мне необходимо пройти!!". А нужно посмотреть вокруг и поискать дверь..
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 05.11.2011 в 01:26. Причина: описка
TinMan вне форума Ответить с цитированием
Старый 05.11.2011, 00:40   #13
Lubawa
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 21
По умолчанию

Да в последней программе я не написала текстовый файл, но в предыдущих он у меня открыт и объявлен. Я пытаюсь вникнуть в то что мне пишут. Буду очень благодарна за прогу с пояснениями.
Lubawa вне форума Ответить с цитированием
Старый 05.11.2011, 00:43   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
когда я сразу открываю на чтение текстовый и на запись типизированный, компилятор выдает ощибку о невозможности преобразования строковых данных в данные типа рекорд.
Вам TinMan дал абсолютно корректный совет.
Если Вам выдаётся ошибка, значит, либо Вы что-то не так делаете, либо файлы у Вас не являются такими, за каких Вы их считаете! (в первую очередь - речь идёт о текстовом файле..)


Давайте свой код программы, (возможно, надо ещё и выложить пример текстового файла), и получите ответ=решение вашей проблемы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2011, 00:52   #15
Lubawa
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 21
По умолчанию

Код:
 program lab1;

type
  person = record
    fam: string[15];
    sex: char;
    ball: string[4];
    sr:real;
  end;
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.
пример текстового файла я написала в 3 сообщении.
Lubawa вне форума Ответить с цитированием
Старый 05.11.2011, 01:20   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

смотрите. файл ТЕКСТОВЫЙ ?
Так как же Вы из него можете прочитать переменную типа Person ?!

ошибка в этой строке:
Код:
read(finput,s);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2011, 01:22   #17
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Ты пытаешься читать структуры из текстового файла и писать строки в типизированный. А нужно все делать наоборот )
Son Of Pain вне форума Ответить с цитированием
Старый 05.11.2011, 01:37   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, вот, как и обещал.
готовое решение.

Код:
program lab1;

type
  person = record
    fam: string[15];
    sex: char;
    ball: string[4];
    sr: real;
  end;
var
  finput: text;
  typefile: file of person;
  i: integer;
  OneP: person;
  sIn : string;

begin
  assign(finput, 'lab_in.txt');
  reset(finput);
  assign(typefile, 'tan.bin');
  rewrite(typefile);

  i:=0; {счётчик записей в типизированном файле}
  while not eof(finput) do begin

     {обнулим все поля записи}
     with OneP do begin
       fam := ''; sex := ' '; ball := '';
       sr := 0.0;
     end;

     {прочитаем строчку из текстового файла}
     readln(finput, sIn);

     {удалим ведущие пробелы, если они есть}
      while (Length(sIn)>1) and (sIn[1]=' ') do delete(sIn,1,1);

     {разберём прочитанную строчку на элементы}
     if Pos(' ', sIn)>1 then begin
        OneP.fam := Copy(sIn, 1, Pos(' ', sIn)-1);

        {возьмём остаток строки всё, что после первого пробела}
        sIn := Copy(sIn, Pos(' ', sIn)+1, Length(sIn) - Pos(' ', sIn));

        {удалим ведущие пробелы, если они есть}
        while (Length(sIn)>1) and (sIn[1]=' ') do delete(sIn,1,1);

        OneP.sex := sIn[1];
        delete(sIn,1,1); {удалим из строки пол}

        {удалим ведущие пробелы, если они есть}
        while (Length(sIn)>1) and (sIn[1]=' ') do delete(sIn,1,1);

        OneP.Ball := Copy(sIn, 1, 4);

     end;

     if length(OneP.fam)>0 then begin
         write(typefile, OneP);
         inc(i);
     end;

  end;
  close(finput);
  close(typefile);
  WriteLn('Всего в файл было записано ',i,' записей.');
  Readln;
end.
попробуй разобраться.
если что-то непонятно - спрашивай..
Вложения
Тип файла: rar LAB1.rar (838 байт, 8 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2011, 11:27   #19
Lubawa
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 21
По умолчанию

Всё понятно. Спасибо огромное.
Lubawa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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