powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Упрощение кода
93 сообщений из 93, показаны все 4 страниц
Упрощение кода
    #38908602
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите пожалуйста как максимально можно упростить этот код( Думал циклом, но вряд ли получится. По крайней мере не вижу как.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Public Sub procMoovingBlocks(ByVal VB As Single, ByVal Raznica As Integer)
  Gate7_Point1 VB, Raznica
End Sub
Private Sub Gate7_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1578 * VB ^ 2 + 13.443 * VB - 179.19
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate5_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
End Sub
Private Sub Gate5_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.16516 * VB ^ 2 + 14.052 * VB - 187.3005
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate3_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
        ' Открываем затвор5_1
End Sub
Private Sub Gate3_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1553 * VB ^ 2 + 13.17 * VB - 175.57
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate4_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
        ' Открываем затвор5_1
        ' Открываем затвор3_1
End Sub
Private Sub Gate4_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1578 * VB ^ 2 + 13.443 * VB - 179.19
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate6_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
        ' Открываем затвор5_1
        ' Открываем затвор3_1
        ' Открываем затвор4_1
End Sub


PS Открываем затвор - будующие процедуры, которые в дальнейшем будут двигать графически нужный затвор на нужную ступень
...
Рейтинг: 0 / 0
Упрощение кода
    #38908611
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем они отличаются? Константами? Загнать константы в массив или БД и использовать одну процедуру
...
Рейтинг: 0 / 0
Упрощение кода
    #38908612
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смысл в том, что таких процедур - Gate..Point.. будет 72, поэтому могу себе представить до каких размеров вырастит код
Заранее спасибо!!!!!!!!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
Упрощение кода
    #38908615
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тебя уже учил НЕ ПОВТОРЯЙ КОД

делай это сразу, еще до его написания
...
Рейтинг: 0 / 0
Упрощение кода
    #38908617
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЯ тебя уже учил НЕ ПОВТОРЯЙ КОД
Поэтому и задал такой вопрос, потому что не хочу повторять код. Во-первых это неправильно, во-вторых море время займет.
Если бы знал как сделать не отписывал бы
...
Рейтинг: 0 / 0
Упрощение кода
    #38908628
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если по коду не понятно, то мне нужно в СТРОГОЙ последовательности пройтись по процедурам(всего 72). И наткнувшись в очередной процедуре на удовлетворяющее условие, выполнить движение объектов( тех затворов-процедур, которые были пройдены)
Не знаю понятно или нет
...
Рейтинг: 0 / 0
Упрощение кода
    #38908637
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. если прошли Gate7_Point1, Gate5_Point1,Gate3_Point1 и на Gate4_Point1 условие выполнилось, то нужно выполнить Move7_1, Move5_1, Move3_1
...
Рейтинг: 0 / 0
Упрощение кода
    #38908639
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

не увидела начальных значений
--RememberVSB
--Con1
...
Рейтинг: 0 / 0
Упрощение кода
    #38908651
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАне увидела начальных значений
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
Option Explicit
Private intVSB As Integer  ' &#194;&#238;&#228;&#238;&#241;&#225;&#240;&#238;&#241;
Private Const Con1 = 50
Private RememberVSB As Integer

Public Sub procMoovingBlocks(ByVal VB As Single, ByVal Raznica As Integer)
  Gate7_Point1 VB, Raznica
End Sub

Private Sub Gate7_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1578 * VB ^ 2 + 13.443 * VB - 179.19
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate5_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
End Sub
Private Sub Gate5_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.16516 * VB ^ 2 + 14.052 * VB - 187.3005
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate3_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
        ' Открываем затвор5_1
End Sub
Private Sub Gate3_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1553 * VB ^ 2 + 13.17 * VB - 175.57
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate4_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
        ' Открываем затвор5_1
        ' Открываем затвор3_1
End Sub
Private Sub Gate4_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1578 * VB ^ 2 + 13.443 * VB - 179.19
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate6_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
        ' Открываем затвор5_1
        ' Открываем затвор3_1
        ' Открываем затвор4_1
End Sub
...
Рейтинг: 0 / 0
Упрощение кода
    #38908676
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronТ.е. если прошли Gate7_Point1, Gate5_Point1,Gate3_Point1 и на Gate4_Point1 условие выполнилось, то нужно выполнить Move7_1, Move5_1, Move3_1Все эти циферки в названиях твоих процедур должны исчезнуть. Должен где-то определен массив данных, который определяет и константы и последовательность действий и т.п.
...
Рейтинг: 0 / 0
Упрощение кода
    #38908983
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

все ваши функции --с параметрами, значит они не головные
трудно угадывать, что должна делать программа, не понимая ее сути

по слову (затвор) мои предположения
--ленинградская дамба
--подъем воды при наводнении
--в зависимости от уровня угрозы --закрываются некоторые ворота, причем по какой то схеме, а не просто 1,,2,,3,,72
--если на каких-то воротах профилактика, возможно изменение схемы запирания

ничто другое в голову не пришло с фразой 72 затвора
...
Рейтинг: 0 / 0
Упрощение кода
    #38909549
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProДолжен где-то определен массив данных, который определяет и константы и последовательность действий и т.п

Массив каких данных? Можно хоть простейший пример того, что нужно сделать
...
Рейтинг: 0 / 0
Упрощение кода
    #38909568
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronShocker.ProДолжен где-то определен массив данных, который определяет и константы и последовательность действий и т.п

Массив каких данных? Можно хоть простейший пример того, что нужно сделатьОткуда я знаю, я же не буду за тебя писать всю программу

Должно быть что-то типа того
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Gate_Point(GatePointIndex As Integer, ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = A1(GatePointIndex) * VB ^ 2 + A2(GatePointIndex) * VB - A3(GatePointIndex)
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate_Point A4(GatePointIndex), VB, Raznica
     Else
        ' Открываем затвор GatePointIndex
End Sub

Как хранятся данные для функций A1-A4 и как осуществляется к ним доступ - это надо решить. Но факт, что они не должны храниться в коде
...
Рейтинг: 0 / 0
Упрощение кода
    #38910014
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProОткуда я знаю, я же не буду за тебя писать всю программу

Не прошу этого. Мне это и не нужно. Хочу САМ, но как можно правильнее. Буду тогда чесать правой рукой левое ухо.

Код: vbnet
1.
intVSB = -0.1578 * VB ^ 2 + 13.443 * VB - 179.19

- Это одна из 72 функций( все разные)
типа y=-0.1578 * x ^ 2 + 13.443 * x - 179.19

Если помощь в этом займет сильно много времени так и скажите, буду чесать ухо. Если готовы помочь, скажите что я непонятно объяснил, объясню более развернуто.
...
Рейтинг: 0 / 0
Упрощение кода
    #38910029
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты уверен, что функции разные?
В приведенных примерах разные только константы, функции одинаковые
...
Рейтинг: 0 / 0
Упрощение кода
    #38910034
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно, у тебя есть таблица из 72 строк:
код затвора константа1 константа2 константа3 код подчиненного затвора7.1-0.157813.443179.195.1
...
Рейтинг: 0 / 0
Упрощение кода
    #38910044
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ничего, что у ТС single тип данных? ему же скорее всего надо decimal, а в VB c этим сложнее
...
Рейтинг: 0 / 0
Упрощение кода
    #38910053
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneа ничего, что у ТС single тип данных? ему же скорее всего надо decimal, а в VB c этим сложнееНе думаю, что в данном случае недопустимы расчеты с плавающей запятой.
...
Рейтинг: 0 / 0
Упрощение кода
    #38910060
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну автору виднее, я просто предупредил, что точность надо учитывать. это если он сравнивает свои результаты с эталонной таблицей
...
Рейтинг: 0 / 0
Упрощение кода
    #38910061
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, А зачем каждый подчиненный затвор открывает своих родителей? Разве не проще сделать так (показываю на изначальном примере, без оптимизации)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Private Sub Gate7_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1578 * VB ^ 2 + 13.443 * VB - 179.19
   RememberVSB = RememberVSB + intVSB
     ' Открываем затвор7_1
     If RememberVSB < Raznica + Con1 Then
        Gate5_Point1 VB, Raznica
End Sub
Private Sub Gate5_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.16516 * VB ^ 2 + 14.052 * VB - 187.3005
   RememberVSB = RememberVSB + intVSB
     ' Открываем затвор5_1
     If RememberVSB < Raznica + Con1 Then
        Gate3_Point1 VB, Raznica
End Sub
Private Sub Gate3_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1553 * VB ^ 2 + 13.17 * VB - 175.57
   RememberVSB = RememberVSB + intVSB
     ' Открываем затвор3_1
     If RememberVSB < Raznica + Con1 Then
        Gate4_Point1 VB, Raznica
End Sub
Private Sub Gate4_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1578 * VB ^ 2 + 13.443 * VB - 179.19
   RememberVSB = RememberVSB + intVSB
     ' Открываем затвор4_1
     If RememberVSB < Raznica + Con1 Then
        Gate6_Point1 VB, Raznica
End Sub

...
Рейтинг: 0 / 0
Упрощение кода
    #38910065
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

кстати, про форматирование кода вроде ты говорил, что ты понял, а опять насажал лишних отступов
...
Рейтинг: 0 / 0
Упрощение кода
    #38910133
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProТы уверен, что функции разные?
В приведенных примерах разные только константы, функции одинаковые
Ну я имел в виду функции разные от того, что константы разные. Если посмотреть с той точки зрения что вы сказали, то да - функции все одинаковые, а константы в них разные.

Скорее такая таблица.
Код затвора константа1 константа2 константа3 код подчиненного затвора Какие щиты нужно открыть7.1-0.157813.443179.195.17.15.1-0.1651614.052-187.30053.17.1:5.13.1-0.155313.17-175.574.17.1:5.1:3.1

Вот подробно:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Option Explicit
Private intVSB As Integer  
Private Const Con1 = 50
Private RememberVSB As Integer
'Из Кода формы я передаю параметры Верхнего бьефа - VB и Разницу - Raznica 
Public Sub procMoovingBlocks(ByVal VB As Single, ByVal Raznica As Integer)
  Gate7_Point1 VB, Raznica
End Sub
' intVSB - это Водосброс
'Нахожу водосброс
Private Sub Gate7_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.1578 * VB ^ 2 + 13.443 * VB - 179.19
'Запоминаю его
   RememberVSB = RememberVSB + intVSB
' Если Водосброс меньше Разницы + 50 то нужно перейти в след. процедуру
'И так до тех пор, пока не выполнится условие Водосброс больше Разница+50, тогда выполняем процедуры 'стоящие после Else , Которые выполняются в том же порядке, что пройденные процедуры.
     If RememberVSB < Raznica + Con1 Then
        Gate5_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
End Sub

Private Sub Gate5_Point1(ByVal VB As Single, ByVal Raznica As Integer)
 intVSB = -0.16516 * VB ^ 2 + 14.052 * VB - 187.3005
   RememberVSB = RememberVSB + intVSB
     If RememberVSB < Raznica + Con1 Then
        Gate3_Point1 VB, Raznica
     Else
        ' Открываем затвор7_1
        ' Открываем затвор5_1
End Sub
...
Рейтинг: 0 / 0
Упрощение кода
    #38910148
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProКстати, А зачем каждый подчиненный затвор открывает своих родителей? Разве не проще сделать так (показываю на изначальном примере, без оптимизации)
Вот тут вы очень правы. Можно и так и это уже упрощает.
...
Рейтинг: 0 / 0
Упрощение кода
    #38910150
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proкстати, про форматирование кода вроде ты говорил, что ты понял, а опять насажал лишних отступов
Ну я понял что не нужно стесняться делать отступы, вот и делаю их так, чтобы мне удобно было быстро пробежать по коду.
...
Рейтинг: 0 / 0
Упрощение кода
    #38910180
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronНу я понял что не нужно стесняться делать отступы, вот и делаю их так, чтобы мне удобно было быстро пробежать по кодуя говорил, что не надо делать отступы там, где операторы идут последовательно и не подчинены друг другу. Разве
RememberVSB = RememberVSB + intVSB
как-то подчинен
intVSB = -0.16516 * VB ^ 2 + 14.052 * VB - 187.3005
разве он не будет выполнен в любом случае после первого?

vdekameronВот тут вы очень правы. Можно и так и это уже упрощает.тогда зачем нужен столбец таблицы "Какие щиты нужно открыть"?
...
Рейтинг: 0 / 0
Упрощение кода
    #38910198
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProvdekameronНу я понял что не нужно стесняться делать отступы, вот и делаю их так, чтобы мне удобно было быстро пробежать по кодуя говорил, что не надо делать отступы там, где операторы идут последовательно и не подчинены друг другу. Разве
RememberVSB = RememberVSB + intVSB
как-то подчинен
intVSB = -0.16516 * VB ^ 2 + 14.052 * VB - 187.3005
разве он не будет выполнен в любом случае после первого?
Ну значит в прошлый раз не до конца понял.
Теперь понял, что если операторы идут последовательно то отступы лишние. (если они не подчинены друг-другу)


Shocker.Proтогда зачем нужен столбец таблицы "Какие щиты нужно открыть"?
Я когда строчил это сообщение еще не видел вашего 17405947
...
Рейтинг: 0 / 0
Упрощение кода
    #38910727
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день ,Shocker.Pro!
Что скажете на это? Сделал с учетом того что вы сказали. И понял насколько это может упростить и сузить код.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Option Explicit
Dim A1(1 To 5) As Single
Dim A2(1 To 5) As Single
Dim A3(1 To 5) As Single
Dim B1(1 To 5) As String

Private Sub Form_Load()
 A1(1) = -0.1578: A1(2) = -0.16516: A1(3) = -0.1553: A1(4) = A1(1): A1(5) = A1(1)
 A2(1) = 13.443: A2(2) = 14.052: A2(3) = 13.17: A2(4) = A2(1): A2(5) = A2(1)
 A3(1) = -179.19: A3(2) = -187.3005: A3(3) = -175.57: A3(4) = A3(1): A3(5) = A3(1)
 B1(1) = "ОткрытьЗатвор7_1": B1(2) = "ОткрытьЗатвор5_1": B1(3) = "ОткрытьЗатвор3_1": B1(4) = "ОткрытьЗатвор4_1": B1(5) = "ОткрытьЗатвор6_1"
End Sub

Private Sub Open_Gates(ByVal VB As Single, ByVal Raznica As Integer)
 Dim RememberVSB As Integer, intVSB As Integer
 Dim i As Integer
  For i = 1 To 5
   intVSB = A1(i) * VB ^ 2 + A2(i) * VB + A3(i)
   RememberVSB = RememberVSB + intVSB
   Debug.Print B1(i)
     If RememberVSB > Raznica + Con1 Then Exit For
  Next
End Sub
...
Рейтинг: 0 / 0
Упрощение кода
    #38910747
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если работает как надо, значит ок. Разница в том, что у меня была рекурсия, а ты реализовал плоский цикл.
Ну я бы еще убрал текст "ОткрытьЗатвор" - чего его 72 раза повторять? Достаточно только индекс затвора хранить.

Следующим шагом по идее должен быть перенос всех констант во внешнее хранилище.
...
Рейтинг: 0 / 0
Упрощение кода
    #38910800
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProСледующим шагом по идее должен быть перенос всех констант во внешнее хранилище. Так делается? Я хотел их хранить все в проекте, это не правильно?
...
Рейтинг: 0 / 0
Упрощение кода
    #38910861
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И как ты их будешь менять, если понадобится? Перекомпилировать заново?

Не, ну если это незыблемые вечные константы, то, конечно можешь зашить в код.
Я не знаю специфики технологий, но что будет, если один из затворов встанет на капремонт? Опять программу переписывать и перекомпилировать?
...
Рейтинг: 0 / 0
Упрощение кода
    #38910880
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProИ как ты их будешь менять, если понадобится? Перекомпилировать заново?
Мда. Вопрос отпал
...
Рейтинг: 0 / 0
Упрощение кода
    #38910888
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProРазница в том, что у меня была рекурсия, а ты реализовал плоский цикл.
Кстати из книги, которую прочел, я понял что рекурсия не плохая штука, но до опр. момента, когда она начинает тормозить проект. Если в рекурсия большая, то цикл быстрее работает. Ну может я не так понял.
...
Рейтинг: 0 / 0
Упрощение кода
    #38910961
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в твоем случае 2мс никакого значения не имеют )
...
Рейтинг: 0 / 0
Упрощение кода
    #38910966
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proв твоем случае 2мс никакого значения не имеют )Есть еще одно зло в программировании, называется оно "преждевременная оптимизация". Не нужно заниматься оптимизацией, если она реально не требуется, на это уходят время и силы, которые можно потратить на дело.
...
Рейтинг: 0 / 0
Упрощение кода
    #38910970
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proесли она реально не требуется
Мне кажется , что сегодня не требуется, а завтра вполне может потребоваться. А завтра уже будет сложнее оптимизировать
...
Рейтинг: 0 / 0
Упрощение кода
    #38910996
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronМне кажетсявот это и называется "преждевременной оптимизацией".

У тебя что, эта программа работает в режиме реального времени и затворы щелкают с миллисекундной скоростью?
...
Рейтинг: 0 / 0
Упрощение кода
    #38911032
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProУ тебя что, эта программа работает в режиме реального времени и затворы щелкают с миллисекундной скоростью?
Спорить глупо с тем, кто скушал уже много всего в этой области.
Хранить константы пофиг где? Или и тут есть предпочтения? Я планирую в excel.
...
Рейтинг: 0 / 0
Упрощение кода
    #38911067
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и в экселе. Вопрос, каким способом ты их будешь загружать в программу?
Лучше использовать тогда ODBC, чтобы было быстрее и не зависеть от наличия экселя на машине.

Но я бы делал в текстовом файле. В CSV например. Его можно и экселем редактировать.
...
Рейтинг: 0 / 0
Упрощение кода
    #38911133
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProНо я бы делал в текстовом файле. В CSV например. Его можно и экселем редактировать.
Я в excel сохранил как CSV. Как оттуда доставать эти данные?
...
Рейтинг: 0 / 0
Упрощение кода
    #38911149
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
укрощение кода
...
Рейтинг: 0 / 0
Упрощение кода
    #38911151
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
строптивого
...
Рейтинг: 0 / 0
Упрощение кода
    #38911153
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariyукрощение кода
Это к чему?
...
Рейтинг: 0 / 0
Упрощение кода
    #38911202
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronЯ в excel сохранил как CSV. Как оттуда доставать эти данные?тут два варианта. Можно использовать ADO, чтобы подключиться к файлу через ODBC как к базе данных. Это как бы проще в принципе, но сложнее для новичка.

Можно просто открыть файл как текстовый (смотри Open, Input#, Close), построчно прочитать и разобрать на запчасти в массив
...
Рейтинг: 0 / 0
Упрощение кода
    #38911207
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот как сохранились данные в CSV.
как мне считать с него по столбцам. Сначала константу из одного столбца, потом из другого.....
...
Рейтинг: 0 / 0
Упрощение кода
    #38911209
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Упрощение кода
    #38911210
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronAntonariyукрощение кода
Это к чему?к слову
...
Рейтинг: 0 / 0
Упрощение кода
    #38911252
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProМожно просто открыть файл как текстовый (смотри Open, Input#, Close), построчно прочитать и разобрать на запчасти в массив

Что то на подобии? или снова не в ту степь?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Option Explicit

Private Sub Form_Load()
Dim A1(1 To 5) As String
Dim A2(1 To 5) As String
Dim A3(1 To 5) As String
Dim B(1 To 5) As String
Dim i As Integer
  
  Open App.Path & "\&#210;&#229;&#241;&#242;.txt" For Input As #1

    For i = 1 To 5
      Line Input #1, A1(i)
    Next
      For i = 1 To 5
        Line Input #1, A2(i)
      Next
        For i = 1 To 5
          Line Input #1, A3(i)
        Next
          For i = 1 To 5
            Line Input #1, B(i)
          Next
End Sub
...
Рейтинг: 0 / 0
Упрощение кода
    #38911323
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять непонятно, что у тебя с отступами, что за ступеньки

Считываешь одну строку, делишь функцией Split и записываешь в массив
...
Рейтинг: 0 / 0
Упрощение кода
    #38911342
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProСчитываешь одну строку, делишь функцией Split и записываешь в массив
Чем так плохо? Те же яйца.
Только не могу понять почему когда задаю А1,А2,А3 типа single выдает ошибку Type mismach , подсвечивая A1
...
Рейтинг: 0 / 0
Упрощение кода
    #38911345
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Упрощение кода
    #38911349
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что этот набор цифр, точек, минусов и точек запятой VB затруднился преобразовать в Single
...
Рейтинг: 0 / 0
Упрощение кода
    #38911356
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proпотому что этот набор цифр, точек, минусов и точек запятой VB затруднился преобразовать в Single
Я из excel пробую. Там нет никаких точек с запятой. Обычные цифры. пробовал и с точкой и с запятой в качестве разделителя.
...
Рейтинг: 0 / 0
Упрощение кода
    #38911372
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считай строку в переменную и выведи ее на экран.
Потом прочитай, что я тебе написал, как действовать
...
Рейтинг: 0 / 0
Упрощение кода
    #38911375
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу по-своему)) Так же тоже правильно как я привел. Уже разобрался. Дело не в том что VB затруднился распознать минусы, точки. Я убрал Line и оставил только Input и прекрасно определили данные как single
...
Рейтинг: 0 / 0
Упрощение кода
    #38911384
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronЯ убрал Line и оставил только Inputа, да, а я и забыл про эту возможность
...
Рейтинг: 0 / 0
Упрощение кода
    #38911397
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronХочу по-своему)) Так же тоже правильно как я привел. Уже разобрался. Дело не в том что VB затруднился распознать минусы, точки. Я убрал Line и оставил только Input и прекрасно определили данные как single


а теперь смени региональные установки на английский и посмотри что у тебя случиться
...
Рейтинг: 0 / 0
Упрощение кода
    #38911434
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One
а теперь смени региональные установки на английский и посмотри что у тебя случиться
Включил , все работает.
...
Рейтинг: 0 / 0
Упрощение кода
    #38911436
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneа теперь смени региональные установки на английский и посмотри что у тебя случитьсяобрати внимание на скрин - у него там точка в качестве разделителя.

Вполне возможно, что в прочитанном массиве уже только целая часть числа.... или у него и так стоит английский


vdekameron, нельзя полагаться на неявную конверсию чисел, она будет работать по-разному при различных региональных настройках в виндузе
...
Рейтинг: 0 / 0
Упрощение кода
    #38911437
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronВключил , все работает.работает.... ошибок не выдает. А ты смотрел, ЧТО ИМЕННО попало в массив?
...
Рейтинг: 0 / 0
Упрощение кода
    #38911440
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronKonst_One
а теперь смени региональные установки на английский и посмотри что у тебя случиться
Включил , все работает.

не верю

Код: vbnet
1.
2.
3.
4.
5.
6.
'a - значение из файлика csv
Dim a as String
Dim b as Single

a = "12.052"
b = CSng(a)
...
Рейтинг: 0 / 0
Упрощение кода
    #38911450
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneне верю

Код: vbnet
1.
2.
3.
4.
5.
6.
'a - значение из файлика csv
Dim a as String
Dim b as Single

a = "12.052"
b = CSng(a)

это код будет корректно работать в английском варианте, а в русском выдаст ошибку

Но кто сказал, что в Input используется CSng? Скорее уж что-то типа Val, который не дает ошибку (но может не увидеть дробную часть)
...
Рейтинг: 0 / 0
Упрощение кода
    #38911453
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Oneне верю

Код: vbnet
1.
2.
3.
4.
5.
6.
'a - значение из файлика csv
Dim a as String
Dim b as Single

a = "12.052"
b = CSng(a)


это код будет корректно работать в английском варианте, а в русском выдаст ошибку

Но кто сказал, что в Input используется CSng? Скорее уж что-то типа Val, который не дает ошибку (но может не увидеть дробную часть)Даже наврал.
Val корректно работает именно с точкой, так что тут, похоже, все ок
...
Рейтинг: 0 / 0
Упрощение кода
    #38911456
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня тут пару минут осталось работать) Но не поленюсь скрины сделать)
Это скрин при Нормальных настройках - Россия
...
Рейтинг: 0 / 0
Упрощение кода
    #38911458
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бл. спешу) не тот. На первом скрине Русские, втором - Англ.
...
Рейтинг: 0 / 0
Упрощение кода
    #38911459
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Упрощение кода
    #38911466
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот теперь подумай, что будет если на русском компе сохранят файлик, а на английском компе попытаются его открыть
...
Рейтинг: 0 / 0
Упрощение кода
    #38911520
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneа вот теперь подумай, что будет если на русском компе сохранят файлик, а на английском компе попытаются его открыть
А это не тоже самое что делал я на одном и том же компе? Сохранил файл. Поменял рег. настройки на англ. и открыл.
...
Рейтинг: 0 / 0
Упрощение кода
    #38911921
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProСчитываешь одну строку, делишь функцией Split и записываешь в массив
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Form_Load()
 Dim g As String
 Dim separate() As String
 Dim A1(0 To 4) As Double
 Dim i As Integer
  Open App.Path & "\1.txt" For Input As #1
   Input #1, g
   separate = Split(g, ";")
    For i = 0 To 4
     A1(i) = CDbl(separate(i))
    Next
End Sub


Запись в строку и биение сплитом ведь не спасет при изменении рег. настроек

Почему Type mismach? Ведь и cdbl определяет как double и массив задан как double
...
Рейтинг: 0 / 0
Упрощение кода
    #38911927
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronЗапись в строку и биение сплитом ведь не спасет при изменении рег. настроекНет. Сплит не нужен, я просто забыл, что можно читать не целиком строку.


vdekameronПочему Type mismach? Ведь и cdbl определяет как double и массив задан как doubleCDbl не понимает точку в качестве десятичного разделителя. Ему нужно то, что настроено в панели управления как десятичный разделитель.

То есть нужно либо использовать Val, либо предварительно заменять в тестовой строке точку на текущий десятичный разделитель.
...
Рейтинг: 0 / 0
Упрощение кода
    #38911930
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProТо есть нужно либо использовать Val
Val не подойдет. Т.к. он не работает при значениях меньше 1
Shocker.Proлибо предварительно заменять в тестовой строке точку на текущий десятичный разделитель.

А как приказать менять точку именно на ТЕКУЩИЙ десятичный разделитель?
...
Рейтинг: 0 / 0
Упрощение кода
    #38911938
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronVal не подойдет. Т.к. он не работает при значениях меньше 1с чего ты взял? продемонстрируй.
vdekameronА как приказать менять точку именно на ТЕКУЩИЙ десятичный разделитель?вопрос сводится к тому, как получить текущий десятичный разделитель. Покури функцию Format$
...
Рейтинг: 0 / 0
Упрощение кода
    #38911950
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Command1_Click()
Dim a As String
 a = "0,12"
 Debug.Print Val(a)
 Debug.Print CDbl(a)
  a = "0.12"
  Debug.Print Val(a)
  Debug.Print CDbl(a)
End Sub


Не знал, что CDbl работает только с текущим разделителем. Также думал что Val в любом случае не работает с значением меньше 1, оказывается что не работает только с тек. разделителем. Возвращая значение - 0. А если точка стоит , то норм.

Конечно мне проще использовать в данном случае Val , но я же не знаю что такое Format$ Поэтому почитаю про нее и попробую сделать вторым вариантом
...
Рейтинг: 0 / 0
Упрощение кода
    #38911954
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronчто не работает только с тек. разделителемя выше писал, но ты прохлопал. Val работает с ТОЧКОЙ. CDbl/CSng - с текущим разделителем.

Допустим, если у тебя всегда точка в исходном файле, то тебе достаточно Val.

Костя поднял другой вопрос - что будет, если кто-то поправит файл так, что там будут запятые, а не точки.
Если такого не предполагается (файл ты будешь править сам и блокнотом), то и ок.

Можно делать проверки при чтении файла (все зависит от уровня дистрибуции - если пользуешься программой сам и для себя, можно и забить, если планируешь, что ее будет кто-то эксплуатировать - обязательно надо делать проверки при чтении файла (что есть все, что надо, что нет ничего лишнего, что правильные разделители, что значения попадают в приемлемый диапазон и т.п.)
...
Рейтинг: 0 / 0
Упрощение кода
    #38911961
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProМожно делать проверки при чтении файла (все зависит от уровня дистрибуции - если пользуешься программой сам и для себя, можно и забить, если планируешь, что ее будет кто-то эксплуатировать - обязательно надо делать проверки при чтении файла (что есть все, что надо, что нет ничего лишнего, что правильные разделители, что значения попадают в приемлемый диапазон и т.п.)
Спасибо за этот совет. Не думал об этом.
Код: vbnet
1.
2.
3.
4.
5.
6.
Private Sub Command1_Click()
Dim a As String
a = Format(1.1)
 a = Mid(a, 2, 1)
 Debug.Print a
End Sub



Я конечно был знаком с ф-ей Format , но думал что у нее узкая функциональность, сейчас читаю и очень интересно склько много может.
...
Рейтинг: 0 / 0
Упрощение кода
    #38911962
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все проще
Код: vbnet
1.
Format$(.1, ".")
...
Рейтинг: 0 / 0
Упрощение кода
    #38911983
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proвсе проще
Можно еще так)
Код: vbnet
1.
 Format(0#, "#.#")
...
Рейтинг: 0 / 0
Упрощение кода
    #38912109
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожно еще так)
Format(0#, "#.#")
Плохо.
...
Рейтинг: 0 / 0
Упрощение кода
    #38912110
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело было вечером. Плохо было печени.
...
Рейтинг: 0 / 0
Упрощение кода
    #38912112
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По коду. Формат не спасет. Много по этому топиков было, и на этом сайте тоже, почитай, не будем повторяться.
...
Рейтинг: 0 / 0
Упрощение кода
    #38912132
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMpПо коду. Формат не спасет.не спасет от чего, интересно?
...
Рейтинг: 0 / 0
Упрощение кода
    #38912212
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От региональных настроек.
...
Рейтинг: 0 / 0
Упрощение кода
    #38912279
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос был, как определить текущий десятичный разделитель, и где тут "не спасет"?

Спасение от региональных настроек - прямые руки программиста.
...
Рейтинг: 0 / 0
Упрощение кода
    #38912584
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, все получилось. Осталось наверное самое сложное. Наведите на путь истинный плиз!!!)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Open_Gates(ByVal VB As Single, ByVal Raznica As Integer)
 Dim RememberVSB As Integer, intVSB As Integer
 Dim i As Integer
  For i = 1 To 5
   intVSB = A1(i) * VB ^ 2 + A2(i) * VB + A3(i)
   RememberVSB = RememberVSB + intVSB
   Debug.Print B(i)
     If RememberVSB > Raznica + Con1 Then Exit For
  Next
End Sub


1)В дизайне сделаю поле из 72 клеток-( 8 щитов * 9 ступеней)
2)В дизайне помещу 8 каких то объектов, пусть даже image
Вместо
Код: vbnet
1.
Debug.Print B(i)

Которая печатала какой щит нужно открыть на какую ступень. Хочу графически передвигать каждый щит( image) на опр. ступень.
Подскажите плиз как лучше это сделать
...
Рейтинг: 0 / 0
Упрощение кода
    #38912659
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нарисуй, что ты хочешь получить
...
Рейтинг: 0 / 0
Упрощение кода
    #38912921
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proнарисуй, что ты хочешь получить
Для начала приведу снова код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
For i = 1 To 72
  intVSB = A1(i) * VB ^ 2 + A2(i) * VB - A3(i)
  RememberVSB = RememberVSB + intVSB
   If Raznica + Con1 < RememberVSB Then
    Raznica = RememberVSB
    Exit For
   Else
    Debug.Print i & ")"; "Открываем"; B(i)
   End If
Next


Массив B(i) текстовый. В нем в той же последовательности , что и в массивах констант, расположены данные по открытию щитов.
Первый цикл - 1) Открываем 7_1
Второй цикл - 2) Открываем 5_1
Третий цикл - 3) Открываем 3_1 и т.д.

Венцом этого проекта хотел сделать вместо скучных debug.print или print графическое перемещение щитов
как привел на скрине.
Как я уже сказал, все что на скрине я сделаю в дизайне. Единственное, нужно перемещать 8 щитов по 9 ступеням(всего 72 позиции) в той же последовательности что и выбираются данные из B(i).

Но снова ступор как сделать. Создавать класс объекта, в котором объект будет по-очереди перемещать все щиты? Если да, то как объекту сообщать какой щит и на какую ступень должен шагнуть и когда ему остановиться. Или может есть другой вариант - проще (для меня) А то я понимаю что для вас любой вариант не сложный.
...
Рейтинг: 0 / 0
Упрощение кода
    #38913013
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как-то не могу увидеть, в чем проблема.
У тебя на экране массив контролов от 1 до 8

Все что нужно сделать вместо печати "Открываем A_Б", это Gate(A).Top = Б * 600
...
Рейтинг: 0 / 0
Упрощение кода
    #38913592
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЯ как-то не могу увидеть, в чем проблема.
Не знаю когда научусь видеть уже простые вещи

Я вообще извратился Сделал плавное перемещение щитов.
Код: vbnet
1.
2.
3.
4.
5.
For j = 1 To 600
 For k = 1 To 100000
 Next k
  Gate(B(i)).Top = Gate(B(i)).Top + 1
Next j



Только когда они двигаются, за ними остается след, кот. при остановке исчезает, но все-равно некрасиво. Я думал что установив Autoredraw = true этого можно будет избежать. но не помогло.
...
Рейтинг: 0 / 0
Упрощение кода
    #38913616
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После перемещения контрола поставь Me.Refresh, если не поможет - DoEvents
...
Рейтинг: 0 / 0
Упрощение кода
    #38913637
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProПосле перемещения контрола поставь Me.Refresh, если не поможет - DoEvents

refresh не помогло. Появилось жуткое мерцание при обновлении. А DoEvents помогло. Спасибо, сейчас почитаю про нее. не знаком был
...
Рейтинг: 0 / 0
Упрощение кода
    #38913640
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильней было бы двигать по таймеру. Тогда во-первых на каждой машине будет двигаться с одинаковой скоростью, во-вторых, не нужно будет DoEvents
...
Рейтинг: 0 / 0
Упрощение кода
    #38913839
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProПравильней было бы двигать по таймеру. Тогда во-первых на каждой машине будет двигаться с одинаковой скоростью, во-вторых, не нужно будет DoEvents
Через таймер все-равно есть шлейф при движении(
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Timer1_Timer()
 For j = 1 To 600
  If j = 600 Then Timer1.Enabled = False
    For k = 1 To 100000
    Next k
     Gate(B(i)).Top = Gate(B(i)).Top + 1
 Next j
End Sub
...
Рейтинг: 0 / 0
Упрощение кода
    #38913842
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты что-то не то сваял.

На каждый тик таймера должен быть один шаг элемента.
Никаких For k = 1 To 100000

Ты же делал движения кружочков по таймеру, в чем затык?
...
Рейтинг: 0 / 0
Упрощение кода
    #38914499
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProТы же делал движения кружочков по таймеру, в чем затык?
Видимо перегрелся...
Таймер выполняется только когда закончился цикл процедуры. А тогда уже двигается только последний щит
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
For i = 1 To 72
 intVSB = A1(i) * VB ^ 2 + A2(i) * VB - A3(i)
 RememberVSB = RememberVSB + intVSB
  If Raznica < RememberVSB Then
    Raznica = RememberVSB
    Exit For
  Else
    Timer1.Enabled = True
    End If
Next i
End Sub

Private Sub Timer1_Timer()
 Gate(B(i)).Top = Gate(B(i)).Top + 1
End Sub
...
Рейтинг: 0 / 0
93 сообщений из 93, показаны все 4 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Упрощение кода
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]