powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / куда может дется объявленная переменная?
25 сообщений из 30, страница 1 из 2
куда может дется объявленная переменная?
    #34737064
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi всем
обьясните, чего у нас не так

имеем формы Form_Клиент и Form_Редакция
в LOADE Form_Редакция прописано
Код: plaintext
1.
2.
3.
4.
PUBLIC pnSeek
pnSeek= 0 
IF SEEK (pnFind,"table1","pnCod") = .T.
        pnSeek= 1 
ENDIF

если просто запускаем Form_Редакция из меню проги , то все выходет нормально и в Debugger сразу после запуска появляеться pnSeek=0 или pnSeek=1
если же Form_Редакция запустить из Form_Клиент, то в Debugger переменная pnSeek вобще отсутствует

куда деваеться переменная в этом случае??????

спасиба
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737065
BMJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMJ
Гость
CLEAR all не присутствует?
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737066
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
описался. поправка. в коде конечно хотел написать
Код: plaintext
IF SEEK (pnFind,"table1",pnCod) = .T.
кавычки в спешке прилепил когда текст топика писал
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737068
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BMJCLEAR all не присутствует?
конешно нет!
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737230
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сниффкуда деваеться переменная в этом случае??????
А в форме Form_Редакция Data Session случайно не private?
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737431
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снифф
Код: plaintext
1.
2.
3.
4.
PUBLIC pnSeek
pnSeek= 0 
IF SEEK (pnFind,"table1","pnCod") = .T.
        pnSeek= 1 
ENDIF

При повторном открытии формы должна быть ошибка на строке PUBLIC pnSeek, т.к. нельзя дважды объявить глобальную переменную. Если нет CLEAR ALL, то есть RELEASE pnSeek
Глобальные переменные лучше начинать с префикса g

Sergey ChА в форме Form_Редакция Data Session случайно не private? Это не влияет на область видимости переменной.
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737438
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПри повторном открытии формы должна быть ошибка на строке PUBLIC pnSeek, т.к. нельзя дважды объявить глобальную переменную.
И где про это написано или кодом докажи
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737441
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
piva авторПри повторном открытии формы должна быть ошибка на строке PUBLIC pnSeek, т.к. нельзя дважды объявить глобальную переменную.
И где про это написано или кодом докажи

И правда можно :) Каждый раз проверяю перед объявлением if type('...')='U' для одноразовой инициализации, почему-то подумал, проверка чтобы ошибки не было.

По остальным пунктам претензий нет?
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737444
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Претензий нет

Скорее где-то в проге у автора - есть еще одна такаяже переменная, только походу она приватная и умирает там же в когде, убивая глобальную на корню, другого быть не может
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737466
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey ChА в форме Form_Редакция Data Session случайно не private?не понял
а что Data Session как-то связана с переменными?
у нас в форме Private, так кажеться это по барабану для PUBLIC
piva...Скорее где-то в проге у автора - есть еще одна такаяже переменная, только походу она приватная и умирает там же в когде, убивая глобальную на корню, другого быть не можетнет. переменная используеться только в Form_Редакция, спецом щас проверяли через Поиск каждый обьект в ней. потом уже вообще все формы перелопатили в проекте.
переменая находиться только в Form_Редакция
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737517
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снифф...переменная используеться только в Form_Редакция, спецом щас проверяли через Поиск каждый обьект в ней. потом уже вообще все формы перелопатили в проекте.
переменая находиться только в Form_Редакция
Переменная исчезает или не создается? Пошагово дебагером пройди. SET STEP ON поставь перед PUBLIC, м.б. это место не выполняется.
Если исчезает - ищи CLEAR или RELEASE. Других способов убить глобальную переменную нет.
Рекомендую строго придерживаться использования префиксов в именах, во избежание подобных проблем с областью видимости:
l - local
p - private
g - public
t - parameter
Назови переменную gnSeek

Если кроме этой формы она нигде не используется, то наверно можно сделать свойство ThisForm.nSeek и им пользоваться. Глобальные переменные лучше не делать без острой необходимости
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737541
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один момент - при объявлении через PRIVATE переменная не существует до ее инициализации:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public gnVar
gnVar =  1 
do test
? gnVar && пишет  1 
...

proc test
private gnVar
? type('gnVar') && = 'U'
? gnVar && Ошибка Variable GNVAR not found
return
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737543
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторГлобальные переменные лучше не делать без острой необходимости
Некоторые после разъяснения Цингауза и переделки поиска переменных в NTI фокса, теперь начали активно их использовать особенно в циклах
ЗЫ - Особенность 9-ки на, 7-ке, 8-ке это так не влияло ;)
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737577
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
piva авторГлобальные переменные лучше не делать без острой необходимости
Некоторые после разъяснения Цингауза и переделки поиска переменных в NTI фокса, теперь начали активно их использовать особенно в циклах
ЗЫ - Особенность 9-ки на, 7-ке, 8-ке это так не влияло ;)
Ссылку не дашь почитать что переделали.
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737585
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕще один момент - при объявлении через PRIVATE переменная не существует до ее инициализациисмотрите наш код, значение присваивается сразу
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737603
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Dima T
Там было пояснение - вобщем занятная тема
http://forum.foxclub.ru/read.php?45,281675,284099#msg-284099
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34737631
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снифф Dima TЕще один момент - при объявлении через PRIVATE переменная не существует до ее инициализациисмотрите наш код, значение присваивается сразу В приведенном коде нет ошибки. Как проявляется ошибка, какой код выполняется до и какой после? Или это глюк дебагера?
Что происходит если в конце этого кода поставить MessageBox(type('pnSeek')) ? На 100% уверен что 'N', хотя судя по описанным симптомам должно быть 'U'.
Думаю без упрощенного примера не обойтись. Сделай отдельный проект с повтором ошибки и выложи.
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34740712
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Dima TДумаю без упрощенного примера не обойтись. Сделай отдельный проект с повтором ошибки и выложи.[/quot]да мы уж и так с другом упростили вопрос до крайности (((
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34740767
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сниффда мы уж и так с другом упростили вопрос до крайности ((( Ну тогда что осталось и выкладывай с инструкцией как ошибку повторить
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34740786
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снифф

паблик переменные - зло

сделай виз.библ-ку , в ней сделай класс
в классе свойство

в программе подними объект на основ-и написанного класса
присвой свойству нужное значение

и пользуй

избежишь ненужных танцев + начнешь осваивать азы ООП
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34740826
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://fox.wikis.com/wc.dll?Wiki~NamingConventionsVariables

и обрати внимание почему
выделили красным ...
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34740845
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Действительно, пропробуем подойти по другому. Не знаю, разберемся ли в том, что посоветовали ссылкой, но попробуем обязательно.

За Сниффа
Снусмумрик
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34744656
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимосделай виз.библ-ку , в ней сделай класс
в классе свойство
в программе подними объект на основ-и написанного класса
присвой свойству нужное значениеЗначит так. Вот как мы поняли это дело.
Создали новый класс на основе Container, добавили в него новое свойсво Флаг, значение которого по умолчанию = .F. Поместили его на Form_Редакция, сделали невидимым. Вместо прежнего кода, приведенного здесь, написали:

IF SEEK (pnFind,"table1","pnCod") = .T.
thisform.контейнер.флаг=.t.
ENDIF

Дальше этого пока не пошли.
Правильно ли мы поняли про новый класс?

За Сниффа
Снусмумрик
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34744703
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не достаточно ли добавить форме свойство???

из класс Custom
поднимется невиз-й объект


давайт по-порядку
есть то-то и то-то
Вы желаете то-то и то-то

+ если можно небольшой архивчик с примером
и ткните хочу чтобы было так-то и так-то
...
Рейтинг: 0 / 0
куда может дется объявленная переменная?
    #34744913
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прямо гора с плеч. Все заработало.
Сейчас в проекте вместо 3-х глючивших глобальных переменных-флагов добавили в форму 3 новых свойства-флага, подредактировали соответственно код в объектах. И все пошло!
Снифф уже несколько дней с горя без пива пребывал. А теперь ошалел от радости и погнал в палатку за баклажкой.

Народ, спасибо за ликбез )))))))))))))))))))))))

За Сниффа
Снусмумрик
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / куда может дется объявленная переменная?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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