Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> мажет ли фаил exe узнать дату своего воздания 
:(
    Опции темы
Гость_Наташа
  Дата 14.10.2004, 12:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











мажет ли фаил exe узнать дату своего воздания. если да то как и в какой форме.
  Вверх
sergejzr
Дата 14.10.2004, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Если ты его сама писала smile.gif

вставь куда нибудь:
Код

cout<<__DATE__<<endl;

Вообще __DATE__ это строка
Код
char*
и работать ты можешь с ней тоже как со строкой smile.gif


Это сообщение отредактировал(а) sergej.z - 14.10.2004, 13:02


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Гость_Наташа
Дата 14.10.2004, 13:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











я пишу в visual c++ как правельно написать строку чтоб получить дату и в какой форме палучиная дата (т.е. день\месяц\год) или по другому
  Вверх
SSlavon
Дата 14.10.2004, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



CTime t = CTime::GetCurrentTime(); получение системного времени
t.Format("%m.%d.%y") соответственно перевод в формат строки

PM MAIL   Вверх
sergejzr
Дата 14.10.2004, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Месяц день год т. есть сегодня:
Oct 14 2004

Вот тебе игрушка smile.gif Дата разнообразными способами. smile.gif Дополняй, может я забыл какой нибудь biggrin.gif
Код

#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

/*Функция возвратит номер месяца по его имени :)*/
long get_month(const char*month_str);
int main()
{
/*представим день,месяц, год словами*/
char month_str[4];
char day_str[3];
char year_str[5];
/*А так же числами*/
int month;
int day;
int year;


/*
Здесь коплилятор заменит для нас __DATE__ на строку с датой
например сегодня: Oct 14 2004
*/
char* date=__DATE__;

/*Вот так будет выглядеть дата, подаренная компилятором*/
printf("Date of birth as compiler string:\t %s\n",date);

/*разобьём строку на день, месяц,год*/
memcpy(month_str,date,3);
month_str[3]=0;

date+=4;
memcpy(day_str,date,2);
day_str[2]=0;

date+=3;
memcpy(year_str,date,4);
year_str[4]=0;

/*Эта распечатка уже гибче*/
printf("Date of birth as our string:\t\t %s.%s.%s\n",day_str,month_str,year_str);

/*Ну и сделаем числа для удобного пользования*/
month=get_month(month_str);
day=atol(day_str);
year=atol(year_str);

/*А так совсем удобно :)*/
printf("Date of birth as numbers:\t\t %i.%i.%i\n",day,month,year);


/*И ещё раз всё удовольствие потоками :)*/
cout<<endl;
cout<<__DATE__<<endl;
cout<<day_str<<" "<<month_str<<" "<<year_str<<endl;
cout<<day<<" "<<month<<" "<<year<<endl;


return 0;
}

/*Функция возвратит номер месяца по его имени :)*/
long get_month(const char* month_str)
{
int month;

/*Тут в month_array соотношения, имена - число*/
const char * const month_array[]=
 {
  "Jan",
  "Feb",
  "Mar",
  "Apr",
  "May",
  "Jun",
  "Jul",
  "Aug",
  "Sep",
  "Oct",
  "Nov",
  "Dec"
 };

/*Смотрим, какой же наш месяц по счёту*/
for(month=0; month<12; month++)
{
 if(strcmp(month_str, month_array[month])==0)
 {
  return month;
 
 }
}
/*до этого места функция не дойдёт, но надо же компилятор успокоить :)
А вдруг кто нибудь передаст в неё не название месяца, а ерунду какую нибудь :)?*/
return 99;
}

Добавлено @ 14:08
Цитата(SSlavon @ 14.10.2004, 13:05)
CTime t = CTime::GetCurrentTime(); получение системного времени t.Format("%m.%d.%y") соответственно перевод в формат строки

Таким образом ты получишь время выполнения программы, а не время её создания smile.gif


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sergejzr
Дата 14.10.2004, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Наташа, регистрируйтесь у нас пожалуйста smile.gif Вам откроются новые возможности smile.gif



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Гость_Наташа
Дата 14.10.2004, 16:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











спасибо Сергей, но мне надо чтоб если програму переписать то временим создания было время переписки а __DATE__ выдает только время парваначального создания.
  Вверх
Royan
Дата 14.10.2004, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

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



Если программу переписать, придется ее перекомпилировать, а в макросе __DATE__ хранится информация о времени компиляции: http://msdn.microsoft.com/library/default....tm/prepr_18.asp

Это сообщение отредактировал(а) Royan - 14.10.2004, 17:08


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
sergejzr
Дата 14.10.2004, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Первый аргумент содержит имя самого файла. По нему можно узнать о файле всё, что знает ОС. Так же и время smile.gif

Код

#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>

int main(int argc,char**argv)
{

struct _stat buf;
struct tm *filedate;

/* Get data associated with this file, check if statistics are valid: */
if(_stat(argv[0], &buf) != 0)
{
 cout << "Problem getting information" << endl;
 return -1;
}


cout<<argv[0]<<" "<<buf.st_mtime<<endl;
}


Вот только как это(buf.st_mtime) в нормальный формат перевести... Надо искать.. я сейчас очень занят. Может другие участники помогут. Я уверен smile.gif


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Гость_Наташа
Дата 14.10.2004, 18:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сергей, я работаю в visual c++ с MFC и там не изпользуют argv.
  Вверх
sergejzr
Дата 14.10.2004, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Ты имеешь ввиду MFC? Так там скорее всего какой нибудь Application.path или что то в этом роде.
А остальное с каким нибудь
f=CFile(Application.path);
f.creationDate();

Я не занимался MFC, сорри smile.gif
Но посмотрю. Только сперва скажи, это то, что тебя интересовала или я опять ошибся? smile.gif



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Гость_Наташа
Дата 14.10.2004, 18:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











спасибо Сергей, ты правельно понял я работаю с MFC, но я подчоркиваю если фаил переписали мне надо время переписки.
  Вверх
Guest
Дата 14.10.2004, 18:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а после полечения имени делать как ты указал раньще? т.е.

struct _stat buf;
struct tm *filedate;

/* Get data associated with this file, check if statistics are valid: */


if(_stat(path,&buf) != 0) //if(_stat(argv[0], &buf) != 0)
{
cout << "Problem getting information" << endl;
return -1;
}


cout<<argv[0]<<" "<<buf.st_mtime<<endl;
}
  Вверх
sergejzr
Дата 15.10.2004, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Вот короче расформатирование smile.gif эту демку можно запустить как есть, а для твоего MFC модифицировать smile.gif
Код

#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <time.h>

/*Функция возвратит номер месяца по его имени :)*/
long get_month(const char*month_str);
/*Функция возвратит номер дня недели по его имени :)*/
long get_weekday(const char* weekday_str);

int main(int argc,char**argv)
{


/*представим день недели, число,месяц,год,час,минуты, секунды словами*/
char weekday_str[4];
char month_str[4];
char day_str[3];
char year_str[5];
char hours_str[3];
char minutes_str[3];
char seconds_str[3];

/*А так же числами*/
int weekday;
int month;
int day;
int year;
int hours;
int minutes;
int seconds;
char* date=NULL;
char* path=argv[0];//Ну тут достанешь путь из своей MFC :)

struct _stat buf;
/* Get data associated with this file, check if statistics are valid: */
if(_stat(path, &buf) != 0)
{
 cout << "Problem getting information" << endl;
 return -1;
}

date=ctime(&(buf.st_mtime));
/*date теперь: Thu Oct 14 23:16:36 2004*/

cout<<path<<" "<<date<<endl;


/*
Здесь коплилятор заменит для нас __DATE__ на строку с датой
например сегодня: Oct 14 2004
*/

/*Вот так будет выглядеть дата, подаренная компилятором*/
printf("Date of birth as string:\t %s\n",date);

memcpy(weekday_str,date,3);
weekday_str[3]=0;
date+=4;

/*разобьём строку на день, месяц,год*/
memcpy(month_str,date,3);
month_str[3]=0;

date+=4;
memcpy(day_str,date,2);
day_str[2]=0;

date+=3;
memcpy(hours_str,date,2);
hours_str[2]=0;

date+=3;
memcpy(minutes_str,date,2);
minutes_str[2]=0;

date+=3;
memcpy(seconds_str,date,2);
seconds_str[2]=0;

date+=3;
memcpy(year_str,date,4);
year_str[4]=0;

/*Эта распечатка уже гибче*/
printf("Date of birth as our string:\t\t %s:%s:%s %s %s.%s.%s\n",hours_str,minutes_str,seconds_str,minutes_str,weekday_str,day_str,month_str,year_str);

/*Ну и сделаем числа для удобного пользования*/
weekday=get_weekday(weekday_str)+1;//дни будут начинатся с 0, поетому добавлю 1 :)
month=get_month(month_str);
day=atol(day_str);
year=atol(year_str);
hours=atol(hours_str);
minutes=atol(minutes_str);
seconds=atol(seconds_str);


/*А так совсем удобно :)*/
printf("Date of birth as numbers:\t\t %i:%i:%i weekday %i %i.%i.%i\n",hours,minutes,seconds,weekday,day,month,year);

//А вот тут надо удалить указатель :)
delete date;
return 0;
}
/*Функция возвратит номер дня недели по его имени :)*/
long get_weekday(const char* weekday_str)
{
static char* wday_name[] =
{
 "Mon",
 "Tue",
 "Wed",
 "Thu",
 "Fri",
 "Sat",
 "Sun"
   };
int wday;
/*Смотрим, какой же наш день по счёту*/
for(wday=0; wday<12; wday++)
{
 if(strcmp(weekday_str, wday_name[wday])==0)
 {
  return wday;
 
 }
}
return 99;
}
/*Функция возвратит номер месяца по его имени :)*/
long get_month(const char* month_str)
{
int month;

/*Тут в month_array соотношения, имена - число*/
const char * const month_array[]=
 {
  "Jan",
  "Feb",
  "Mar",
  "Apr",
  "May",
  "Jun",
  "Jul",
  "Aug",
  "Sep",
  "Oct",
  "Nov",
  "Dec"
 };

/*Смотрим, какой же наш месяц по счёту*/
for(month=0; month<12; month++)
{
 if(strcmp(month_str, month_array[month])==0)
 {
  return month;
 
 }
}
/*до этого места функция не дойдёт, но надо же компилятор успокоить :)
А вдруг кто нибудь передаст в неё не название месяца, а ерунду какую нибудь :)?*/
return 99;
}

Итак, в этой теме собраны определения 3 различных времен приложения. Это:

Время компиляции,
Время исполнения,
Время модификации файла.




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Гость_Наташа
Дата 15.10.2004, 00:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











спасибо Сергей!!
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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