Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Внизформат даты Найти похожие ветки
← →
начинающий41 (2012-06-28 11:29) [0]подскажите есть ли какая нибудь функция в delphi которая переводит формат даты как "01.01.2012" на 01 января 2012 г
← →
Anatoly Podgoretsky © (2012-06-28 11:40) [1]> начинающий41 (28.06.2012 11:29:00) [0]
И на остальные несколько тысяч языков.
← →
Rouse_ © (2012-06-28 11:48) [2]
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;
← →
Rouse_ © (2012-06-28 11:49) [3]Показывать будет в дефолтовой системной локали, если нужно в других локалях - меняй первый параметр.
← →
Омлет © (2012-06-28 12:06) [4]
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;
← →
Плохиш © (2012-06-28 16:33) [5]Фи, в 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);
← →
Rouse_ © (2012-06-28 21:14) [6]
> Плохиш © (28.06.12 16:33) [5]
> Фи, в 21м веке живём уже :-)
Даже в 21 веке размер блока данных, требуемого функцией, извне константарно не задают :)
← →
NoUser (2012-06-28 23:19) [7]
> Rouse_ © (28.06.12 11:48) [2]
А зачем через буфер, может сразуSetLength(Result, Len);
← →
Rouse_ © (2012-06-28 23:52) [8]Удалено модератором
Примечание: пардон - не о том :)
← →
Rouse_ © (2012-06-29 00:09) [9]
> NoUser (28.06.12 23:19) [7]
Ой блин, пардон, вообще не правильно прочитал...
Да, так тоже можно, но финализирующий ноль все равно придется отсечь, иначе могут быть проблемы при дальнейшей конкатенации строк, где упремся в ноль.
← →
Плохиш © (2012-06-29 16:27) [10]
> Rouse_ © (28.06.12 21:14) [6]
Ну да, ну да, сейчас я буду не только кусок из старейшего пробного, первого попавшегося под руку кода копировать, но и время тратить на его причёсывание. А как же дать вопрошающему ещё и подумать? :-)
← →
Юрий Зотов © (2012-06-29 17:32) [11]> Rouse_ © (28.06.12 11:48) [2]
Ошибка в первой же строке кода.
← →
jack128_ (2012-06-30 01:10) [12]
> Юрий Зотов © (29.06.12 17:32) [11]
в этих двух:
function GetFormatedDate(Value: TDateTime): string;
Result := "";
нету ошибок. в какой конкретно.
← →
jack128_ (2012-06-30 01:10) [13]
> в какой конкретно ошибка?
← →
Юрий Зотов © (2012-06-30 22:48) [14]
> jack128_ (30.06.12 01:10) [13]
В заголовке функции.
← →
DVM © (2012-06-30 22:55) [15]
> Rouse_ © (29.06.12 00:09) [9]
> иначе могут быть проблемы при дальнейшей конкатенации строк,
> где упремся в ноль.
с конкатенацией проблем как раз не будет, дельфийской длинной строке ей глубоко фиолетово на ее содержимое, а вот при первом же приведении к PChar будут проблемы.
← →
turbouser © (2012-06-30 23:07) [16]
> Юрий Зотов ©
Буквоед ;)
← →
Германн © (2012-07-01 01:56) [17]
> turbouser © (30.06.12 23:07) [16]
>
>
> > Юрий Зотов ©
>
> Буквоед ;)
С чего ты взял, что суть ошибки в отсутствии сдвоенной буквы t в имени функции?
:)
← →
Германн © (2012-07-01 02:09) [18]Странно что АП не полностью "отреагировал" на вопрос в топике.
← →
Юрий Зотов © (2012-07-01 03:39) [19]
> turbouser © (30.06.12 23:07) [16]
Это же не я съел букву.
:o)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.066 c