Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/58: Рейтинг темы: голосов - 58, средняя оценка - 4.97
Заблокирован

Вывод даты, времени в лог

20.09.2009, 03:06. Показов 10864. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем, в процессе выполнения программы ведется лог-файл.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <time.h>
#include <fstream>
 
using namespace std;
time_t system_time; 
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, 
                   LPSTR lpCmdLine, int nCmdShow)
{
 
g_Log.open("log_main.txt", std::ios::out);
 
if (FAILED( hr = ProgramStartUp("Direct3D") ))
{
    if (hr == Math_FAIL)
   {
    system_time = time(NULL); 
    g_Log << ctime( &system_time ) << "   error: ProgramStartup() failed" <<endl;                             
    }
.....
 
g_Log.close();
return (int)msg.wParam;
} // WinMain
Выводит сейчас:
"Sat Sep 19 17:13:23 2009 (переводит строку)
GetDevice () - OK!"


Как получить запись вида:
[Sat Sep 19 17:13:23 2009] GetDevice () - OK (в одну строку и с выделением красным)

Раньше было так:

Code
1
2
3
4
5
6
7
8
9
10
FILE *pLog=NULL;
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, 
                   LPSTR lpCmdLine, int nCmdShow)
{
   pLog = fopen("log_main.txt", "w");
 
   if (FAILED( hr = ProgramStartUp("Direct3D") ))
   {
      if (hr == Math_FAIL)
     fprintf(pLog, "error: ProgramStartup() failed\n");
Но там небыло вывода даты и времени, и не хотелось использовать устаревшую функцию fprint (с нее ошибки времени исполнения пошли, во время выполнения, отлавить не могу никак, решил ее убрать вообще)

Посоветовали std тут не использовать, а использовать API: "оформляешь строку wsprintf'ом и пишешь WriteFile в лог."

Возможно ли сделать так, как я хочу, и если да, то как?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2009, 03:06
Ответы с готовыми решениями:

Вывод текущей даты и времени в файл
Здравствуйте. Подскажите пожалуйста, что нужно сделать, чтобы текущая дата и время, в заданном формате, выводились в .txt файл, а не в...

Как обновлять функцию в c++ [Вывод даты/времени в консоли]
Я начинающий программист, для первого языка выбрал С++ , прошу помочь с такой задачей. Я написал код программы которая выводит...

Отсчет времени до даты
Нужна программа, которая будет каждую секунду выводить на экран время до 28 июля 2010 года. Заранее спасибо)

4
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.09.2009, 04:24
Да всё возможно, что ты... Но будем последовательны.
Смотри код. Сперва он выводит время и непонятно какую-то сроку GetDevice () на консоль.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main () {
 long int ltime;
 time(&ltime);
 cout<< ctime (&ltime)<< "GetDevice ()"<< endl;
 getchar ();
 return 0;
}
Вот от него и пляши.
Функция ctime преобразует время, хранящееся в строке ltime к такому и никакому другому. А именно: в конце знак перевода на другую строку и знак конца строки.
Значи, напиши свою собственную функцию-аналог сtime, которая бы НЕ вставляла в конец строки \n и перевода не будет.
Что за данные находятся в ltime, прочтёшь здесь.
http://devoid.com.ua/functions... /time.html
В общем, попотеть придётся. Но ты осилишь- такие коды разгребаешь...

Следующий шаг- запись в файл и следующий- разберёшься с красным цветом.
Удачи!

Добавлено через 14 минут
А можно и проще. Значит, пиши так
C++
1
char* uk= ctime (&ltime);
Понял? Теперь uk содержит адрес строки ltime, которая, в свою очередь, содержит ненужный тебе \n
Удаляй его как-нибудь. Дальше по плану.
0
Заблокирован
20.09.2009, 12:45  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
Да всё возможно, что ты... Но будем последовательны.
Смотри код. Сперва он выводит время и непонятно какую-то сроку GetDevice () на консоль.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main () {
 long int ltime;
 time(&ltime);
 cout<< ctime (&ltime)<< "GetDevice ()"<< endl;
 getchar ();
 return 0;
}
Вот от него и пляши.
Функция ctime преобразует время, хранящееся в строке ltime к такому и никакому другому. А именно: в конце знак перевода на другую строку и знак конца строки.
Значи, напиши свою собственную функцию-аналог сtime, которая бы НЕ вставляла в конец строки \n и перевода не будет.
Что за данные находятся в ltime, прочтёшь здесь.
http://devoid.com.ua/functions... /time.html
В общем, попотеть придётся. Но ты осилишь- такие коды разгребаешь...

Следующий шаг- запись в файл и следующий- разберёшься с красным цветом.
Удачи!

Добавлено через 14 минут
А можно и проще. Значит, пиши так
C++
1
char* uk= ctime (&ltime);
Понял? Теперь uk содержит адрес строки ltime, которая, в свою очередь, содержит ненужный тебе \n
Удаляй его как-нибудь. Дальше по плану.

Понял! Спасибо большое! Будем разбираться. Думал пойти более легким путем и функцию лопатить не придется.
Пока взвешиваю все За и Против, стоит ли шкурка выделки...

Добавлено через 25 минут
Кстати, а вот что если сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
   HANDLE hLog = CreateFile(L"main.log",GENERIC_WRITE,FILE_SHARE_READ,0,CREATE_ALWAYS,0,0);
   CHAR TimeStr[MAX_PATH];   
   CHAR DateStr[MAX_PATH];
   GetTimeFormatA(0,TIME_FORCE24HOURFORMAT,NULL,"HH:mm:ss",TimeStr,sizeof(TimeStr));
   GetDateFormatA(0,0,0,(LPSTR)"dd.MM.yyyy",DateStr,sizeof(DateStr));
   CHAR LogStr[MAX_PATH];
   wsprintfA(LogStr,"[%s %s] GetDevice - OK",DateStr,TimeStr);
   DWORD nWritten;
   WriteFile(hLog,LogStr,lstrlenA(LogStr),&nWritten,0);
}
Получаем нужную строку дата, время, функция.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.09.2009, 16:00
Ну и нормально. Можно так было.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <time.h> 
#include <stdio.h>   
int main () {
 FILE* f= fopen ("main.log", "a");
 long int ltime;
 time(&ltime);
 
 //Вся обработка
 char* uk= ctime (&ltime); 
 *(uk+ 24)= 0;
 
 fprintf (f, "[%s] GetDevice - OK", uk);
 fclose (f);
 return 0;
}


...Есть учебник СПЕЦИАЛЬНО по использованию API-функций?
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
20.09.2009, 23:00
Цитата Сообщение от kravam Посмотреть сообщение
по использованию API-функций
Посмотрите здесь
http://vsokovikov.narod.ru/New... x_msdn.htm
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.09.2009, 23:00
Помогаю со студенческими работами здесь

Замена форматов даты и времени
Полностью задание на фотографии, если у кого есть что то на эту тему поделитесь пожалуйста, использовать списки.

Возвращение времени/даты запуска ОС
Доброго времени суток! Столкнулся с проблемой: для проги понадобилось получать время и дату запуска ОС. Гугление не дало результатов (или я...

Запись и извлечение даты и времени из БД
Подскажите как записать дату и время в такой формате 2011/12/16 00:59:41 в Базу данных Postgres из проги на с++ интересует...

Установка системной даты и времени (С++)
Срочно нужна программа, устанавливающая системную дату и время. Помогите, пожалуйста!

Подскажите формат даты/времени
Здравствуйте! Подскажите пожалуйста формат даты/времени 29.03.2016 13:32:49 - &quot;f036ad939589d101&quot; 29.03.2016 22:26:35 -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru