Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
vrodo
-
- Продвинутый пользователь

-
-
- Сообщения: 109
- Зарегистрирован: 09.10.2003 (Чт) 18:45
- Откуда: Дубна МО, Москва
-
vrodo » 13.11.2003 (Чт) 21:10
Блииииин писал сообчение нажал на предварительный просмотр и оно пропало
Блииииии
Начну заново
Доброе время суток
У меня проблема со скоростью расчета графика вместо желаемых 1-1.5 сек получаю 5-6 сек на расчет плюс 3-4 сек на прорисовку
что можете посоветовать?
вот код по которому считает
- Код: Выделить всё
For I = GrMinX To GrMaxX Step DltX
h(I2, 1) = I
StrFormula = TransferFormula(MyStr, Str(I), DltX)
Debug.Print StrFormula
h(I2, 2) = ScriptControl1.Eval(StrFormula)
If minY > h(I2, 2) Then minY = h(I2, 2)
If maxY < h(I2, 2) Then maxY = h(I2, 2)
PB.Value = z
'Me.Refresh
'DoEvents
z = z + 1
I2 = I2 + 1
Next I
Буду рад любым советам
ЗЫ перед просмотром на всякий случай скопирую сообчение в буфер
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ

-
SSSerj
-
- Новичок

-
-
- Сообщения: 27
- Зарегистрирован: 07.11.2003 (Пт) 11:32
SSSerj » 14.11.2003 (Пт) 13:35
Попробуй убрать строчку
Debug.Print StrFormula
Если TransferFormula твоя собственная функция, то попробуй производить вычесления в теле цикла. Вызов функции тоже требует времени.
z = z + 1
Эта строчка кажется совсем лишней. Попробуй писать
PB.Value = I
Задав интервал для PB перед циклом
PB.Max=GrMaxX
PB.Min=GrMinX
P.S. Что делает функция "TransferFormula"?
-
vrodo
-
- Продвинутый пользователь

-
-
- Сообщения: 109
- Зарегистрирован: 09.10.2003 (Чт) 18:45
- Откуда: Дубна МО, Москва
-
vrodo » 14.11.2003 (Пт) 15:19
- Код: Выделить всё
Private Function TransferFormula(MyStr, k As String, sti)
Dim I, z, num
Dim MyStr2
MyStr2 = MyStr
Debug.Print Replace(MyStr2, "[x]", k)
TransferFormula = Replace(MyStr2, "[x]", k)
Debug.Print MyStr
End Function
это быстро выполняется
что самое интересное что поробовал запустить откомпилированную прогу и считаться начало быстрее а рисовать медленнее
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ

-
SSSerj
-
- Новичок

-
-
- Сообщения: 27
- Зарегистрирован: 07.11.2003 (Пт) 11:32
SSSerj » 14.11.2003 (Пт) 15:37
Код это хорошо, а чо за формулу ты получаеш?
-
vrodo
-
- Продвинутый пользователь

-
-
- Сообщения: 109
- Зарегистрирован: 09.10.2003 (Чт) 18:45
- Откуда: Дубна МО, Москва
-
vrodo » 14.11.2003 (Пт) 16:01
Да любую
хоть (tan([x])/cos([x]))*(sin([x])^2)
Сейчас программа вычисляет даже полином 100 степени выше не прыгал
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ

Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Majestic-12 [Bot], SemrushBot и гости: 21