ASCII код и KeyPress

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

ASCII код и KeyPress

Сообщение Sholah » 29.05.2006 (Пн) 15:45

Есть некий цикл, которой должен останавливаться для того, чтобы пользователь нажал соответствующую клавишу - пробел. Где и что надо вписать, чтобы это реализовать. Кстати ASCII код пробела - 20?
Код: Выделить всё
Do
   ExAr(K) = ExAr(K - 1)
   K = K - 1
   KeyPress (20)
Loop Until Not K > j

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 29.05.2006 (Пн) 15:49

Хочу помочь, но ничего не понял..

А код уронил меня в обморок...
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.05.2006 (Пн) 15:54

Ну, э-э-э, я привел только кусок кода, не весь, может в этом дело?
А насчет не понял, чего ж тут не понять.
Прога работает. Доходит до цикла и бац! Останавливается после строчки k=k-1 и ждет нажатия пробела пользователем, ну по крайней мере препод так обьяснял))

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.05.2006 (Пн) 15:57

ну и бред.... :shock:

и куда ж ты этот цикл вставил :?:

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.05.2006 (Пн) 16:00

Цикл находится внутри обработчика по щелчку кнопки Command. А что, действительно бред?

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 29.05.2006 (Пн) 16:00

if k=бац then inputbox("Введи пробел, пользователь")
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.05.2006 (Пн) 16:03

2$€rg
Спасиб конечно, результат меня вполне устроил, но можно как-нибудь сделать, чтобы InputBox не появлялся, т.е. что бы пользователь просто нажимал на пробел и смотрел на результат?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.05.2006 (Пн) 16:05

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

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 29.05.2006 (Пн) 16:07

Препод по истории? Ты ему не верь.
Либо ты сам не так понял.
Лучше дай полный текст задания... Делать не будем.. но подсказать мона.
Последний раз редактировалось GB826 29.05.2006 (Пн) 16:09, всего редактировалось 1 раз.
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.05.2006 (Пн) 16:08

Код: Выделить всё

i = 1
Do
j = 0
Do
  If Ar(i) <= Ar(j) Then
   K = i
   Tmp = Ar(i)
   Do
    Ar(K) = Ar(K - 1)
    K = K - 1
   Loop Until Not K > j
   Ar(j) = Tmp
   j = i
  Else
  j = j + 1
  End If
Loop Until Not j < i
i = i + 1
Loop Until Not i <= n


В некоторых местах кода необходимо вставить какой-нить обработчик клика/щелча/нажания на/по пробелу.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.05.2006 (Пн) 16:09

я просил код всей твоей формы (весь модуль) и пояснение зачем это нужно

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 29.05.2006 (Пн) 16:13

Сортировка массива что-ли? Надо останавливать после каждого шага (обмена)?
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.05.2006 (Пн) 16:14

Боюсь код всей формы привести не смогу - там много, очень много кода. Да и не нужен он сейчас, ибо вопрос не тот.
Что я хочу. Чтобы после каждого действия в цикле и этом куске кода пользователь в определенных местах, для продолжения работы кода, нажимал клавишу пробел, ну или иную. Вот. Если вдруг и на этот раз не понятно выражаюсь, то потерплю до завтра - у препода спрошу про KeyPress(ASCII)

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.05.2006 (Пн) 16:15

2 GB826
Да!)) В большинстве случаев это так.

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 29.05.2006 (Пн) 16:18

Боюсь, что препод говорил тебе юзать событие KeyPress для обработки каждой итерации, которая уже и не итерация... так как цикла не будет... Но это я так понял...
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.05.2006 (Пн) 16:21

Ясно, хотя ни черта не ясно. Интерация-это повторения в цикле?
Отбросим и Key и Press. Можно ли как-нибудь реализовать остановку в цикле и ожидание действия пользователя не прибегая к KeyPress

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 29.05.2006 (Пн) 16:24

Угу msgbox
Последний раз редактировалось GB826 29.05.2006 (Пн) 16:26, всего редактировалось 1 раз.
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.05.2006 (Пн) 16:26

установи переменную на кнопку в True . а эту переменную в цикле проверяй:

Код: Выделить всё
Option Explicit
Dim b as Boolean

Private Sub Command1_Click()
  b=True
End Sub

'где-то в твоем цикле
...
b=False
Do
  ...
  If b then Exit Do
  DoEvents
Loop
b=False
...

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Сообщение pronto » 29.05.2006 (Пн) 16:26

нет... :cry:
O, sancta simplicitas!

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.05.2006 (Пн) 16:27

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

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.05.2006 (Пн) 16:33

2 Konst_One
Это пример реализации сортировки с булевыми переменными. Для меня, как ни странно, сделать это было непросто. Полагаю, что сортировка выбором будет не легче, а на много сложнее в плане булевых переменных.
Код: Выделить всё

1: For i = 0 To 11
If ST1 = False Then
  Exit For
End If
If ExAr(i) > ExAr(i + 1) Then
  If FL1 = False Then
      Exit For
     End If
  t = ExAr(i)
  ExAr(i) = ExAr(i + 1)
  ExAr(i + 1) = t
  ST1 = False
  GoTo 1
end If
Next i

Но, как я уже говорил, препод намекнул на четров ASCII и KeyPress как альтернативу булевым переменным. так и не допер. Придется завтра спрашивать. А сейчас пойду-ка матана переписывать - толку больше

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

Re: ASCII код и KeyPress

Сообщение tyomitch » 29.05.2006 (Пн) 16:40

Sholah писал(а):Кстати ASCII код пробела - 20?

Кстати, нет: 32
Изображение

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 29.05.2006 (Пн) 17:30

tyomitch Почему нет? Смотря в какой системе счисления. Иногда и 20 ;)
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 29.05.2006 (Пн) 18:33

20 - &H20 = 32 имхо автор где то увидел ХЕКС пробела а теперь везде суёт 20-ку вместо &H20
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.05.2006 (Вт) 7:39

1. Все объявления сделать глобальными
2. Итерацию с количеством шагов = 1 (ну и лажа :)) засунуть в таймер,
после итерации таймер останавливать
3. По пробелу (кстати, пробел на кнопке = Enter = Click) запускать таймер

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 30.05.2006 (Вт) 8:15

Я читал-читал... так и не въехал...
Может проще когда нажали пробел (ёнтёр, клик и т.п.) выполнить функцию (процедуру) и получить результат... и хранить начальные, промежуточные, конечные значения... или все-же я не догнал темы...
Бороться и искать, найти и перепрятать!

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 30.05.2006 (Вт) 8:37

Хакер писал(а):20 - &H20 = 32 имхо автор где то увидел ХЕКС пробела а теперь везде суёт 20-ку вместо &H20


Может он не знает что &H20 это в HEX
Вложения
scankey new.rar
(3.61 Кб) Скачиваний: 90

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 30.05.2006 (Вт) 10:47

Насколько я понял вопрос, автору лучше воспользоваться таймером, а при кейПрессе его замораживать/размораживать.


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

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

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

    TopList