Файл "Каталог файлов" Структура записи: Имя файла(8 знаков) Спецификация(3 знака) Дата создания: День(2 знака) Месяц(2 знака) Год(2 знака) Количество блоков(4 знака)
Записи упорядочены по именам файлов.Создайте файл "Каталог файлов".Занесите в отдельный файл записи о файлах с заданным именем.
Помогите пожалуйста) Я условие не понимаю да и с темой файлы не лады у меня...
TarasBer
26.04.2010 16:44
Надо создать файл, в котором будет информация о других файлах. Структура файла дана. То есть приблизительные вид некоторых фрагментов такой:
TDate = record Day, Month, Year: array [0 .. 1] of char; end;
TFileInfo = record Name: array [0 .. 7] of char; Dim: array [0 .. 2] of char; CreationDate: TDate; BlockCount: array [0 .. 3] of char; end;
TFileOfTFileInfo = file of TFileInfo; // файл из записей, содержащих информацию о файлах ... Info: TFileInfo; F: TFileOfTFileInfo; ... Assign(F, 'FileDir'); Rewrite(F); ... Write(F, Info); ...
Мда, хотел обойтись string[x], да вспомнил, что там лишний байт в начале.
Ozzя
26.04.2010 17:56
Цитата(TarasBer @ 26.04.2010 17:44)
Мда, хотел обойтись string[x], да вспомнил, что там лишний байт в начале.
Он не лишний. В нем длина строки хранится.
Lapp
27.04.2010 8:45
Цитата(Ozzя @ 26.04.2010 18:56)
Он не лишний. В нем длина строки хранится.
Никто не спорит )). Но в терминах данной задачи он все же лишний.
Archon
27.04.2010 9:45
Наверное, стоит упомянуть, что в некоторых компиляторах (FPC, Delphi) вместо "record" надо писать "packed record".
volvo
27.04.2010 10:04
Цитата
в некоторых компиляторах (FPC, Delphi) вместо "record" надо писать "packed record".
Вот как раз в данном случае это совершенно бесполезно.
Zigfried
8.05.2010 11:06
А можете поподробнее расписать а то я всеравно ничего не понимаю(
Zigfried
15.05.2010 7:18
program creator; type TDate=string[8]; TName=string[8]; TSpec=string[3]; TBlockCount=string[4]; TFileInfo = record Name:TName; Spec:TSpec; CreationDate: TDate; BlockCount:TBlockCount; end; var TFileOfTFileInfo:file of TFileInfo; Info,Struct: TFileInfo; NameFile:string[12];
Procedure AddRecord; begin Writeln('Zapis nomer ',FilePos(TFileOfTFileInfo)+1); with Struct do begin Write('Enter Name: '); Readln(Name); Write('Enter Spec: '); Readln(Spec); Write('Enter Date: '); Readln(CreationDate); Write('Enter BockCount: '); Readln(BlockCount); Write(TFileOfTFileInfo,Info); end; end;
Procedure CreateRecordFile; var i,count:integer; begin Write('Enter name of file '); Readln(NameFile); Assign(TFileOfTFileInfo,NameFile); Rewrite(TFileOfTFileInfo); Writeln('File created: ',NameFile); Write('Enter kol-vo zapisei kotorie vi hotite dobavit '); Readln(count); for i:=1 to count do AddRecord; Writeln('Zapisano'); Close(TFileOfTFileInfo); end; begin CreateRecordFile; readln; readln end.
.
Вот я составил текст проги на создание такого файла помогите с основной задачей пожалуйста
Ozzя
15.05.2010 7:52
Здесь AddRecord; ошибка была. Исправлено.
program creator; type TDate=string[8]; TName=string[8]; TSpec=string[3]; TBlockCount=string[4]; TFileInfo = record Name:TName; Spec:TSpec; CreationDate: TDate; BlockCount:TBlockCount; end; var F,TFileOfTFileInfo:file of TFileInfo; Info,Struct: TFileInfo; NameFile:string[12]; FixedName : TName;
Procedure AddRecord; begin Writeln('Zapis nomer ',FilePos(TFileOfTFileInfo)+1); with Struct do begin Write('Enter Name: '); Readln(Name); Write('Enter Spec: '); Readln(Spec); Write('Enter Date: '); Readln(CreationDate); Write('Enter BockCount: '); Readln(BlockCount); end; Write(TFileOfTFileInfo,struct); end;
Procedure CreateRecordFile; var i,count:integer; begin Write('Enter name of file '); Readln(NameFile); Assign(TFileOfTFileInfo,NameFile); Rewrite(TFileOfTFileInfo); Writeln('File created: ',NameFile); Write('Enter kol-vo zapisei kotorie vi hotite dobavit '); Readln(count); for i:=1 to count do AddRecord; Writeln('Zapisano'); Close(TFileOfTFileInfo); end;
begin CreateRecordFile;
FixedName:='pascal'; Assign(F,'output.dat'); Rewrite(F); Assign(TFileOfTFileInfo,NameFile); ReSet(TFileOfTFileInfo); while not eof(TFileOfTFileInfo) do begin read(TFileOfTFileInfo,struct); if struct.name=FixedName then write(f,struct); end; Close(TFileOfTFileInfo); Close(F); readln; readln end.
А в условии сказано, что эти поля должны занимать 8 и 3 знака. А у вас будет 9 и 4. Я просто так написал не string[x], а array [0 .. x - 1] of char?
Zigfried
17.05.2010 10:40
Нет просто преподаватель требует именно в таком виде...
TarasBer
17.05.2010 10:57
> Нет просто преподаватель требует именно в таком виде...
Чтобы именно через string[n]? Этот вид противоречит условию из 1 сообщения. Преподавателя это не смущает?
Zigfried
18.05.2010 5:42
Вроде как нет просто когда я в 1 раз задачу показывал ей она сказала воспользоваться строкой
TarasBer
18.05.2010 9:38
> Вроде как нет
Это плохо. Должно смущать. Она хотя бы блокнотом открывать полученный файл пробовала, чтобы понять, почему нужен массив символов, а не строка?
Lapp
19.05.2010 3:51
Цитата(TarasBer @ 17.05.2010 10:56)
А в условии сказано, что эти поля должны занимать 8 и 3 знака. А у вас будет 9 и 4.
Тарас, зря придираешься. В условии сказано, что пременные должны быть представлены с такой-то точностью, и не более того. Это (неявно) подтверждается тем, что речь идет о знаках, а не о байтах. В такой постановке обвинять преподавателя в непоследовательности не вижу причин..
TarasBer
19.05.2010 9:37
Может, это заказ крупной фирмы. И потом, файл, созданный этой программой, будет обрабатывать другая программа (причём открывать как поток байтов), которая, в сответствии с ТЗ, для отыскания k-ой записи будет переходить к k*(8+3+2+2+2+4) позиции. И вот перейдёт она туда и увидит хрен с ушами, потому что формат записан с грубыми нарушениями.
Lapp
25.05.2010 0:24
Цитата(TarasBer @ 19.05.2010 10:37)
Может, это заказ крупной фирмы. И потом, файл, созданный этой программой, будет обрабатывать другая программа (причём открывать как поток байтов), которая, в сответствии с ТЗ, для отыскания k-ой записи будет переходить к k*(8+3+2+2+2+4) позиции. И вот перейдёт она туда и увидит хрен с ушами, потому что формат записан с грубыми нарушениями.
Повторяю: данные в скобках в условии означают не то, что ты подумал. Вчитайся.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.