Проблема с графиками

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

Проблема с графиками

Сообщение vrodo » 13.11.2003 (Чт) 21:10

Блииииин писал сообчение нажал на предварительный просмотр и оно пропало
Блииииии
Начну заново
Доброе время суток :lol:
У меня проблема со скоростью расчета графика вместо желаемых 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


Буду рад любым советам :lol:

ЗЫ перед просмотром на всякий случай скопирую сообчение в буфер
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

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)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

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)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList  
cron