Ошибка 5

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Ошибка 5

Сообщение CORBA » 27.06.2005 (Пн) 19:01

Написал такой код. Суть в следующем нарисовать с центра пикчербокса, например 30 линий разной длины, но не больше 1500.
Но почему то приложение рушится на строке вычесляющей длину линии. И выдаёт Runtime Error 5. В чём тут трабла? Заранее благодарен за ответ.
Код: Выделить всё
Private Sub Command1_Click()
Static i As Integer
Dim xc As Integer
Dim yc As Integer
Dim dx As Double
Randomize
xc = Picture1.Width \ 2
yc = Picture1.Height \ 2
i = 0
Do While i < 30
  x = CInt(Rnd * Picture1.Width)
  y = CInt(Rnd * Picture1.Height)
  dx = ((xc - x) ^ 2 - (yc - y) ^ 2) ^ 0.5 'Вот на этом месте рушится
   If CInt(dx) < 1500 Then
    Picture1.Line (xc, yc)-(x, y)
     i = i + 1
   End If
Loop
End Sub
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

darksun
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 26.06.2005 (Вс) 17:49

Сообщение darksun » 27.06.2005 (Пн) 19:16

Я бы попробовал в dx не формулу загонять, а число, если не рушится, то формулу упрощать по-всякому, пока не найдешь место, из-за которого рушится. ИМХО, выводы делать будет гораздо легче.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 27.06.2005 (Пн) 20:39

если (yc - y) ^ 2) отрицательное, то как извлечь корень?
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 27.06.2005 (Пн) 22:34

d3drm, как у тебя квадрат отрицательным получится? ;-)


Дело, конечно, в формуле: вместо минуса посередине должен стоять плюс.
Изображение

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 28.06.2005 (Вт) 23:50

точно, что не ноесть лопухнулся, спасибо за ответ.
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.


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

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

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

    TopList