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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг даты 
V
    Опции темы
MacTep
Дата 27.4.2012, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Кое-что написал. Жду критику smile


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  Dates.zip 236,43 Kb


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
baldina
Дата 27.4.2012, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



что-то напоминает ;-)
я бы таки на функции разделил. через пару месяцев сам в этом не разберешься
PM MAIL   Вверх
baldina
Дата 27.4.2012, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



Для Delphi есть компоненты, работающие с регулярными выражениями. Попробуй, результат будет много короче и понятней.
PM MAIL   Вверх
MacTep
Дата 27.4.2012, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Цитата(baldina @  27.4.2012,  13:11 Найти цитируемый пост)
Для Delphi есть компоненты, работающие с регулярными выражениями. Попробуй, результат будет много короче и понятней. 

В любом случае, чтобы юзать компонент, нужно знать сам смысл и правила составления и разбора регулярного выражения. А с этим туго...

Цитата(baldina @  27.4.2012,  12:52 Найти цитируемый пост)
что-то напоминает ;-)

Не скрою, твои мысли помогли smile Спасибо!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Qu1nt
Дата 27.4.2012, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Например, для третьего случая:
Код

uses
  System.SysUtils, System.DateUtils, System.StrUtils, System.RegularExpressions;

function StrToMonth(const Month: String): Integer;
const
  Months: array [1..12] of String = ('январ' , 'феврал', 'март', 'апрел', 'ма',
    'июн', 'июл', 'август', 'сентябр', 'октябр', 'ноябр', 'декабр');
var
  I: Integer;
begin
  Result := 0;
  for I := Low(Months) to High(Months) do
    if StartsText(Months[I], Month) then
    begin
      Result := I;
      Break;
    end;
end;

function TryParseTwoDates(const Text: string; out First, Second: TDate): Boolean;
var
  Groups: TGroupCollection;
  Match: TMatch;
begin
  Match := TRegEx.Match(Text, '^([а-я]+)\s+(\d+)\s*-\s*([а-я]+)\s+(\d+)$');
  Result := Match.Success;
  if not Result then
    Exit;
  Groups := Match.Groups;
  First := StartOfAMonth(StrToInt(Groups[2].Value), StrToMonth(Groups[1].Value));
  Second := EndOfAMonth(StrToInt(Groups[4].Value), StrToMonth(Groups[3].Value));
end;

PM MAIL   Вверх
MacTep
Дата 27.4.2012, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Цитата(Qu1nt @  27.4.2012,  18:30 Найти цитируемый пост)
Например, для третьего случая:

Для какого такого третьего? Именно для варианта "- октябрь 2012 - сентябрь 2013"? Если да, то нужен-то универсальный вариант.


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Keeper89
Дата 27.4.2012, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



MacTep, какой универсальный? Вот таким же подходом надо составить функции для каждого из случаев, Qu1nt все расписал.

Это сообщение отредактировал(а) Keeper89 - 27.4.2012, 20:38


--------------------
PM MAIL WWW   Вверх
MacTep
Дата 27.4.2012, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Спасибо за пример. Думаю, что вопрос можно считать закрытым. Ответы и советы я получил, всем огромный респект smile


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Akella
Дата 29.4.2012, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(MacTep @  24.4.2012,  17:49 Найти цитируемый пост)
На выходе должно быть две даты: дата начала и дата окончания.


И где здесь вторая дата?
Цитата(MacTep @  24.4.2012,  17:49 Найти цитируемый пост)
- 2011
- сентябрь 2012


PM MAIL   Вверх
XperT
Дата 29.4.2012, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Akella @ 29.4.2012,  12:13)
Цитата(MacTep @  24.4.2012,  17:49 Найти цитируемый пост)
На выходе должно быть две даты: дата начала и дата окончания.


И где здесь вторая дата?
Цитата(MacTep @  24.4.2012,  17:49 Найти цитируемый пост)
- 2011
- сентябрь 2012

В следующем предложении написано, что делать с такими датами.
PM MAIL   Вверх
Akella
Дата 29.4.2012, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



а слона то я и не заметил smile , но догадывался
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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