Permalink
Cannot retrieve contributors at this time
title | keywords | f1_keywords | ms.prod | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|
Out of stack space (Error 28) |
vblr6.chm1000028 |
vblr6.chm1000028 |
office |
ce345551-ad57-1120-546a-239d144c330a |
06/08/2017 |
medium |
The stack is a working area of memory that grows and shrinks dynamically with the demands of your executing program. This error has the following causes and solutions:
-
You have too many active Function, Sub, or Property procedure calls. Check that procedures aren’t nested too deeply. This is especially true with recursive procedures, that is, procedures that call themselves. Make sure recursive procedures terminate properly. Use the Calls dialog box to view which procedures are active (on the stack).
-
Your local variables require more local variable space than is available.
Try declaring some variables at the module level instead. You can also declare all variables in the procedure static by preceding the Property, Sub, or Function keyword with Static. Or you can use the Static statement to declare individual Static variables within procedures.
-
You have too many fixed-length strings. Fixed-length strings in a procedure are more quickly accessed, but use more stack space than variable-length strings, because the string data itself is placed on the stack. Try redefining some of your fixed-length strings as variable-length strings. When you declare variable-length strings in a procedure, only the string descriptor (not the data itself) is placed on the stack. You can also define the string at module level where it requires no stack space. Variables declared at module level are Public by default, so the string is visible to all procedures in the module.
-
You have too many nested DoEvents function calls. Use the Calls dialog box to view which procedures are active on the stack.
-
Your code triggered an event cascade. An event cascade is caused by triggering an event that calls an event procedure that’s already on the stack. An event cascade is similar to an unterminated recursive procedure call, but it’s less obvious, since the call is made by Visual Basic rather than by an explicit call in your code. Use the Calls dialog box to view which procedures are active (on the stack).
To display the Calls dialog box, select the Calls button to the right of the Procedure box in the Debug window or choose the Calls command. For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).
[!includeSupport and feedback]
denis76 Пользователь Сообщений: 22 |
#1 31.05.2016 15:23:02 Добрый день! Столкнулся неожиданно с такой ситуацией: при вызове вложенной процедуры в VBA появляется указанное сообщение об ошибке:
Собственно говоря, процедура довольно громоздкая, обрабатывает и пересчитывает массивы данных размером примерно 10000*200 ячеек… хотя работала до сего времени вполне нормально… Собственно говоря, в чем здесь может быть причина появления такого сообщения: Какие тут способы решения имеются — может, надо как-то уничтожать переменные после использования, очищать стек — как это сделать?… Может, какие-то параметры в реестре надо подправить или еще где?.. Что известно по данному вопросу уважаемым специалистам?.. Спасибо заранее… |
||
Sanja Пользователь Сообщений: 14837 |
Собственно говоря почему-бы не в ПОИСК ? Согласие есть продукт при полном непротивлении сторон. |
denis76 Пользователь Сообщений: 22 |
#3 31.05.2016 15:46:06 Хорошо… Вот, смотрю, там 5 случаев указано, к моему может, видимо, это относиться:
Все равно странно, больше всего ведь места массивы занимают, но не на них ошибка вылезает… Еще вот, смотрю в редакторе VBA — там такая закладка Call stack — почему-то в ней список в 50 с лишним процедур, когда у меня столько их одновременно не вызывается… и некоторые повторяются почему-то… |
||
Нет файла — нет идей, что тут не понятно. |
|
Игорь Пользователь Сообщений: 3621 |
Причина — большой размер массивов Как вариант еще одной причины, — вызов функций с аргументами в виде больших массивов |
denis76 Пользователь Сообщений: 22 |
#6 31.05.2016 16:12:19
Глубоко сомневаюсь, что данный файл кому-то разбирать охота будет… но думаю, что основные варианты можно предположить и без его досконального исследования… |
||
denis76 Пользователь Сообщений: 22 |
#7 31.05.2016 16:14:51
Про массивы — да, все так, но ведь он не выдает Out of memory (это прошло с установкой 64-битной версии), а вот на стек именно ругается-то… А каков этот стек и его допустимый размер — мне пока неведомо… |
||
denis76 Пользователь Сообщений: 22 |
#8 31.05.2016 16:17:04
Так вроде бы по умолчанию они так и передаются, нет разве?.. И вроде как лишних копий не делается… Изменено: denis76 — 01.06.2016 22:06:07 |
||
Hugo Пользователь Сообщений: 23137 |
Мне стека не хватало пару раз из-за рекурсии. |
denis76 Пользователь Сообщений: 22 |
Разобрался, в чем дело… когда начал код улучшать, нашел место, где процедуры вызывают одна другую поочередно… |
Hugo Пользователь Сообщений: 23137 |
#11 01.06.2016 12:07:48 Т.е. тоже виновата рекурсия? |
Can anyone help me? I have to calculate 2 given values and check those values by Bisection Method…But I got this message ‘Run-time error ’28’ out of stack space’ I’m not sure why my program is error. I think it may be because I called sub-routine from function. Also I have many do-while loops inside the function. I checked many times but I still can’t solve the problem.
I’m really in hurry as I have to submit this result to my Professor next 2 days…After that I have to write paper to conference which the deadline for submission is next Tuesday!!
Here is my code:
Public N, NV, noloop, j, k As Integer
Public CCSO, CCEO, CCEU, CTSO, CTEO, CTEU, SE, SE5, SSY, SEY, DCE, EC, EO, P, EEND, HL, H, B, ASQ, AST, D1, D2, SO, SP As Double
Public FSU, FEU, EF, tf, WSY, EW, DW, ASW As Double
Public DH, DHL, CE1, ES, ROLS, ROLW, ROLF As Double
Public E50U, E50H, ZZ, E20C, CCS As Double
Public SSU, SEU, ESH, SEH, SS As Double
Public EWi, ESi, ECi, FCCi, C1, C2, nf, xf As Double
Public CCE, CE(1000, 1), E(1000, 1), S(1000, 1) As Double
Public fa, fb, ffa, ffb As Double
Public gxg, gEg, F As Double
Public aa, bb, cc, aaa, bbb, ccc As Double
Public Tcpz(1000, 1), Vcpz(1000, 1), Vcp(1000, 1), Lstr(1000, 1), Lweb(1000, 1), Lcom(1000, 1), Tstr(1000, 1), Vstr(1000, 1), Vcom(1000, 1), Vweb(1000, 1), Vfrp(1000, 1), VT(1000, 1) As Double
Public EWW(1000, 1), Ewg(1000, 1), xes(1000, 1), SEx5(1000, 1), xe(1000, 1) As Double
Public Sub sheardeformation()
‘*******************************************CALCULATION OF SHEAR POTENTIAL**************************************************************’
‘******************************************************************************************************************************’
‘Start —- Get value of inputs
Sheets(«Input»).Select
HL = Range(«F3»).Value
NV = Range(«F4»).Value
H = Range(«F7»).Value
B = Range(«F8»).Value
ASQ = Range(«F9»).Value
AST = Range(«F11»).Value
D1 = Range(«F10»).Value
D2 = Range(«F12»).Value
P = Range(«F13»).Value
SO = Range(«F15»).Value
N = Range(«F18»).Value
DCE = Range(«F19»).Value
EEND = Range(«F20»).Value
CCSO = Range(«F24»).Value
CCEO = Range(«F25»).Value
CCEU = Range(«F26»).Value
CTSO = Range(«F27»).Value
CTEO = Range(«F28»).Value
CTEU = Range(«F29»).Value
EO = Range(«F30»).Value
SSY = Range(«F32»).Value
SEY = Range(«F33»).Value
FSU = Range(«F35»).Value
FEU = Range(«F36»).Value
EF = Range(«F37»).Value
tf = Range(«F38»).Value
nf = Range(«F39»).Value
WSY = Range(«F41»).Value
EW = Range(«F42»).Value
SP = Range(«F43»).Value
DW = Range(«F44»).Value
ASW = Range(«F45»).Value
‘End —- Get value of inputs
‘——————————————————————————————————————————‘
‘——————————————————START CALCULATION——————————————————-‘
EC = EO ‘/ 1000000#
DH = H / N
DHL = HL / NV
CE1 = P * 1000 / B / H / EC ‘ + SEY
ES = SSY / SEY
ROLS = 2.87 / 200
ROLW = 2 * ASW / (H — D1 — D2) / SP
ROLF = 2 * tf * nf / H
‘Initialized
For j = 0 To 1000
For k = 0 To 1
CE(j, k) = 0
Next
Next
k = 0
j = 0
‘——————————————————————————————————————————‘
‘——————————————————FIRST PROCEDURE STARTPOINT——————————————————-‘
TE = CE1 — DCE
STARTPOINT:
k = 0
j = j + 1
noloop = j
CE(j, 0) = CE1 + DCE + CE(j — 1, 0) ‘given strain at top fiber
If CE(j, 0) > EEND Then GoTo WRITEOUT5
GoSub XECAL ‘go to procedure XECAL to calculate xg (xe given)
GoSub SHEAR
GoTo STARTPOINT ‘SET LOOP
‘——————————————————————————————————————————‘
‘——————————————————WRITE OUTPUT TO EXCEL——————————————————-‘
WRITEOUT5:
Sheets(«Shear1»).Select
Range(«A4:BZ1002»).Select
Selection.ClearContents
Range(«A3»).Select
j = 1
Do While j <= noloop — 1
ActiveCell.Offset(j, 0).FormulaR1C1 = CE(j, 0)
ActiveCell.Offset(j, 1).FormulaR1C1 = EWW(j, 0) ‘Average Strain in Stirrup
ActiveCell.Offset(j, 2).FormulaR1C1 = SEx5(j, 0)
ActiveCell.Offset(j, 3).FormulaR1C1 = xes(j, 0) ‘Average Strain in Stirrup
ActiveCell.Offset(j, 4).FormulaR1C1 = VT(j, 0)
ActiveCell.Offset(j, 5).FormulaR1C1 = Tcpz(j, 0)
ActiveCell.Offset(j, 6).FormulaR1C1 = Tstr(j, 0)
ActiveCell.Offset(j, 7).FormulaR1C1 = Vcpz(j, 0)
ActiveCell.Offset(j, 8).FormulaR1C1 = Vcom(j, 0)
ActiveCell.Offset(j, 9).FormulaR1C1 = Vcp(j, 0)
ActiveCell.Offset(j, 10).FormulaR1C1 = Vstr(j, 0)
ActiveCell.Offset(j, 11).FormulaR1C1 = Vweb(j, 0)
ActiveCell.Offset(j, 12).FormulaR1C1 = Vfrp(j, 0)
ActiveCell.Offset(j, 13).FormulaR1C1 = Vcp(j, 0) + Vstr(j, 0)
ActiveCell.Offset(j, 14).FormulaR1C1 = Vcp(j, 0) + Vstr(j, 0) + Vweb(j, 0)
ActiveCell.Offset(j, 15).FormulaR1C1 = Vweb(j, 0) + Vfrp(j, 0)
j = j + 1
Loop
Exit Sub
TSTRAIN:
If Abs(EWW(j, k)) < (WSY / EW) Then
EWi = EW
Else: EWi = WSY / Abs(EWW(j, k))
End If
C1 = Exp(-0.1785 * Sqr(ROLW * EWi + ROLF * EF) — 0.7721 / ROLS / ESi)
C2 = 1 + (1 / Abs(FCCi)) ^ 0.2
EWW(j, k) = 0.01658 * Sqr(Abs(FCCi)) / (Sqr(HL / H) + 1) * C1 * C2 ‘Average strain of transverse steel
Return
Return
‘——————————————————————————————————————————‘
‘——————————————————CALCULATE XE—————————————————————-‘
XECAL:
SUMxe = False
SUMxe2 = False
aaa = 10 ‘Lower Bound of neutral axis in shear-flexural region
bbb = 400 ‘Upper Bound (not sure so given value is equal to H of section)
aa = 0.0001 ‘Lower Bound of transverse strain
bb = 0.1 ‘Upper Bound ,Set bb is 10^6 times of aa
Do While SUMxe <> True
ffa = FF(aaa, aa) ‘Upper Bound given Xe and Transverse Strain
ffb = FF(bbb, bb) ‘ Lower Bound
‘GoSub TRANS ‘To calculate Transverse Straign
If ffa * ffb <= 0 Then
‘START BISECTION METHOD
Do While SUMxe2 <> True
ccc = (aaa + bbb) / 2
ffc = FF(ccc, cc)
If Abs(ffc) < 0.001 Then SUMxe2 = True
If ffa * ffc > 0 Then
bbb = ccc
Else: aaa = ccc
End If
Loop
xes(j, k) = ccc
If Abs(ffc) < 0.001 Then Sum = True
End If
If ffa * ffb > 0 Then
bbb = 2 * bbb
SUMxe = False
End If
Loop
Return
‘——————————————————————————————————————————
‘——————————————Calculate Shear Force————————————————————————
SHEAR:
‘Shear in Compression Zone : Vcpz = b*xe*Tcp, xe is compression depth this means neutral axis depth
‘SHEAR AND NORMAL STRESS
Ang1 = Atn((H — D1) / HL) ‘constant value..depends on a/d ratio =Atn is a math function return in radian
Tcpz(j, 0) = 0.65 * Sin(Ang1) * Cos(Ang1) * FCCi
Vcpz(j, 0) = B * xes(j, 0) * Tcpz(j, 0) / 1000 ‘change in each load step due to variation of Neutral axis depths
Lcom(j, 0) = (HL / H) * xes(j, 0)
Lstr(j, 0) = H — xes(j, 0)
Lweb(j, 0) = Lstr(j, 0) / Tan(45 * 22 / 7 / 180)
BETA = 32 * (1 — (P / H / B / Abs(FCCi)) ^ 0.5) * 22 / 7 / 180
sigcom = 0.64 * (H — D1) / HL * (Sin(BETA)) ^ 2 * FCCi
Vcom(j, 0) = sigcom * B * Lcom(j, 0) / 1000
Vcp(j, 0) = Vcpz(j, 0) — Vcom(j, 0)
AngCR = 45 * (1 — (P * 1000 / B / H / Abs(FCCi)) ^ 0.7) * 22 / 7 / 180
Tstr(j, 0) = (0.166 * (Log(ROLW * EWi + ROLF * EF) / Log(2.718282)) — 0.12058) * (0.0802 * (Log(ROLS * ESi) / Log(2.718282)) — 0.06335) * Sin(AngCR) * FCCi
‘Tstr(j, 0) = 1.28 * Exp(-11.2 * 1 / Abs(FCCi)) * Abs(FCCi) ^ (1 / 3) / (Sqr(HL / (H — D1)) + 1)
‘SHEAR FORCE
Vstr(j, 0) = B * Lstr(j, 0) * Tstr(j, 0) / 1000
Vweb(j, 0) = B * Lweb(j, 0) * ROLW * EWW(j, k) * EWi / 1000
Vfrp(j, 0) = B * Lweb(j, 0) * ROLF * EWW(j, k) * EF / 1000 ‘EF is very low so Vfrp cannot show the precise value
VT(j, k) = Vcp(j, 0) + Vstr(j, 0) + Vweb(j, 0) + Vfrp(j, 0)
Return
End Sub
Public Function FF(xg, Eg)
gEg = Eg
gxg = xg
Call MAT ‘STACK PROBLEM IS HERE !!!
nf = ESi / (FCCi / E(1, j))
xf = (H — D1) * (-nf * ROLS + Sqr(Sqr(nf * ROLS) + 2 * nf * ROLS)) ‘Flexure Only
xes(j, 0) = xf * (1 — Exp(-0.42 * HL / (H — D1))) / (1 + 3.2 ^ (-0.12 * (ROLW * EWi + ROLF * EF) ^ 0.4)) * (1 + (1 / Abs(FCCi)) ^ 0.7) * (1.25 * Exp(-0.08 * ROLS * ESi / 1000))
FF(xg, Eg) = xes(j, 0) — xg
End Function
Public Sub MAT()
‘Tension Most Steel
SE5 = CE(j, k) * (H — D1 — gxg) / gxg
SE = SE5
SEx5(j, k) = SE5
‘Concrete
E(1, j) = CE(j, k) * (H — DH * 1 + DH / 2) / gxg
CCE = E(1, j)
‘ Compression
If CCE >= 0 Then
E50U = (3 + 0.002 * CCSO / 0.00689) / (CCSO / 0.00689 — 1000)
E50H = 3 / 4 * ROLS * Sqr(H — 2 * D1) / Sqr(SP)
ZZ = 0.5 / (E50U + E50H — 0.002)
E20C = 0.8 / ZZ + 0.002
‘Fracture Energy
If CCE <= 0.002 Then
CCS = CCSO * ((2 * CCE / 0.002) — (CCE / 0.002) ^ 2)
ElseIf CCE <= E20C Then
CCS = CCSO * (1 — ZZ * (CCE — 0.002))
Else: CCS = 0.2 * CCSO
End If
End If
‘ Tension
If CCE < 0 Then
CTSU = CTSO * 0.85
HE = -CCE
If HE <= CTEO Then
CCS = -CTSO * (2 * (HE / CTEO) — (HE / CTEO) ^ 2)
ElseIf HE <= CTEU Then
CCS = -((CTSU — CTSO) / (CTEU — CTEO) * (HE — CTEU) + CTSU)
‘CCS = -CTSO + CTSO * (HE — CTEO) / (CTEU — CTEO)
Else: CCS = -0.2 * CTSO
End If
End If
‘STIFFNESS
FCCi = (CCSO + CCS) / 2
ECi = (CCSO + CCS) / 2 / CCE
‘End — Stress-Strain of Concrete
SSU = 1.2 * SSY ‘Ultimate stress of steel based on JSCE seismic specification
SEU = 30 * SEY ‘Ultimate strain of steel
ESH = (SSU — SSY) / (SEU — SEY)
SEH = 0.018 ‘hardening strain
‘ESH = 0.5 * SSY / (49 * SEY) ‘ too big!!
‘ Compression
If SE >= 0 Then
ElseIf SE <= SEH Then
SS = SSY
ElseIf SE > SEH Then
SS = ESH * SE + SSY
‘ End If
End If
‘ Tension
If SE < 0 Then
SE = -SE ‘SE is + to check with SEY
ElseIf SE <= SEH Then
SS = -SSY
ElseIf SE > SEH Then
SS = -ESH * SE — SSY
‘ End If
End If
ESi = Abs(SS / SE)
‘End — Stress-Strain of Steel
SUMEW = False
SUMEW2 = False
Do While SUMEW <> True
fa = Fstrain(ESi, FCCi, aa)
fb = Fstrain(ESi, FCCi, bb)
If (fa * fb) <= 0 Then
Do While SUMEW2 <> True
‘Calculate Transverse reinforcement Stiffness
cc = (aa + bb) / 2
fc = Fstrain(ESi, FCCi, cc)
If Abs(fc) < 0.00001 Then SUMEW2 = True
If fb * fc > 0 Then
bb = cc ‘Upper = Midpoint
Else: aa = cc ‘Lower=Midpoint
End If
Loop
EWW(j, k) = cc
If Abs(fc) < 0.00001 Then SUMEW = True
End If
If (fa * fb) > 0 Then
bb = 2 * bb ‘Increase to 2 times
SUMEW = False
End If
Loop
End Sub
Function Fstrain(ESi, FCCi, Eg)
If Abs(Eg) < (WSY / EW) Then
EWi = EW — 0.0001 * Eg
Else: EWi = WSY / Abs(Eg)
End If
C1 = Exp(-0.1785 * Sqr(ROLW * EWi + ROLF * EF) — 0.7721 / ROLS / ESi)
C2 = 1 + (1 / Abs(FCCi)) ^ 0.2
Fstrain = 0.01658 * Sqr(Abs(FCCi)) / (Sqr(HL / H) + 1) * C1 * C2 — Eg
End Function
-
#1
[FONT="]I have created a database that takes one query that has a blank field in a predetermined field and finds a record in a second query that matches name and date of birth criteria. it pulls the value into the blank field that is supposed to be there.
MR missing in query one….find record in query two that matches additional predetermined variables and pull MR from query two and add to query one.
I have a cumbersome VBA that accomplishes this but after every 19 records i get error message pop up that says «run-time error 28 out of stack space»
I have search all of the forums and have not found a viable solution. there is my code. to set up the scenario i have a form that i open first. using Onload the form opens a query and another form for that query where it has found the matching record. the second form that is opened uses this code where the error occurs.[/FONT]
[FONT="]Private Sub Form_Load()
On Err GoTo errhand
Dim mr As String
Dim queryname As String
Dim dbs As DAO.Database
Dim rec1 As DAO.Recordset
DoCmd.Close acForm, «blank MRN Records», acSaveNo
Set dbs = CurrentDb
queryname = «refill_Requests Query»
Set rec1 = dbs.OpenRecordset(queryname) ‘ dbOpenDynaset, dbSeeChanges)
mr = Me.FTMedRecNo
rec1.Edit
rec1(«Patient MRN») = mr
rec1.Update
rec1.Close
DoCmd.Close acQuery, «mmdblist», acSaveYes
DoCmd.Close acForm, «mmdblist», acSaveNo
DoCmd.OpenForm «blank MRN Records», acNormal
errhand:
Err.Clear
DoCmd.Close acQuery, «mmdblist», acSaveYes
DoCmd.Close acForm, «mmdblist», acSaveNo
DoCmd.OpenForm «blank MRN Records», acNormal
End Sub[/FONT]
[FONT="]my on error doesn’t catch error 28 because it stops mid code.
the procedure works well for 19 records then boom it stops.
I have currently a total of 3500 records to repair with a MR. how can i get this to run all the way to the end without causing error 28?[/FONT]
-
#2
You don’t need any of this code. Just run an update query.
-
#3
[FONT="]I have a cumbersome VBA that accomplishes this but after every 19 records i get error message pop up that says «run-time error 28 out of stack space»[/FONT]
The «Out of stack space»-error is most likely caused by a recursive calls of a VBA procedure in your code.
Hard to say where and why that happens. You can best analyze it by stepping through you code executing it line by line. If you recognize some sort of recursive loop, you probably found the culprit.
But anyway, Ranman256 is right, you can do the same more efficiently with an update query.
-
#4
You can view the call stack. When that error appears, does it break into the debugger? If so, hit ctrl+L, or go to the view menu, and open the call stack viewer, and you can see the list of routines that have been run and are still executing. Follow them back to the initial call, and you can see where it all started.
-
#5
I agree with #2, use an update query.
As to the stack overflow, it seems a funny place to be updating records one by one in a Form load event. If you really want to edit records one by one, use a loop.
-
#6
thank you all for your quick responses. I am self taught with using VBA and still learning. I looked up update query and what i saw was if you want the same information in the field or update information in a field to change to another description. i have a blank field that should have a number that is unique to the persons name in that field. update query sounds like a better way to do it, but the turorials online are not clear how to match the persons name in destination query with the persons name found in the look up table where i can pull that unique number.
I am all about easy and efficient. I tried creating a loop at first but after the record was updated, i could not get it to advance to the next record. it basically dumped the first unique number in all of the records which is not what i wanted.
the current code i built in stages. i got the logistics worked out for finding the correct record and data, then got it to replace the blank field with the correct data.
would someone mind giving me an example how to build an update query that will match criteria of first name, last name and birthdate with a record in the lookup table then pulling only the MR (med rec number) and save it in the query table please?
-
#7
once again thank you all for your replies. the loop suggestion worked and was able to have it work as i intended. thank you for the suggestions on update query. i am going to research that option for any future projects.
-
#8
You can view the call stack. When that error appears, does it break into the debugger? If so, hit ctrl+L, or go to the view menu, and open the call stack viewer, and you can see the list of routines that have been run and are still executing. Follow them back to the initial call, and you can see where it all started.
This was an much, much more helpful direction than the one provided by Microsoft (almost always too technical and too vague to be of any help) at https://docs.microsoft.com/en-us/of…er-interface-help/out-of-stack-space-error-28. Thank you, Mark K. You helped me find the cause of a similar problem with Run-time error ’28’.
-
#9
Glad you found it useful. All the best,
t17fenics 0 / 0 / 0 Регистрация: 11.03.2015 Сообщений: 4 |
||||
1 |
||||
11.03.2015, 12:47. Показов 3450. Ответов 7 Метки нет (Все метки)
Добрый день.
Подскажите пожалуйста, в чем может быть проблема?
__________________
0 |
Заблокирован |
|
11.03.2015, 12:57 |
2 |
Вы не пробывали перевести ваше сообщение и понять что оно озночает ?
0 |
Заблокирован |
|
11.03.2015, 13:15 |
3 |
check
Test1 Что означают эти загадочные буквосочетания?
0 |
0 / 0 / 0 Регистрация: 11.03.2015 Сообщений: 4 |
|
11.03.2015, 13:20 [ТС] |
4 |
Сорри, не вычистил при публикации.
0 |
Заблокирован |
|
11.03.2015, 13:24 |
5 |
out of stack происходит обычно при непродуманном рекурсивном вызове процедур друг из друга, что наглядно демонстрирует ваш случай.
0 |
0 / 0 / 0 Регистрация: 11.03.2015 Сообщений: 4 |
|
11.03.2015, 13:32 [ТС] |
6 |
Хм. ошибка проявляется только после 6000 запусков этих процедур.
0 |
Заблокирован |
|
11.03.2015, 13:42 |
7 |
Воспользуйтесь ключевыми словами .. is Nothing, если не иностранец..
0 |
0 / 0 / 0 Регистрация: 11.03.2015 Сообщений: 4 |
|
11.03.2015, 14:23 [ТС] |
8 |
Вобщем осознал корень проблемы. Спасибо Апострофф Код просчитывающий движение надо как то по другому писать. без бесконечного вызова процедур друг из друга.
0 |