Расчет времени (в поиск не отправлять)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
it.egor
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 29.07.2008 (Вт) 13:51

Расчет времени (в поиск не отправлять)

Сообщение it.egor » 30.07.2008 (Ср) 9:58

в поиске уже бывал многократно... ничего не помогло.

есть код, который выполняется очень долго, исп. цикл! не получается сделать расчет времени чтобы прога писала типа: осталось стока-то времени, прошло стока-то, закончится во стока-то...

операции могут длиться неделями!!!!

дайте пож. код для любого цикла.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.07.2008 (Ср) 10:13

А что сложного? Не можешь два числа умножить?
Lasciate ogni speranza, voi ch'entrate.

it.egor
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 29.07.2008 (Вт) 13:51

Сообщение it.egor » 30.07.2008 (Ср) 10:45

причем тут умножить??!?!? топик создан в форуме для новичков.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 30.07.2008 (Ср) 10:50

Ну подели для разнообразия. :) В чем сложность то? Что конкретно не получилось с расчетом времени?
Последний раз редактировалось Viper 30.07.2008 (Ср) 11:02, всего редактировалось 1 раз.
Весь мир матрица, а мы в нем потоки байтов!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.07.2008 (Ср) 10:57

В том, чтобы думать логически, ты тоже новичок?
Код: Выделить всё
TimeStart = Timer
For I = 1 To 1000
  Percent = (I/1000)
  TimeElapsed = Timer-TimeStart
  TimeTotal = TimeElapsed/Percent
  TimeEstimated = TimeTotal-TimeElapsed
  'long operations
Next I

Для начала хватит.
А потом советую прогнозировать изменение времени, а не время (чтобы скачков не было)
Lasciate ogni speranza, voi ch'entrate.

it.egor
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 29.07.2008 (Вт) 13:51

Сообщение it.egor » 30.07.2008 (Ср) 10:57

ладно! топик подниму когда будет хоть какай-то наброска... ожидайте

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Сообщение Alprog » 30.07.2008 (Ср) 11:01

Кинь на форму два лейбла и вставь этот код:

Код: Выделить всё
Dim Start As Single
Dim A As Single
Dim CurTime As Single

Private Sub Form_Load()
    Me.Show
    Start = Timer
    Do
        A = A + 1
        CurTime = Timer - Start
        Label1.Caption = "Время прошло: " & CurTime
        Label2.Caption = "Время осталось: " & CurTime / A * 50000 - CurTime
        DoEvents
    Loop Until A = 50000
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    End
End Sub


Правда сейчас лейбл мерцает, но если операция в цикле будет сложнее, чем A = A + 1, то обновление лейблов станет реже и мерцание исчезнет. Другой способ избавится от мерцания вынести этот код в таймер:

Код: Выделить всё
        CurTime = Timer - Start
        Label1.Caption = "Время прошло: " & CurTime
        Label2.Caption = "Время осталось: " & CurTime / A * 50000 - CurTime
Последний раз редактировалось Alprog 30.07.2008 (Ср) 11:07, всего редактировалось 1 раз.

it.egor
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 29.07.2008 (Вт) 13:51

Сообщение it.egor » 30.07.2008 (Ср) 11:05

вот! вот это дело! наконец-то я дождался!!!! СПАСИБО буду пробовать!!!

помогите пож сразу с форматом времени:
осталось __ дней __ часов __ минут __ секунд

оч буду признателен

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 30.07.2008 (Ср) 11:09

Функция Format поможет тебе вывести время в любом формате, хоть с цветочками по бокам.
Весь мир матрица, а мы в нем потоки байтов!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.07.2008 (Ср) 11:16

А отправлю-ка я тебя в поиск, там все есть.
А тему закрою.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 67

    TopList