Вопрос № 38452: Здравствуйте, уважаемые эксперты!
Я задавал вопрос № 38346.
Совершенно согласен с ответом sir henry,что вопрос сформулирован просто безобразно,но тем не менее решать надо. Подскожите пожалуйста как записать в файл день (1..31), месяц (1..12)...
Вопрос № 38.452
Здравствуйте, уважаемые эксперты!
Я задавал вопрос № 38346.
Совершенно согласен с ответом sir henry,что вопрос сформулирован просто безобразно,но тем не менее решать надо. Подскожите пожалуйста как записать в файл день (1..31), месяц (1..12), год (00..99),а затем его прочитать.
В приложении привожу свою попытку, но она не записывает числы в файл.
Заранее благодарен.
Приложение:
Отправлен: 25.03.2006, 00:09
Вопрос задал: Chanik (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, Chanik!
1. Непонятно, каким принципом Вы руководствовались, выбирая в типе для даты именно массив. Логичнее будет просто применить тип запись с переменными типа байт (ведь значения дней месяцев и года не превышают именно байт) и ограничить их, в свою очередь, теми значениями, которые содержаться в днях, месяцах и годах:
Type
d31 = 1..31;
m12 = 1..12;
y99 = 0..99;
TMyDate = record
day: d31;
Month: m12;
Year: y99;
End;
2. Если Вы объявили тип для хранения даты, то совершенно естественным будет объявить файл такого типа, чтобы в нем хранить этот тип.
Var
CurrDate: TMyDate;
F: File of TMyDate;
i: integer;
Begin
Assign(F, 'filedata.dat');
Rewrite(F);
{Генерируем даты и записываем в файл}
Randomize;
For i:=0 To 9 Do
Begin
CurrDate.Day:=Random(31);
CurrDate.Month:=Random(12);
CurrDate.Year:=Random(99);
Write(F, CurrDate);
End;
Close(F);
Reset(F);
{Теперь последовательно читаем из файла}
While not Eof(F) Do
Begin
Read(F, CurrDate);
WriteLn(CurrDate.Day,'.', CurrDate.Month,'.', CurrDate.Year,' г.');
End;
Close(f);
End.
Над тем, как сделать вывод дат красивым, Вы подумайте сами.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 25.03.2006, 03:47