Глюк в VB6!!! Как его приодолеть?

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

Глюк в VB6!!! Как его приодолеть?

Сообщение KibkaloIg » 06.07.2005 (Ср) 13:38

Есть функция условно называется "ОТКАТ" . Есть СТЕК реализованный на основе одномерного массива, Есть указатель вершины.
Функция "Откат" при каждом обращении отнимает 1 от вершины стека и возвращает значение на которое указывает вершина стека.

Проблема вот в чем:
Устанавливаеи Точку останова на вызов функции "Откат" . После того как функция останавилась наводим мышку на название функции и этот тварь Глюк в VB начиает выполнять эту функцию т.е. выбирать стек. Хотя замете - программа стоит на останове. И так сказать официально мы до функции не добрались.
Таже фигня происходит если установим контрольное значение на функцию.
Во байда нездоровая!!!
:twisted:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.07.2005 (Ср) 13:41

Во-первых, непонятно в чём вопрос.
Во-вторых, это фича.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

KibkaloIg
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 22.06.2005 (Ср) 0:24

Сообщение KibkaloIg » 06.07.2005 (Ср) 13:46

Это не вопрос. Это досада.
Хотя интиресно как отключить выполнение функций при навидении мышкой, но оставить вывод значений переменной?

И ещё глуппый вопрос - Фича -это как по русски? :roll:

shovgenyuk
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 28.07.2004 (Ср) 11:39
Откуда: Ивано-Франковск

Сообщение shovgenyuk » 06.07.2005 (Ср) 13:50

Присвой значение ф-ции переменной.
При остановке программы наводи курсор мышки на переменную.
Это не глюк :), так и должно быть.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.07.2005 (Ср) 15:17

KibkaloIg писал(а):Хотя интиресно как отключить выполнение функций при навидении мышкой, но оставить вывод значений переменной?

Не наводи мышь на функции...

KibkaloIg писал(а):И ещё глуппый вопрос - Фича -это как по русски? :roll:

Feature - функция, функциональность, опция, особенность, характерная черта, деталь, признак, свойство.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

KibkaloIg
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 22.06.2005 (Ср) 0:24

Сообщение KibkaloIg » 07.07.2005 (Чт) 0:04

особенность - хорошее русское слово :P
А Фича - черт знает что :shock:

KibkaloIg
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 22.06.2005 (Ср) 0:24

Сообщение KibkaloIg » 07.07.2005 (Чт) 0:08

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

Вот в этом месте, государи мои, дядя Бил был пьяный. :lol:

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 07.07.2005 (Чт) 7:47

А пример можно?
Код: Выделить всё
Private Sub Form_Load()
  Dim i  As Long
  Stop
  i = xxx
  i = yyy
End Sub

Property Get xxx() As Long
  xxx = 7
End Property

Function yyy() As Long
  yyy = 77
End Function

При наведении на свойство xxx действительно показывается 7, но при наведении на функцию yyy ничего не происходит и не должно происходить. Или я что-то не понял.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 07.07.2005 (Чт) 12:19

а почему бы чтобы контролировать значение функции не написать вот так:
Debug.Print Имя_Функции??? :D
Если всё делать своими ручками, они скоро отвалятся !

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 07.07.2005 (Чт) 14:32

Смотрите: каждый раз, когда вычисляется ЗНАЧЕНИЕ функции, выполняется весь код функции. А в коде стоит уменьшение вершины на 1. А не приходило ли автору в голову, что, если уж есть такая проблема, можно разделить функцию ОТКАТ на функцию ЗНАЧЕНИЕ, которая будет только возвращать значение на вершине стека, и процедуру ОТКАТ, которая будет только изменять значение вершины?

KibkaloIg
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 22.06.2005 (Ср) 0:24

Сообщение KibkaloIg » 08.07.2005 (Пт) 18:49

Ну а толку в этом, я имею ввиду если развести по функциям вершину и значения.
Все это работает, пока не наведешь мышку.
Это просто прикол такой у Била. программа стоит а функция или свойство выполняются.
И сколько точек останова внутри функции не ставь, а она, зараза, все равно выполняется до конца.
Я месяц над этой фигней просидел. Веру в физические и программистские законы потерял.
Программа должна стоять, а она выполняется и все тут :shock:

KibkaloIg
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 22.06.2005 (Ср) 0:24

Сообщение KibkaloIg » 08.07.2005 (Пт) 18:52

Тут надо себя поправить, а то народ уже стал морщить мозги.

Не функция конечно, а свойство Get в классе
Но выполняется все равно без ведома программера :wink: :lol:

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

Сообщение tyomitch » 08.07.2005 (Пт) 21:06

KibkaloIg, Property Get "по определению" не должно менять состояние программы. Если у тебя оно меняет, то это в твоей проге ошибка, а не у била-гейца.
Изображение

KibkaloIg
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 22.06.2005 (Ср) 0:24

Сообщение KibkaloIg » 09.07.2005 (Сб) 0:19

У него, У него.
Я желая видеть состояние стека , сделанного в классе, вывел это свойство в окно контрольных значений. А это свойство, по виду Get, при каждом ображении уменьшает массив на 1, ну и возращает значение по максимальному индексу, нормальный PUSH как видите.
Возврат = А(Вершина)
If Вершина >0 Then
Вершина=Вершина-1
Redim Preserve А(Вершина)
Else
Возврат=0
end if

Но мне и в диком сне не могло приснится, что это свойство будет выполнятся из окна контрольных значений. Я в массив напихиваю значений, а он мне назад 0 да 0 :shock:
Я ставлю в Get функции точки останова, прога на них не реагирует, а возврощает 0.
Оно понятно, что при обращении Get -свойству оно должно , что-то возвращать.
Ну все-таки предупреждать надо о таком глюкане.

ГРАЖДАНЕ не ставте Get свойство в контрольное значение ибо в этом месте Бил-кил дурканул. Хоть в чем-то му умнее, правда после месячных поисков :D

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 11.07.2005 (Пн) 21:44

...
Последний раз редактировалось Al Khamid 07.12.2007 (Пт) 11:42, всего редактировалось 1 раз.
"Время пришло..." ©

KibkaloIg
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 22.06.2005 (Ср) 0:24

Сообщение KibkaloIg » 13.07.2005 (Ср) 0:24

На самом деле "Свойства" GET, SET, LET это функции, а не переменные.
и оказывается они могут выполнятся "Закулисно" т.е. не реагировать на режим пошагового выполнения программы, точки останова и иже с ними.
Если вы случайно добавили контрольное значение этого свойства, вы долго можете морщить мозги, где ошибка, а все дело, оказывается, в том, что функция при выполнении ни как себя не проявляет.
Я считаю - это серьезный недостаток, вводящий программера (кибернетика или по русски - разрабочика математического обеспечения) в заблуждение. А я очень люблб ВАСЁК
А обойти этот глючек, конечно можно, кто спорит.
Главно, понять, что происходит, а это бывае иногда затруднительно..... :shock:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.07.2005 (Ср) 7:57

Правда что-ли?
Поставь брекпойнт ВНУТРИ своей функции или свойства и увидишь, что выполнение прекрасно останавливается.
Lasciate ogni speranza, voi ch'entrate.

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 14.07.2005 (Чт) 18:39

...
Последний раз редактировалось Al Khamid 07.12.2007 (Пт) 11:43, всего редактировалось 1 раз.

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

Сообщение tyomitch » 14.07.2005 (Чт) 20:11

Al Khamid писал(а):А брейкпойнт будет игнорироваться, если программа уже остановлена. В одном проекте не может быть более одного останова

Может - проверено. Останавливал и заново заходил в ту же процедуру вызовом из Immediate Window.
С окном значений не баловался, может там брякпойнты и не работают.
Изображение

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 14.07.2005 (Чт) 22:58

Есть такая штука в Бэйсике - остановка при изменении переменной. Не знаю как насчёт массивов, но попробовать можно...


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 51

    TopList