СообЧа > База Знаний > Программирование > Delphi

Вопрос

Из всех файлов, лежащих в директории, читается текст вида '25-02-03' (тип String), а затем добавляется в поле записи базы данных. В разных файлах могут содержаться одинаковые даты, соответственно и разные записи могут содержать одинаковые значения этого поля. Каким образом можно упорядочить записи по датам? Может быть, есть возможность перевести текст '25-02-03' в формат даты (TDateTime)?

Ответ

В Вашем вопросе везде указаны только две цифры года — что не есть гуд. В ответе будет предполагаться текущий век — в противном случае нужно добавить правило — какие 2 цифры из прошлого века, какие из нынешнего. Перевод строки формата DD-MM-ГГ в формат даты (TDateTime) легко делается ручками:

var dt:TDateTime; … dt:=EncodeDate(2000+(ord(s[7])-ord('0'))*10+(ord(s[8])-ord('0')), (ord(s[4])-ord('0'))*10+(ord(s[5])-ord('0')), (ord(s[1])-ord('0'))*10+(ord(s[2])-ord('0')));

Но можно повозиться с установлением глобальных переменных DateSeparator и ShortDateFormat и использовать функцию StrToDate. Вопрос про уникальность дат и сортировку не совсем понятен. Если в каждом файле нет одинаковых дат — то для уникальности записи Вы можете в записи хранить и имя файла. При сортировке с датой в качестве первого ключа — используйте в качестве второго ключа любое другое поле, если уж Вам нужна определенность при сортировке. Если вопрос был о том, что строки сортируются обычно (но не всегда) в алфавитном порядке, и дата записанные в формате dd-мм-гг будут отсортированы не в порядке возрастная дат — то тут у Вас два пути — либо хранить дату в формате ггггммдд, либо определить собственную процедуру сортировки, которой был бы известен внутренний формат данных, хранимых как строка.

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация