Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Решение примера

Автор: amir 17.04.2004 16:52

Может я чего то непонимаю я только начал заниматься програмированием. Вопрос такой: Нужно создать запись и занести её в файл. Запись создал, но при записи в файл у меня за место цифр пишется неизвестно что. Вот исходник.

Код

program zap1;
type
  Fio=record                 {Вложенная запись}
  fm,im,ot:string[20];
end;
type                  
 Address=record         {Вложенная запись}
 PostCode:string[20];{pochtov kod}
 City,Street: string[20];
 House:string[20];
 Apartament:string[20];
end;
type
dat=record                  {Вложенная запись}
day:1..31;
mongt:1..12;
year:1900..2050;
end;
type                              {Запись с анкетными данными}
anket=record
id: string[20];
vozr: integer;
obroz: string[30];
iniz: fio;
pol: string[20];
BirthDate: dat;
PostDate: dat;
MestoZhit:address;
kurs:1..6;
Special: string[30];
end;
var
 f: file of anket;
 dan:anket;
 a,b,c,d:string;
 i,j:word;
begin
with dan do
 begin
  writeln ('Lichn_cod',' '); readln (id);
  write ('vozrast na moment postuplenia',' '); readln (vozr);
  write ('obrozovanie',' '); readln (obroz);
  write ('famil',' '); readln (iniz.fm);
  write ('imia',' '); readln (iniz.im);
  write ('otchestvo',' '); readln (iniz.ot);
  write ('pol',' '); readln (pol);
  writeln ('data pozhdenia');
with BirthDate do
 begin
  write('den',' '); readln (day);
  write('mesiac',' '); readln (mongt);
  write('god',' '); readln (year);
end;
writeln('data postupl');
with PostDate do
 begin
  write('den',' '); readln (day);
  write('mesiac',' '); readln (mongt);
  write('god',' '); readln (year);
end;
with MestoZhit do
 begin
  write ('pochtov kod',' '); readln(PostCode);
  write ('ulica',' ');readln (Street);
  write ('gorod',' ');readln (City);
  write ('dom',' ');readln(House);
  write ('kvartira',' ');readln(Apartament);
 end;
write ('kurs',' ' ); readln(kurs);
write ('Specialnost',' '); readln(Special);
end;
assign (f,'c:\anketa.txt');
rewrite (f);
Write(f,dan);
close(f);
end.



P.S.
А кто будет исходник в тег code заключать????
см. ПРАВИЛА СТАТЬЯ 2 ПУНКТ 2.
В следующий раз исправлять не буду!

Автор: APAL 17.04.2004 17:45

Пишется в файле anketa.txt ?

Расширение TXT в данном случае не очень корректно.
Файл получается в итоге не текстовый, а типизированный. Т.е. он не предназначен для просмотра в текстовом виде.

Нужно создать дополнительный файл типа "TEXT" и в него вывести данные в нужном виде.

Автор: amir 18.04.2004 14:51

Не понял это как?

Автор: Altair 18.04.2004 15:57

А вот как:
берем учебник, и читаем про файлы!
Есть файлы текстовые а есть двоичные.
Вы записываете данные в ДВОИЧНЫЙ, ТИПИЗИРОВАННЫЙ файл.
При открытии его через БЛОКНОТ, вместо желаемого результата, там может быть что угодно!
----
Прочесть типизированный файл нельзя с помошью ТЕКСТОВОГО редактора!
При чтении такого файла, программа пытается выводить ASCII коды на экран, а т.к в файле НЕ ASCII коды, а все, что угодно, то и выводится не то!
----
Если вы хотите, что бы данные хранились в текстовом виде, то пишите не в файл типа anketa а в файл типа text!