IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на файлы
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


Файл "Каталог файлов"
Структура записи:
Имя файла(8 знаков)
Спецификация(3 знака)
Дата создания:
День(2 знака)
Месяц(2 знака)
Год(2 знака)
Количество блоков(4 знака)

Записи упорядочены по именам файлов.Создайте файл "Каталог файлов".Занесите в отдельный файл записи о файлах с заданным именем.

Помогите пожалуйста) Я условие не понимаю да и с темой файлы не лады у меня...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Надо создать файл, в котором будет информация о других файлах. Структура файла дана.
То есть приблизительные вид некоторых фрагментов такой:

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], да вспомнил, что там лишний байт в начале.

Сообщение отредактировано: TarasBer -


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата(TarasBer @ 26.04.2010 17:44) *

Мда, хотел обойтись string[x], да вспомнил, что там лишний байт в начале.

Он не лишний. В нем длина строки хранится.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Ozzя @ 26.04.2010 18:56) *
Он не лишний. В нем длина строки хранится.
Никто не спорит )). Но в терминах данной задачи он все же лишний.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Наверное, стоит упомянуть, что в некоторых компиляторах (FPC, Delphi) вместо "record" надо писать "packed record".


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
в некоторых компиляторах (FPC, Delphi) вместо "record" надо писать "packed record".
Вот как раз в данном случае это совершенно бесполезно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


А можете поподробнее расписать а то я всеравно ничего не понимаю(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


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.
.

Вот я составил текст проги на создание такого файла помогите с основной задачей пожалуйста
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Здесь 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


Спасибо огромное)))))))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Цитата

TDate=string[8];
TName=string[8];
TSpec=string[3];

А в условии сказано, что эти поля должны занимать 8 и 3 знака. А у вас будет 9 и 4.
Я просто так написал не string[x], а array [0 .. x - 1] of char?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


Нет просто преподаватель требует именно в таком виде...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Нет просто преподаватель требует именно в таком виде...

Чтобы именно через string[n]?
Этот вид противоречит условию из 1 сообщения. Преподавателя это не смущает?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


Вроде как нет просто когда я в 1 раз задачу показывал ей она сказала воспользоваться строкой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Вроде как нет

Это плохо. Должно смущать. Она хотя бы блокнотом открывать полученный файл пробовала, чтобы понять, почему нужен массив символов, а не строка?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(TarasBer @ 17.05.2010 10:56) *
А в условии сказано, что эти поля должны занимать 8 и 3 знака. А у вас будет 9 и 4.
Тарас, зря придираешься. В условии сказано, что пременные должны быть представлены с такой-то точностью, и не более того. Это (неявно) подтверждается тем, что речь идет о знаках, а не о байтах. В такой постановке обвинять преподавателя в непоследовательности не вижу причин..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Может, это заказ крупной фирмы. И потом, файл, созданный этой программой, будет обрабатывать другая программа (причём открывать как поток байтов), которая, в сответствии с ТЗ, для отыскания k-ой записи будет переходить к k*(8+3+2+2+2+4) позиции. И вот перейдёт она туда и увидит хрен с ушами, потому что формат записан с грубыми нарушениями.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(TarasBer @ 19.05.2010 10:37) *
Может, это заказ крупной фирмы. И потом, файл, созданный этой программой, будет обрабатывать другая программа (причём открывать как поток байтов), которая, в сответствии с ТЗ, для отыскания k-ой записи будет переходить к k*(8+3+2+2+2+4) позиции. И вот перейдёт она туда и увидит хрен с ушами, потому что формат записан с грубыми нарушениями.
Повторяю: данные в скобках в условии означают не то, что ты подумал. Вчитайся.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.11.2021 1:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name