Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VC++Express...2008&GetTime(Date)Format 
:(
    Опции темы
polinin
Дата 6.4.2008, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Столкнулся с таким вот непонятным моментом.  Консольное приложение, свойства проекта по умолчанию (релиз). Не работает GetTimeFormat и GetDateFormat. Код приложения:
Цитата

#include <windows.h>
#include <stdio.h>
#include <tchar.h>

int main()
{
   SYSTEMTIME dt;
   TCHAR  szTemp[32];
   GetLocalTime(&dt);
   int iResult = GetDateFormat(0, 0, &dt, _T("dd'.'MM'.'yyyy"), szTemp, 32);
   DWORD dwError = GetLastError();
   printf("%s (%d)(%d)\n", szTemp, iResult, dwError);
   Sleep(2000);
   return 0;
}

Выводит: 0 (11)(0)
если 4-ый параметр задать как: (LPCTSTR)"dd'.'MM'.'yyyy", то получаю: dd'.'MM'.'yyyy (8)(0).
Код проверялся и в MinGW и в VC++6.0 - работает.
В чём тут дело?


PM MAIL   Вверх
korian
Дата 6.4.2008, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

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



лечить можно идиотским способом:
перед инклудами вставте
#undef UNICODE
#undef _UNICODE

проблема в неправильном использовании printf

Это сообщение отредактировал(а) korian - 6.4.2008, 01:58
PM   Вверх
polinin
Дата 6.4.2008, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(korian @  6.4.2008,  01:49 Найти цитируемый пост)
проблема в неправильном использовании printf


Printf я здесь использовал для наглядности и простоты. Вопрос возник при попытке внести некоторые изменения в сервис, написанный ещё пару лет назад и всё это время успешно работающий. Как ты понимаешь, в сервисе нет никаких "printf", и вообще "stdio.h" не включен - только API, так вот там в лог ссыпается такая-же фигня после компиляции в VC++2008EE.
А за подсказку спасибо. Работает.
PM MAIL   Вверх
korian
Дата 6.4.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

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



Цитата(polinin @  6.4.2008,  08:39 Найти цитируемый пост)
Printf я здесь использовал для наглядности и простоты

ну значит, проблема в неправильном использовании TCHAR, макроса _T() при написания того сервиса, непонимание зачем они нужны.
VS2008 по стандарту UNICODE проект делает, VS6.0 - мультибайт.
менять это лучше в настройках проекта (а не #undef'ами), а в коде сервиса написать (чтобы потом не забыть, почему оно так работает)
#ifdef UNICODE
#error This code can't to be compile with UNICODE
#endif

или переписать сервис, чтобы он работал как с UNICODE так и с мультибайтом.


Это сообщение отредактировал(а) korian - 6.4.2008, 18:55
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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