powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Упрощение кода
18 сообщений из 93, страница 4 из 4
Упрощение кода
    #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
18 сообщений из 93, страница 4 из 4
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Упрощение кода
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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