Обзор Введение Лицензионное соглашение Рассылка Цены Ссылки Разработчик Delphi Русскоязычные Англоязычные Сайты, посвященные Delphi Англоязычные Пиратские сайты Русскоязычные Другие Домашние страницы Русскоязычные Алгоритмы Преобразования HEX#8594;Integer Преобразование десятичного числа в шестнадцатиричное Преобразование ASCII в шестнадцатиричное представление Преобразование двоичного числа в десятичное Преобразование ICO в BMP Unix-строки (чтение и запись Unix-файлов) Преобразование BMP в JPEG в Delphi 3 Декомпиляция звукового файла формата Wave и получение звуковых данных Даты Вычисление даты Пасхи Дни недели Формат даты Функция DateSer Разное Ханойская башня Алгоритм (уравнение) для определения восхода/захода солнца и луны (BASIC) Автоматический формат даты в компоненте Edit Win API Переменные среды Получение переменных DOS Изменение системного времени из Delphi Завершение работы Windows События, происходящие в приложениях Delphi при завершении работы Windows Завершение работы Windows Режим энергосбережения (Power saver) Управление монитором Разное Как не допустить запуск второй копии программы? Каким образом, программным путем, можно узнать о завершении запущенной программы? Получение имени модуля Извлечение из EXE-файла иконки и рисование ее в TImage. Паскаль Массивы Динамические массивы Массив в Delphi Базы данных Создание Создание db-файла во время работы приложения Доступ Очень медленный доступ к таблице при первом обращении Поиск Поиск величины при вводе Быстрый поиск в базах данных Калькуляция Хитрость OnCalcFields dBASE Таблицы dBASE: Структура .DBF-файла Разное Сканирование версии структуры базы данных Перемещение таблиц Прокрутка таблицы: хитрость PeekMessage() BDE Псевдонимы Задание псевдонима программным путем Информация о псевдонимах BDE Мультимедиа Аудио-компакт Получение идентификатора диска Аппаратное обеспечение CD-ROM Открытие и закрытие привода CD-ROM Операционная система Буфер обмена Просмотр буфера обмена Копирование в буфер обмена Форма как графический объект Компоненты BitBtn Смена иконки BitBtn во время работы приложения DBGrid Использование опции MultiSelect в DBGRID Edit Массив Edit-компонентов Label 3D-рамка для текстовых компонентов ScrollBox Синхронизация двух компонентов Scrollbox Splitter Конструирование Splitter StatusBar Обработчик события OwnerDraw в компоненте StatusBar StringGrid Установка атрибутов –=Только для чтения=– у столбцов компонента StringGrid Помещение изображения в ячейку StringGrid Сохранение и чтение Tstringgrid TabbedNotebook Добавление элементов управления в TTabbedNotebook и TNotebook Недоступная закладка в компоненте Tabbednotebook Table Создание компонента TTable без формы TreeView Ускорение работы TreeView Разное Создание компонента во время работы приложения Получение индекса компонента в списке родителя Массив компонентов… Дублирование компонентов и их потомков во время выполнения приложения События Создание Создание события во время выполнения приложения Задержка выполнения Задержка выполнения OnChange (Delphi 2) Миграция Delphi3 Получение констант с определением ошибки функцией LoadStr Ошибки Delphi2 Ошибка в руководстве "Getting Started" на странице 42
Формат даты У меня есть неотложная задача: в настоящее время я разрабатываю проект, где я должен проверять достоверность введенных дат с применением маски __/__/____, например 12/12/1997.
Некоторое время назад я делал простой шифратор/дешифратор дат, проверяющий достоверность даты. Код приведен ниже.
function CheckDateFormat(SDate: string): string;
var
IDateChar: string;
x,y: integer;
begin
IDateChar:='.,\/';
for y:=1 to length(IDateChar) do begin
x:= pos(IDateChar[y],SDate);
while xgt;0 do begin
Delete(SDate,x,1);
Insert('-',SDate,x);
x:= pos(IDateChar[y],SDate);
end;
end;
CheckDateFormat:= SDate;
end;
function DateEncode(SDate:string):longint;
var
year, month, day: longint;
wy, wm, wd: longint;
Dummy: TDateTime;
Check: integer;
begin
DateEncode:= -1;
SDate:= CheckDateFormat(SDate);
Val(Copy(SDate,1,pos('-',SDate)-1),day,check);
Delete(Sdate,1,pos('-',SDate));
Val(Copy(SDate,1,pos('-',SDate)-1),month,check);
Delete(SDate,1,pos('-',SDate));
Val(SDate,year,check);
wy:= year;
wm:= month;
wd:= day;
try
Dummy:= EncodeDate(wy,wm,wd);
except
year:= 0;
month:= 0;
day:= 0;
end;
DateEncode:= (year*10000)+(month*100)+day;
end;