Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

формат даты [D6, XP]


начинающий41 ©   (2012-06-28 11:29:00) 

подскажите есть ли какая нибудь функция в delphi которая переводит формат даты как '01.01.2012' на 01 января 2012 г


Юрий Зотов   (2012-07-01 03:39:00) [1]


> turbouser ©   (30.06.12 23:07) [16]

Это же не я съел букву.
:o)


Германн   (2012-07-01 02:09:00) [2]

Странно что АП не полностью "отреагировал" на вопрос в топике.


Германн   (2012-07-01 01:56:00) [3]


> turbouser ©   (30.06.12 23:07) [16]
>
>
> > Юрий Зотов ©
>
> Буквоед ;)

С чего ты взял, что суть ошибки в отсутствии сдвоенной буквы t в имени функции?
:)


turbouser   (2012-06-30 23:07:00) [4]


> Юрий Зотов ©

Буквоед ;)


DVM   (2012-06-30 22:55:00) [5]


> Rouse_ ©   (29.06.12 00:09) [9]


>  иначе могут быть проблемы при дальнейшей конкатенации строк,
>  где упремся в ноль.

с конкатенацией проблем как раз не будет, дельфийской длинной строке ей глубоко фиолетово на ее содержимое, а вот при первом же приведении к PChar будут проблемы.


Юрий Зотов   (2012-06-30 22:48:00) [6]


> jack128_   (30.06.12 01:10) [13]

В заголовке функции.


jack128_   (2012-06-30 01:10:00) [7]


> в какой конкретно ошибка?


jack128_   (2012-06-30 01:10:00) [8]


> Юрий Зотов ©   (29.06.12 17:32) [11]

в этих двух:
function GetFormatedDate(Value: TDateTime): string;
Result := '';

нету ошибок. в какой конкретно.


Юрий Зотов   (2012-06-29 17:32:00) [9]

> Rouse_ ©   (28.06.12 11:48) [2]

Ошибка в первой же строке кода.


Плохиш   (2012-06-29 16:27:00) [10]


> Rouse_ ©   (28.06.12 21:14) [6]

Ну да, ну да, сейчас я буду не только кусок из старейшего пробного, первого попавшегося под руку кода копировать, но и время тратить на его причёсывание. А как же дать вопрошающему ещё и подумать? :-)


Rouse_   (2012-06-29 00:09:00) [11]


> NoUser   (28.06.12 23:19) [7]

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


Rouse_   (2012-06-28 23:52:00) [12]

Удалено модератором
Примечание: пардон - не о том :)


NoUser   (2012-06-28 23:19:00) [13]


> Rouse_ ©   (28.06.12 11:48) [2]

А зачем через буфер, может сразу
SetLength(Result, Len);


Rouse_   (2012-06-28 21:14:00) [14]


> Плохиш ©   (28.06.12 16:33) [5]
> Фи, в 21м веке живём уже :-)

Даже в 21 веке размер блока данных, требуемого функцией, извне константарно не задают :)


Плохиш   (2012-06-28 16:33:00) [15]

Фи, в 21м веке живём уже :-)

const
     CSIDL_RECENT = $0011;
     SUBLANG_RUSSIAN = $01;
     LANG_SYSTEM_RUSSIAN = (SUBLANG_RUSSIAN shl 10) or LANG_RUSSIAN;
     LOCALE_RUSSIAN = (SORT_DEFAULT shl 16) or LANG_SYSTEM_RUSSIAN;
...
var
     wsDate:     WideString;
     idx:        Integer;
...
 idx := 127;
 SetLength(wsDate, idx);
 idx := GetDateFormatW(LOCALE_RUSSIAN, DATE_LONGDATE, nil, nil{'dd MMMM yyyy'}, @wsDate[1], idx);
 MessageBoxW(0, @wsDate[1], 'Date', MB_OK);


Омлет   (2012-06-28 12:06:00) [16]

 DateTimeToString(Str, 'dd mmmm yyyy', StrToDate('21.12.2012'));
 Str := Str + ' г';

procedure InitMonths;
const _M: array[1..12]of string = ('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
var i: integer;
begin
 for i := 1 to 12 do LongMonthNames[i] := _M[i];
end;

initialization
 InitMonths;


Rouse_   (2012-06-28 11:49:00) [17]

Показывать будет в дефолтовой системной локали, если нужно в других локалях - меняй первый параметр.


Rouse_   (2012-06-28 11:48:00) [18]

function GetFormatedDate(Value: TDateTime): string;
var
 ST: TSystemTime;
 Buffer: array of Char;
 Len: Integer;
begin
 Result := '';
 DateTimeToSystemTime(Value, ST);
 Len := GetDateFormat(LOCALE_SYSTEM_DEFAULT, DATE_LONGDATE, @ST, nil, nil, 0);
 if Len > 0 then
 begin
   SetLength(Buffer, Len);
   GetDateFormat(LOCALE_SYSTEM_DEFAULT, DATE_LONGDATE, @ST, nil, @Buffer[0], Len);
   Result := PChar(Buffer);
 end;
end;


Anatoly Podgoretsky   (2012-06-28 11:40:00) [19]

> начинающий41  (28.06.2012 11:29:00)  [0]

И на остальные несколько тысяч языков.


Наверх

Титульная страница Поиск, карта сайта Написать письмо