Недостаточно места в стеке

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

Недостаточно места в стеке

Сообщение grindars » 12.08.2006 (Сб) 11:09

Делаю PHP редактор (для него и нужна была та кнопочка).
Есть две формы: основная и настроек. И такой на форме настроек глюк:
еще при загрузке формы вываливает ошибку "Недостаточно места в стеке" на отмеченной строке. Там еще все не доделано, на всякие TODO и прочее не обращайте внимания. Причем если я там 0 заменю на 2 работает...
Код: Выделить всё
Option Explicit

Private Sub chkMinToTray_Click()
cmdApply.Enabled = True
Select Case chkMinToTray.Value
Case 0
    chkMinToTray.Value = 1
    chkMinTray.Enabled = False
    Exit Sub
Case 1
    chkMinToTray.Value = 0 'тут
    chkMinTray.Enabled = True
    Exit Sub
End Select
End Sub

Private Sub chkMinTray_Click()
cmdApply.Enabled = True
End Sub

Private Sub cmdApply_Click()
    MsgBox "Place code here to set options w/o closing dialog!"
End Sub

Private Sub cmdCancel_Click()
    Unload Me
End Sub

Private Sub cmdOK_Click()
    MsgBox "Place code here to set options and close dialog!"
    Unload Me
End Sub

Private Sub Form_Load()
    Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2
    chkMinToTray = CInt(GetString(HKEY_CURRENT_USER, "Software\PHP Cool Editor\Options", "MinToTray"))
    chkMinTray = CInt(GetString(HKEY_CURRENT_USER, "Software\PHP Cool Editor\Options", "MinTray"))
    If chkMinToTray.Value = 1 Then chkMinTray.Enabled = False
End Sub

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

Сообщение Viper » 12.08.2006 (Сб) 11:19

элементарно! У тебя процедура chkMinToTray_Click вызывает сама себя, поскольку в ней ты меняешь значение флажка, тем самым вызывая процедуру еще раз. Посмотри на стек вызовов
Весь мир матрица, а мы в нем потоки байтов!

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

Сообщение tyomitch » 12.08.2006 (Сб) 11:24

Для начала объясни, какого эффекта ты хочешь достичь своим обработчиком chkMinToTray_Click. Потому что то, что там написано сейчас -- абсолютный бред.
Изображение

Sergey89
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 30.09.2014 (Вт) 10:48

Re: Недостаточно места в стеке

Сообщение Sergey89 » 30.09.2014 (Вт) 11:03

Программа выдает ошибку "Run-time error "28" Недостаточно места в стеке" в выделенном в коде месте. Когда пропускаю ошибку выдает неправильный результат. Подскажите, что не так?

Код:
_______________________________________________
Dim mask()
Dim I



Private Sub Picture1_Click()

Dim x As Integer, y As Integer
Dim w, h

w = Picture1.ScaleWidth - 1
h = Picture1.ScaleHeight - 1

ReDim mask(w, h)

For y = 1 To h - 1
For x = 1 To w - 1

If mask(x, y) = 0 And Picture1.Point(x, y) = vbBlack Then
Mk x, y
I = I + 1
End If

Next x
Next y
Picture1.Refresh
Caption = I
End Sub


Function Mk(x0, y0)
'On Error Resume Next
Dim x, y

If Picture1.Point(x0, y0) = vbWhite Then Exit Function

mask(x0, y0) = I + 1
Picture1.PSet (x0, y0), vbWhite
For y = y0 - 1 To y0 + 1
For x = x0 - 1 To x0 + 1
If Picture1.Point(x, y) = vbBlack Then
Mk x, y
End If
Next x
Next y

End Function


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

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

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

    TopList