Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 246
от 19.11.2005, 12:21

Администратор:Калашников О.А.
В рассылке:Подписчиков: 238, Экспертов: 30
В номере:Вопросов: 5, Ответов: 9


Вопрос № 29473: нужно получить системное время и присоить переменным (hour, minute и sec соответствующие значения)...
Вопрос № 29474: Разбираю первую программу под Windows. Все работает. Создается исполняемый файл. Все работает. Через какое-то время снова запускаю Microsoft Visual C++, открываю проект: 1)Sift+F7 -- все нормально; 2)F7 -- теперь говорит Linking... LI...
Вопрос № 29476: При нажатии стрелки вверх переменная temp увеличивается на единицу. Как это реализовать?...
Вопрос № 29477: Я проше прощение, я не написал в вопросе про время среду разработки. Я использую Microsoft Visual Studio 2005 Beta 2, проект - win32 apllication...
Вопрос № 29501: Доброе время суток. Изучаю функции с аргументами переменной длины. В заголовочном файле <stdarg.h> есть следующие определения : typedef char * va_list; #define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )...

Вопрос № 29.473
нужно получить системное время и присоить переменным (hour, minute и sec соответствующие значения)
Отправлен: 13.11.2005, 16:47
Вопрос задал: Liger Dennis (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: mvp
Здравствуйте, Liger Dennis!
Опять таки, вы не указываете, какой у вас компилятор.
Для Builder'a существует функция now() возвращающая текущее время и дату, а присваиваем переменным с помощью DecodeTime.
Пример из help'a.
Два label'a и button. При нажатии на кнопку в метках отображаются текущие дата и время

Приложение:

---------
Моя совесть чиста - не бывшая в употреблении

Ответ отправил: mvp (статус: 10-ый класс)
Отправлен: 13.11.2005, 17:34

Отвечает: estiGi
Здравствуйте, Liger Dennis!
классы CTime, COleDateTime
функции time, _time64
Ответ отправил: estiGi (статус: 6-ой класс)
Отправлен: 13.11.2005, 19:10

Отвечает: RedDevil
Здравствуйте, Liger Dennis!
Пример VC++ 6.0
SYSTEMTIME time;
GetSystemTime(&time); //часовой пояс не учитывается
//GetLocalTime(&time); локальное время, часовой пояс учитывается
char buf[255];
sprintf(buf, "%u %u %u", time.wHour, time.wMinute, time.wSecond);
AfxMessageBox(buf);
Ответ отправил: RedDevil (статус: 1-ый класс)
Отправлен: 15.11.2005, 06:04

Отвечает: Ataman N. N.
Здравствуйте, Liger Dennis!
Если на С, то с использованием time.h. Примерно так:
tm t;
_getsystime(&t);
Где структура tm имеет вид
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
};
Думаю здесь все понятно.
На С++ можно так:
CTime t = CTime::GetCurrentTime();
Класс CTime содержит методы для возвращения секунд, минут, часов, дней и т.д.
Ответ отправил: Ataman N. N. (статус: 2-ой класс)
Отправлен: 15.11.2005, 11:02


Вопрос № 29.474
Разбираю первую программу под Windows. Все работает. Создается исполняемый файл. Все работает. Через какое-то время снова запускаю Microsoft Visual C++, открываю проект:
1)Sift+F7 -- все нормально;
2)F7 -- теперь говорит
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Может я што-то не так делаю. Подскажите.

Приложение:

Отправлен: 13.11.2005, 16:59
Вопрос задал: psevdo (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: DoubleV
Здравствуйте, psevdo!
Здесь стоит обратить внимание на то какой ты файл открываеш.
Если *.cpp, то это неверно надо открывать *.sln.
Потом посмотри какой ты создаеш проект.
В твоем случае это Приложение WIndows (Windows application),
и _main там быть не как не должно.
_main ипользуется с консольными программами.
Возможно надо просто изменить настройки проэкта для этого зайди в меню project->properties и ищи что-то типа WIN32;_DEBUG;_CONSOLE, это надо заменить на WIN32;_DEBUG;_WINDOWS.
Ответ отправил: DoubleV (статус: 1-ый класс)
Отправлен: 13.11.2005, 19:51


Вопрос № 29.476
При нажатии стрелки вверх переменная temp увеличивается на единицу. Как это реализовать?
Отправлен: 13.11.2005, 18:02
Вопрос задал: Liger Dennis (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: estiGi
Здравствуйте, Liger Dennis!
...
case WM_KEYDOWN:
if (wParam == VK_UP)
temp++;
break;
...
Ответ отправил: estiGi (статус: 6-ой класс)
Отправлен: 13.11.2005, 19:08

Отвечает: VampSergey
Здравствуйте, Liger Dennis!
если ответ estiGi не понятен, то могу посоветовать учить WinAPI хотя-бы чуть-чуть!
удачи!
Ответ отправил: VampSergey (статус: 2-ой класс)
Отправлен: 14.11.2005, 23:37


Вопрос № 29.477
Я проше прощение, я не написал в вопросе про время среду разработки. Я использую Microsoft Visual Studio 2005 Beta 2, проект - win32 apllication
Отправлен: 13.11.2005, 18:10
Вопрос задал: Liger Dennis (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: mvp
Здравствуйте, Liger Dennis!
А Вы в следующий раз уточнение к вопросу пишите в мини-форуме вопроса - так будет проще Всем и, так сказать, off-topic-вопросов-уточнений в догонку не будет.
---------
Моя совесть чиста - не бывшая в употреблении
Ответ отправил: mvp (статус: 10-ый класс)
Отправлен: 13.11.2005, 18:20


Вопрос № 29.501
Доброе время суток.
Изучаю функции с аргументами переменной длины.
В заголовочном файле <stdarg.h> есть следующие определения :
typedef char * va_list;
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
#define va_end(ap) ( ap = (va_list)0 )
Для чего они нужны т.е. их описание я прочитал.
Никак не могу "догнать" как работают макросы:
_INTSIZEOF(n), va_start(ap,v) и va_arg(ap,t).
Т.е. в _INTSIZEOF(n) производятся операции очистки битов по маске
(&~) - а зачем ?
Т.е. va_start(ap,v) вроде понятно - вычисляется адрес после указания
количества аргументов ?
Т.е. va_arg(ap,t) вообще не понятно ?
Заранее спасибо за помощь.
Отправлен: 14.11.2005, 06:31
Вопрос задал: Slava_ (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sergey2nk
Здравствуйте, Slava_!
Использование этих функций, проще чем их описания :) Пример их использования привожу в приложении (он взят со стандартного 'man stdarg', поэтому привожу его на случай если используется какой нибудь виндовый компилятор где с man-ами проблема).

Ну а если возникло желание все таки разобраться что там понаписывали разработчики, то слушайте:
- макрос _INTSIZEOF(n) выравнивает величину по размеру указателя (напомню что тип int платформно-зависимый и по его размеру, в данном случае, определяется размер указателя), т.е. этот макрос получает величину не меньшую чем размер указанного типа, но при этом кратную размеру типа int;
- макрос va_start(ap,v) - берет адрес последнего "не динамического аргумента" и увеличивает его переводя к первому "динамическому";
- макрос va_arg(ap,t) - его задача выдать значение из аргументов функции. Но ему еще нужно перейти на следующее значение. Для этого он сначала увеличивает адрес стека динамических параметров функции на размер типа получаемого значения (приведенный к кратному int), поскольку оператор присваивания возвращает значение (как и другие операторы), то это значение снова уменьшается на ту же величину, чтобы получить адрес значения который был на момент обращения к макросу. Ну а потом получившийся указатель приводится к желаемому типу и берется значение по этому адресу.
- макрос va_end(ap) - описывать не буду - из вредности (думаю не обидетесь ;) )

Желаю успехов в программировании

Приложение:

Ответ отправил: sergey2nk (статус: 1-ый класс)
Отправлен: 14.11.2005, 16:33
Оценка за ответ: 5
Комментарий оценки:
Спасибо.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное