Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
7th
Янв
Определить содержимое строки (date, time, datetime)
Posted by maloy under Delphi, Архив
N!el
В списке TStrings хранятся строковые представления data, time, datatime. Визуально выглядит так:
Код:
13:00
25:10.2008
25:10.2008 13:00
Нужно определить формат строки в списке т.е. в строке указано: только время, только дата, дата и время. В последующем в зависимости от формата происходит сравнения либо с текущей датой, либо временем, либо датой и временем. Какие есть варианты реализации, кроме использования RegExp.
Kotofff
Можно «в лоб», например, дату проверять :
function ValidDate(const S: String): Boolean;
begin
Result := True;
try StrToDate(S);
except on EConvertError do Result := False;end;
end;
Только при запуске в среде Delphi и неверном значении будет ошибка т.к. компилятор возьмет на себя исключительную ситуацию …
Использовать можно так :
procedure TForm1.Button1Click(Sender: TObject);
function ValidDate(const S: String): Boolean;
begin
Result := True;
try StrToDate(S);
except on EConvertError do Result := False;end;
end;
begin
if ValidDate(Edit1.Text) then ShowMessage('Это дата') else ShowMessage('Это не дата');
end;
Антон Ю. Б.
С обработкой неполного формата времени вот так получилось
Код:
function GetDateTimeType(s:string):Integer;
var DT:TDateTime;
T:TTime;
D:TDate;
ts:String;
begin
result:=-1;
try
D:=StrToDate(s);
if s=DateToStr(D) then
begin
Result:=0;
Exit;
end;
except
end;
try
T:=StrToTime(s);
if (Pos(s,TimeToStr(T))=1)
and ((Length(TimeToStr(T))=Length(s))or(TimeToStr(T)[Length(s)+1]=':')) then
begin
Result:=1;
Exit;
end;
except
end;
try
DT:=StrToDateTime(s);
if (Pos(s,DateTimeToStr(DT))=1)
and((Length(DateTimeToStr(DT))=Length(s))or(DateTimeToStr(DT)[Length(s)+1]=':')) then
begin
Result:=2;
Exit;
end;
except
end;
s:='25.10.2008';
ShowMessage(IntTostr(GetDateTimeType(s)));
s:='13:00';
ShowMessage(IntTostr(GetDateTimeType(s)));
s:='25.10.2008 13:00';
ShowMessage(IntTostr(GetDateTimeType(s)));
тема на форуме от 2009 года
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)