Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] The Source Code → Дата и время

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 15

1 (edited by Zikoi5 05.08.2011 23:36)

Topic: Дата и время

Не могу найти где эта изменяется, вот я должен руссифицироват и эту. Помогите как всегда  smile 
Спасибо.

2

Re: Дата и время

Изначально так:

strftime(msgtemp, sizeof(msgtemp), "User was last seen on : %a %b %d %H:%M:%S",tmlogin);

Должно быть примерно так:

// присвоить для week аббревиатуру для недели (%a) из даты tmlogin
char week[3];
strftime(week, sizeof(week), "%a", tmlogin);

// перебрать возможные значения англ. дня недели (Sun, Mon, ...)
// и происвоить для weekday рус. значение
char weekday[2];
switch( week ) 
{
    case "Sun": weekday = "Вс"; break;
    case "Mon": weekday = "Пн"; break;
...
    case "Thu": weekday = "Чт"; break;
...
}

// аналогично сделать с месяцем
char month[3];
...


// присвоить для daytime день и время ("02 23:25:40")
char daytime[11];
strftime(daytime, sizeof(msgtemp), "%d %H:%M:%S", tmlogin);

// теперь надо положить это всё в конечный msgtemp
_snprintf(msgtemp, sizeof(msgtemp), "Пользователь последний раз был видел в: %s %s %s",
    weekday,
    month,
    daytime);

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


По теме, работа с датой в си:
publications.gbdirect.co.uk/c_bo … _time.html

%a    abbreviated weekday name
%b    abbreviated month name

Do not ask for support in PM.

3

Re: Дата и время

case "Sun": weekday = "Вс";

Хеш-массивов в си нет?

4

Re: Дата и время

Дней и месяцев не так много, чтоб массивы юзать для этого. Да и хз как эти хеш массивы там делать)

Do not ask for support in PM.

5

Re: Дата и время

Может просто получить массив чисел для даты (месяц, год итд), а потом их руками перевести в строки?

6 (edited by Zikoi5 06.08.2011 09:42)

Re: Дата и время

[note=]1>------ Build started: Project: bnetd, Configuration: Debug Win32 ------
1>Compiling...
1>command.cpp
1>..\..\..\source\src\bnetd\command.cpp(192) : error C2065: 'tmlogin' : undeclared identifier
1>..\..\..\source\src\bnetd\command.cpp(196) : error C2450: switch expression of type 'char [3]' is illegal
1>        Integral expression required
1>..\..\..\source\src\bnetd\command.cpp(198) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(198) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(199) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(199) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(200) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(200) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(201) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(201) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(202) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(202) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(203) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(203) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(204) : error C2051: case expression not constant
1>..\..\..\source\src\bnetd\command.cpp(204) : warning C4553: '==' : operator has no effect; did you intend '='?
1>..\..\..\source\src\bnetd\command.cpp(205) : warning C4060: switch statement contains no 'case' or 'default' labels
1>..\..\..\source\src\bnetd\command.cpp(799) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
1>Build log was saved at "file://c:\svn\pvpgn-magic-builder_v1.1\build\src\bnetd\bnetd.dir\Debug\BuildLog.htm"
1>bnetd - 9 error(s), 9 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========[/note]

static void do_whois(t_connection * c, char const * dest)
{
    t_connection *    dest_c;
    char              namepart[136]; /* 64 + " (" + 64 + ")" + NUL */
    char const *      verb;
    t_game const *    game;
    t_channel const * channel;

    if ((!(dest_c = connlist_find_connection_by_accountname(dest))) &&
        (!(dest_c = connlist_find_connection_by_name(dest,conn_get_realm(c)))))
    {
    t_account * dest_a;
    t_bnettime btlogin;
    std::time_t ulogin;
    struct std::tm * tmlogin;

    if (!(dest_a = accountlist_find_account(dest))) {
        message_send_text(c,message_type_error,c,"Неизвестный пользователь.");
        return;
    }

    if (conn_get_class(c) == conn_class_bnet) {
        btlogin = time_to_bnettime((std::time_t)account_get_ll_time(dest_a),0);
        btlogin = bnettime_add_tzbias(btlogin, conn_get_tzbias(c));
        ulogin = bnettime_to_time(btlogin);
        if (!(tmlogin = std::gmtime(&ulogin)))
        std::strcpy(msgtemp, "Последный раз вас видели ?");
        else
        std::strftime(msgtemp, sizeof(msgtemp), "Пользователь последний раз был виден в: %a %b %d %H:%M:%S",tmlogin);
    } else std::strcpy(msgtemp, "Пользователь не в сети");
    message_send_text(c, message_type_info, c, msgtemp);
    return;
    }
    // присвоить для week аббревиатуру для недели (%a) из даты tmlogin
    char week[3];
    strftime(week, sizeof(week), "%a", tmlogin);
    // перебрать возможные значения англ. дня недели (Sun, Mon, ...)
    // и происвоить для weekday рус. значение
    char weekday[2];
    switch( week ) 
    {
        case "Sun": weekday = "Вс"; break;
        case "Mon": weekday = "Пн"; break;
        case "Tue": weekday = "Вт"; break;
        case "Wed": weekday = "Ср"; break;
        case "Thu": weekday = "Чт"; break;
        case "Fri": weekday = "Пт"; break;
        case "Sat": weekday = "Сб"; break; 
    }

Резултат  :(

7

Re: Дата и время

Zikoi5, может сразу создашь тему "я нихрена не умею программировать, напишите мне бесплатно сервер, которым я один буду пользоваться"?

8 (edited by Zikoi5 06.08.2011 12:37)

Re: Дата и время

OFF-TOPIC
Я больше не буду задавать вопрос. СПАСИБО ЗА ВСЁ. Особенно к Harpywar.
(без вас я никто)
Мне нужен был чучут помощ по пвпгн и я тут нашол smile

9

Re: Дата и время

Я на код си смотрел, они там в си++ уже переделали много вызовов.
strftime > std::strftime
_snprintf > snprintf

В switch оказывается нельзя char arrays напрямую юзать. Вместо него делай if else, или switch, но через массив (наверное, это и имел в виду xpeh)
const char* weekdays[] =
{
    "Sun",
    "Mon",
    "Tue",

Это помимо того, что ты код не туда вставил.

Лучше возьми любую книжку по си++ (с отличиями от си) и напиши несколько мало мальских программ, используя строки, массивы и файлы.

Do not ask for support in PM.

10 (edited by Zikoi5 06.08.2011 12:59)

Re: Дата и время

HarpyWar wrote:

Лучше возьми любую книжку по си++ (с отличиями от си) и напиши несколько мало мальских программ, используя строки, массивы и файлы.

Да они все на русском,  а мне на узбекском был бы smile я читал и посморел много книг, видео уроки ну понял на 10%. карочи мне нужен учител по С++ С# и С. СПАСИБО.

11

Re: Дата и время

www.google.de/search?q=c%2B%2B+hash+map

HarpyWar wrote:

Вместо него делай if else, или switch, но через массив (наверное, это и имел в виду xpeh)

Не это.

12

Re: Дата и время

Он хочет сделать как у меня, вот так:

13

Re: Дата и время

o_O  tongue

14

Re: Дата и время

T-MAX wrote:

o_O  tongue

Чего? Кстати терь у меня вот так.

15

Re: Дата и время

kucc wrote:
T-MAX wrote:

o_O  tongue

Чего? Кстати терь у меня вот так.

ТИ  МОЖЕЩ ПОМОЧ НАМ ? ДЛЯ САЗДАНИЯ СЕРВЕРА ?

Posts: 15

Pages 1

You must login or register to post a reply

Who now at forum

Currently view post: 1 guest, 0 registered users

forums.pvpgn.pro → [RU] The Source Code → Дата и время