Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > вывод времени записи


Автор: 2faust 6.4.2009, 15:59
всем привет.
пытаюсь делать некоторую абстрактную запись данных в массив, а за этот период выводить сколько прошло прошло времени.
почему то у меня не меняется прошедшее время (:

Код


void CEx7Dlg::OnBnClickedButton1_Run()
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);

    t = CTime::GetCurrentTime();
    CString tmp;
    char tmp1[10];

    int var1_i = 0 , var2_i = 0;
    hour_init= 0 , min_init= 0 , sec_init= 0 ;

    GetDlgItemText(IDC_EDIT1,tmp);
    sprintf(tmp1,"%S", tmp);
    var1_i = atoi(tmp1);
    GetDlgItemText(IDC_EDIT2,tmp);
    sprintf(tmp1,"%S", tmp);
    var2_i = atoi(tmp1);


    hour_init = t.GetHour();
    min_init = t.GetMinute();
    sec_init = t.GetSecond();
    //msec_init = t.GetTickCount();

    CString tmp2;
    arr = new int [100000000];
    

    GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
    GetDlgItem(IDC_STATIC2)->ShowWindow(SW_SHOW);
    GetDlgItem(IDC_EDIT5)->ShowWindow(SW_SHOW);

    //tmp2.Format(_T(" %2d : %2d : %2d "), hour_init, min_init, sec_init);
    //SetDlgItemText(IDC_EDIT5,tmp2);
    
    for(int i = var1_i; i < var2_i; i++)
    {
        arr[i] = i;
        Sleep(40);
        TimeReturn(tmp2);
        SetDlgItemText(IDC_EDIT5,tmp2);
        UpdateWindow();
    }
    //showMe.ShowWindow(SW_HIDE);
}

CString& CEx7Dlg::TimeReturn(CString& tmp2)
{
    hour_cur =   t.GetHour()     - hour_init;
    min_cur =     t.GetMinute()  - min_init ;
    sec_cur =     t.GetSecond()  - sec_init;
        
    tmp2.Format(_T(" %d : %d : %d "), hour_cur, min_cur, sec_cur);
    return tmp2;
}



Автор: andrew_121 6.4.2009, 16:45
Цитата(2faust @  6.4.2009,  15:59 Найти цитируемый пост)
arr = new int [100000000];

Как то эта цифра смущает меня smile 

Автор: Alca 6.4.2009, 17:18
Код

arr[100000000] = new int() ;


Добавлено через 30 секунд
 smile 

Автор: andrew_121 6.4.2009, 17:35
Цитата(Alca @ 6.4.2009,  17:18)
Код

arr[100000000] = new int() ;


Добавлено @ 17:19
 smile

Ты это где нашел?

Автор: Alca 6.4.2009, 17:38
Цитата

Ты это где нашел?

Цитата

arr = new int [100000000];
//...
arr[i] = i;

Может 2faust хотел массив объявить???... 

Автор: 2faust 6.4.2009, 22:09
 да я ранее написал :
int* arr;

// создаю динамич.. массив 


arr = new int [100000000];

но вопрос не в этом.

почему время у меня не меняется?

Автор: Alca 6.4.2009, 22:13
А это что?
Цитата

Код

arr[i] = i;


Автор: 0xDX 7.4.2009, 02:55
Потому что пишеш что паполо.

Код называется  "какие символы  первые на мысле оказались, после чего заставил компилировать....... "

Автор: xvr 7.4.2009, 12:03
Время не меняется потому, что ты его выводишь из переменной t, которую присвоил в 6й строке, а цикл у тебя крутится дальше, и в нем t не меняется

Автор: 2faust 10.4.2009, 00:24
Цитата(xvr @ 7.4.2009,  12:03)
Время не меняется потому, что ты его выводишь из переменной t, которую присвоил в 6й строке, а цикл у тебя крутится дальше, и в нем t не меняется

как так не меняется, в цикле есть ф-ция, в которой и происходят все основные изменения с перемен. t.

Автор: Earnest 10.4.2009, 06:50
Я тоже вижу только одно присваивание t, а дальше только использование. 
Твоя TimeReturn тоже t не меняет. Или ты думаешь, раз присвоил t текущее время, то оно дальше само будет обновляться?
Кроме того, учти, что t измеряется в целых секундах. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)