Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текущая дата 
:(
    Опции темы
Buga
Дата 4.5.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



 Подскажите, как можно узнать текущую дату (только дату) и проверить введеную строку является ли она датой? 
PM MAIL   Вверх
Yanis
Дата 4.5.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Buga @  4.5.2006,  12:01 Найти цитируемый пост)
Подскажите, как можно узнать текущую дату

Код
ShowMessage(DateToStr(Now));


Цитата(Buga @  4.5.2006,  12:01 Найти цитируемый пост)
проверить введеную строку является ли она датой?
Приведи пример что является датой, а что нет. 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 4.5.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Buga @  4.5.2006,  11:01 Найти цитируемый пост)
проверить введеную строку является ли она датой? 

Можно воспользоваться TMaskEdit, он просто не позволит ввести дату в неправельном формате. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Buga
Дата 4.5.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



Дата считается введеной правильно, если она удовлетворяет след. условиям:
1. Формат представлен в виде дд.мм.гггг
2. Существует такой день в этом месяце, существует такой месяц и подобные

А как работать с TMaskEdit?  smile Мне все позволяет ввести  smile  
PM MAIL   Вверх
Yanis
Дата 4.5.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Buga @  4.5.2006,  12:13 Найти цитируемый пост)
1. Формат представлен в виде дд.мм.гггг

Ну если формат фиксированый, то грубо так:
Код

function IsValidDate(const s: string): Boolean;
const
  FMT = '??.??.????';
var
  d, m, y: WORD;
begin
  Result := False;
  if MatchesMask(s, FMT) then
    begin
      y := StrToIntDef(Copy(s, 7, 4), 0);
      m := StrToIntDef(Copy(s, 4, 2), 0);
      d := StrToIntDef(Copy(s, 1, 2), 0);
      Result := DateUtils.IsValidDate(y, m, d);
    end;
end;
 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 4.5.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Buga, у  TMaskEdit есть свойство Editmask, где можно определить какой символ может присутствовать в каждой позиции, а разделители вообще сам рисует в нужной позиции, 32 - декобря он, конечно пропустит, это придется проверять вручную.
Как альтернатива -  есть на вкладке samples TCalendar, он уж точно не позволит выбрать неверную дату. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Buga
Дата 4.5.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



try
    StrToDate(MaskEdit1.Text)
except
    ShowMessage('Ошибка');
end;

 Почему в таком случае он все равно выдает ошибку, что не может перевести в дату? Ведь здесь есть обработка исключительной ситуации. 
PM MAIL   Вверх
Sunr1se
Дата 4.5.2006, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 1.5.2006

Репутация: 6
Всего: 13



MaskEdit.Text имеет тип TMaskedText, а не String. Поэтому не получается выполнить преобразование.  

Это сообщение отредактировал(а) Sunr1se - 4.5.2006, 12:48
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
Buga
Дата 4.5.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



 А как можно перевести в String? 
PM MAIL   Вверх
Sunr1se
Дата 4.5.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 1.5.2006

Репутация: 6
Всего: 13



Готовый текст находится в MaskEdit1.EditText 
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
Guedda
Дата 4.5.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Перевод даты в string:
Код

function DateToStr(Date : TDateTime) : string;
s := DateToStr(Now); 
{Вернет строку текущей даты, т.к. параметр Now - это дата сейчас}

Перевод строки в дату:
Код

function StrToDate(s : string) : TDateTime;
s := '14.03.1999';
dat := StrToDate(s);
{Вернет значение даты 14.03.1999}


А там дальше как хочешь, так и оперируй.

Я бы сравнил так:
Код

s := DateToStr(Now);
s2 := '14.03.1999';
if s = s2 then ShowMessage('Даты идентичны! Ура, товарищи!');
 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Amina
Дата 5.5.2006, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.4.2005

Репутация: нет
Всего: нет



Как проверить, существует ли дата? 
Код

function DateExists(Date: string; Separator: char): Boolean; 
var 
  OldDateSeparator: Char; 
begin 
  Result := True; 
  OldDateSeparator := DateSeparator; 
  DateSeparator := Separator; 
  try 
    try 
      StrToDate(Date); 
    except 
      Result := False; 
    end; 
  finally 
    DateSeparator := OldDateSeparator; 
  end; 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  if DateExists('35.3.2001', '.') then 
  begin 
    {your code} 
  end; 
end;
 
 

Это сообщение отредактировал(а) Girder - 9.5.2006, 19:51
PM MAIL   Вверх
Buga
Дата 6.5.2006, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



Amina, даже в таком случае выдается ошибка о невозможно перевода строки в дату. 
Мне надо сделать так, чтобы это сообщение не выводилось, а подменялось каким-нибудь моим, например: "Дата введена не правильно".  
PM MAIL   Вверх
Yanis
Дата 6.5.2006, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Код
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  if DateExists('35.3.2001', '.') then 
  begin 
    {your code} 
  end
else ShowMessage('Дата введена неправильно!');
end;
 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1330 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.