Страница: 1 | 2 |
Вопрос: Программа глючит на ровном месте.
Добавлено: 23.05.07 16:41
Автор вопроса: WFS
Ответы
Всего ответов: 21
Номер ответа: 16
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #16
Добавлено: 24.05.07 10:18
Кстати, чем все-таки Dim отличается от Static
Номер ответа: 17
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #17
Добавлено: 24.05.07 10:48
Быстродействием, например
Private Sub Form_Load()
Static a As Long
Dim b As Long
Dim lngIndex As Long, lngCount As Long
Dim t As Double
t = 0.01
t = Timer
For lngIndex = 1 To 100000000
a = a + 1
Next
Debug.Print "STATIC = "; Timer - t
t = Timer
For lngIndex = 1 To 100000000
b = b + 1
Next
Debug.Print "IM = "; Timer - t
End Sub
Проц: Intel Celeron, 2233 MHz (22 x 102)
Мать: Gigabyte GA-8PE800 (5 PCI, 1 AGP, 3 DDR DIMM, Audio)
ОЗУ: 512 Мб (PC3200 DDR SDRAM)
DIM = 3,70031249999738
Номер ответа: 18
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #18
Добавлено: 24.05.07 13:49
В основном тем, что static-переменные сохраняют свое значение между вызовами функций, в которых описаны.
Номер ответа: 19
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #19
Добавлено: 24.05.07 14:52
Sharp, они как бы в стек не ложатся при рекурсии чтоли?
Во! Я так и понял. Кстати полезная штука.
Private Sub Form_Load()
R
R
End Sub
Sub R()
Static A
A = A + 1
MsgBox A
End Sub
А вот с DIM'om такое не катит
Private Sub Form_Load()
R
R
End Sub
Sub R()
Dim A
A = A + 1
MsgBox A
End Sub
Номер ответа: 20
Автор ответа:
Champion
ICQ: 461506481
Вопросов: 38
Ответов: 88
Web-сайт:
Профиль | | #20
Добавлено: 24.05.07 20:38
в жизни не использовал Global)
Номер ответа: 21
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #21
Добавлено: 25.05.07 12:46
Статические переменные в основном хранятся в куче, локальные - в стеке.