powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Error 1924
6 сообщений из 6, страница 1 из 1
Error 1924
    #32240250
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QuickSeek - класс на основе формы (строка быстрого (инкрементного) поиска).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public frmQuickSeek
frmQuickSeek = Createobject('MyClasses.QuickSeek', .T./.F.)
frmQuickSeek.Show( 0 )

***
On Key Label  0  frmQuickSeek.PushKey(LastKey())
...
On Key Label ? frmQuickSeek.PushKey(LastKey())
***

Периодически на некоторые строки, заключенные в *** выдается ошибка ("name" is not an object (Error 1924)), причем каждый раз на разные и только на какую-нибудь одну.

Может кто-нибудь сталкивался с этим и подскажет где проблема.
...
Рейтинг: 0 / 0
Error 1924
    #32240409
Aijik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя хэлп говорит про ошибку 1924 вот это:

Код: plaintext
1.
2.
3.
4.
 "name"  is not an object (Error  1924 )
******************************
This name was previously defined as something other than an object. 
You have another occurrence of name. 
Check your code for duplicate instances of name. 


Однако, наплевавши на свое описание в MSDN, эта ошибка еще возникает и в случае, когда ссылка на объект равна .NULL., но прога всё равно пытается обратиться к св-вам/методам этого объекта через эту ссылку (что у вас и имеет место быть). Т.е.:

Код: plaintext
1.
2.
3.
4.
5.
oMyForm = CREATEOBJECT( "Form" )
oMyForm.Release()

?TYPE( "oMyForm" ) && "O" 
?ISNULL(oMyForm) &&.T.
oMyForm.Refresh() && OMYFORM is not an object (Error  1924 )


Где-то значит у вас релизится формочка.... переменная frmQuickSeek остается, но равна она NULL
...
Рейтинг: 0 / 0
Error 1924
    #32240413
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что происходит, когда мы выходим из формы (то есть, когда мы ее, по сути, уничтожаем)? Правильно, переменная frmQuickSeek приобретает значение null, а ON KEY LABEL ни сном ни духом об этом не ведает. Он упрямо продолжает вызывать методы frmQuickSeek при нажатии соотвествующих клавиш, тогда как сам frmQuickSeek уже объектом не является.

Что нужно сделать?

Либо в Destroy формы уничтожать все ссылки на себя:

Код: plaintext
1.
ON KEY LABEL  0  
ON KEY LABEL ?


Либо использовать устрошающую конструкцию типа:

Код: plaintext
ON KEY LABEL  0  iif(type('m.frmQuickSeek')='O'.and.!isnull(m.frmQuickSeek), m.frmQuickSeek.PushKey(LastKey()),  0 )


при назначении.

Удачи.
...
Рейтинг: 0 / 0
Error 1924
    #32240540
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка возвращает Program() = QuickSeek.Init
Код: plaintext
1.
2.
3.
4.
5.
***
On Key Label  0  frmQuickSeek.PushKey(LastKey())
...
On Key Label ? frmQuickSeek.PushKey(LastKey())
***

Это пишется в методе Init класса QuickSeek

А это пишется в методе Unload класса QuckSeek
Код: plaintext
1.
2.
Release frmQuickSeek
On Key


Разве On Key не очистит клавиши?
...
Рейтинг: 0 / 0
Error 1924
    #32240557
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фокс абсолютно прав. В Init-е формы объекта с именем frmQuickSeek еще нет,а клавиша может быть уже нажата. Перенеси свой код по инициализации клавиш в Activate формы, в Deactivate и Destroy - ON KEY.
...
Рейтинг: 0 / 0
Error 1924
    #32241107
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Error 1924
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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