Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как объявить переменные через запятую, а затем сразу все инициализировать? / 22 сообщений из 22, страница 1 из 1
30.11.2009, 16:14
    #36339356
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
Привет. Слышал про LOCAL и STORE, но с ними не работает - компилируется нормально, но переменные "не видятся". Например, такая конструкция не работает:
Код: plaintext
1.
LOCAL a,a1,a2,a3,a4
STORE  0  TO a,1a1,a2,a3,a4
...
Рейтинг: 0 / 0
30.11.2009, 16:17
    #36339361
gotko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
донМахито,

а где переменная 1a1 ?
это очепятка?

или смотри область видимости переменных...
...
Рейтинг: 0 / 0
30.11.2009, 16:20
    #36339366
Как объявить переменные через запятую, а затем сразу все инициализировать?
донМахитоПривет. Слышал про LOCAL и STORE, но с ними не работает - компилируется нормально, но переменные "не видятся". Например, такая конструкция не работает:
Код: plaintext
1.
LOCAL a,a1,a2,a3,a4
STORE  0  TO a,1a1,a2,a3,a4
Себя, как обычно, считаем безгрешным? Откуда взялась переменная с именем, начинающемся на цифру? Или ругань на синтаксическую ошибку дают только лохам ибо настоящие джедаи ее не читают?
...
Рейтинг: 0 / 0
30.11.2009, 16:23
    #36339374
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
проходящий.Себя, как обычно, считаем безгрешным?
Неа, gotko прав - опечатка.
...
Рейтинг: 0 / 0
30.11.2009, 16:30
    #36339391
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
донМахитоПривет. Слышал про LOCAL и STORE, но с ними не работает - компилируется нормально, но переменные "не видятся". Например, такая конструкция не работает:
Код: plaintext
1.
LOCAL a,a1,a2,a3,a4
STORE  0  TO a,1a1,a2,a3,a4

А как это проверялось?
Мой код:
Код: plaintext
1.
2.
3.
4.
5.
LOCAL a,a1,a2,a3,a4
? a,a1,a2,a3,a4
STORE  0  TO a,1a1,a2,a3,a4
? a,a1,a2,a3,a4
return
показывает именно то, что ожидалось: пять .F. в первом случае и пять 0 во втором...
...
Рейтинг: 0 / 0
30.11.2009, 16:32
    #36339396
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
Станислав C.,

Эх, черт побери, этот копи-паст... :-) Ту же ошибку перекопировал в свой код... :-)
правильный код:
Код: plaintext
1.
2.
3.
4.
5.
LOCAL a,a1,a2,a3,a4
? a,a1,a2,a3,a4
STORE  0  TO a,a1,a2,a3,a4
? a,a1,a2,a3,a4
return
...
Рейтинг: 0 / 0
30.11.2009, 16:40
    #36339420
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
Т.е. вот так у вас не работает?
Код: plaintext
1.
2.
3.
LOCAL a1,a2,a3,a4
STORE  0  TO a1,a2,a3,a4
? a1+a2+a3+a4
Может проблема с областю видимиости?
http://www.sql.ru/forum/actualthread.aspx?tid=474634
...
Рейтинг: 0 / 0
30.11.2009, 16:45
    #36339434
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
Станислав C.
А как это проверялось?

Для отчета: вывод количества сотрудников по разным условиям; все условия в функции; возвращает количество. Условий много - соответственно и количеств. Пример:
Код: plaintext
1.
2.
3.
4.
5.
DocAll= 0  &&Количество врачей
DocM= 0 

SCAN
DocAll=DocAll+BaseCount("В"," ", 0 , 0 )&&все врачи: муж. и жен. любого возраста
ENDSCAN
Как видно из аргументов, количеств много (5 возрастных групп). Если все в столбик перечислять - не удобно. В таком варианте переменная работает и выводит что нужно (вывод в эксел). При следующем варианте не выводится ничего:
Код: plaintext
1.
2.
3.
4.
5.
LOCAL DocAll, DocM
STORE  0  TO DocAll, DocM
SCAN
DocAll=DocAll+BaseCount("В"," ", 0 , 0 )&&все врачи: муж. и жен. любого возраста
DocM=DocM+BaseCount("В","М", 0 , 0 )
ENDSCAN
...
Рейтинг: 0 / 0
30.11.2009, 16:48
    #36339440
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
BaseCount() ?
...
Рейтинг: 0 / 0
30.11.2009, 16:52
    #36339452
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
GoshaS,
что?
...
Рейтинг: 0 / 0
30.11.2009, 16:54
    #36339454
gotko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
донМахито,

а если так :

LOCAL DocAll, DocM
STORE 0 TO DocAll, DocM
SCAN
m. DocAll= m. DocAll+BaseCount("В"," ",0,0)&&все врачи: муж. и жен. любого возраста
m. DocM= m. DocM+BaseCount("В","М",0,0)
ENDSCAN
...
Рейтинг: 0 / 0
30.11.2009, 16:59
    #36339469
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
У меня есть только три предположения:
1. Область видимости переменных памяти
2. Есть поля, с такими-же именами, что и у переменных
3. Неправильно отрабатывает самописная функция BaseCount().
...
Рейтинг: 0 / 0
30.11.2009, 17:00
    #36339472
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
gotko, неа, так не работает. Вот без local-store и с m - работает. Что это за буква?
...
Рейтинг: 0 / 0
30.11.2009, 17:05
    #36339478
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
GoshaS
3. Неправильно отрабатывает самописная функция BaseCount().
Алгоритм верный, возврат есть - гонял одну ее с разными аргументами.
2. Полей таких больше нет, может только служебные:)
1. Про область видимости ничего не знаю (ссылку читал, но ничего не понял)
...
Рейтинг: 0 / 0
30.11.2009, 17:19
    #36339504
Как объявить переменные через запятую, а затем сразу все инициализировать?
донМахитоgotko, неа, так не работает. Вот без local-store и с m - работает. Что это за буква?Так у Вас, наверняка, еще есть и поля таблиц/курсоров с такими именами? И преффикс m. как раз и говорит фоксу не обращать внимание на поля и искать имя среди переменных. И local с Store тут совершенно не при чем.
...
Рейтинг: 0 / 0
30.11.2009, 17:29
    #36339522
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
проходящий.,
Вытягиваемые поля после Select? вытягиваю немного полей, и ни одно не начинается с Doc*. Для проверки заменил DocAll на Doctor - "не видит".
...
Рейтинг: 0 / 0
30.11.2009, 17:38
    #36339546
Как объявить переменные через запятую, а затем сразу все инициализировать?
донМахито,

Код: plaintext
1.
LOCAL a,a1,a2,a3,a4
STORE  0  TO a,a1,a2,a3,a4
у всех работают. Если у Вас ПОСЛЕ этого где-то что-то не работает, то эти две команды не при чем.
...
Рейтинг: 0 / 0
30.11.2009, 17:51
    #36339567
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
Оказалось: среди комментариев нашел повторное определение DocAll. Просто в loca было несколько переменных, а не увиделись все. Может фокс увидел первой DocAll или отрубил все следующие.. Затем, удалил дублирующее определение, оставил только в local - опять не увидилось. Заменил local на public - стал видеть.
...
Рейтинг: 0 / 0
30.11.2009, 18:29
    #36339640
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
Не лучшее решение проблемы - объявлять глобальные переменные.
...
Рейтинг: 0 / 0
30.11.2009, 18:37
    #36339647
Как объявить переменные через запятую, а затем сразу все инициализировать?
донМахитоЗаменил local на public - стал видеть.Что доказывает наличие непоняток с областью действия переменных. Убрали последствия не найдя причины. Вылезет боком еще где-нибудь, но искать будет еще сложнее.
...
Рейтинг: 0 / 0
01.12.2009, 09:51
    #36340314
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объявить переменные через запятую, а затем сразу все инициализировать?
проходящий.,
где тогда искать ошибку? В коде, где функция вызывается, в функции или у фокса настройки какие-нибудь есть?
...
Рейтинг: 0 / 0
01.12.2009, 09:57
    #36340327
Как объявить переменные через запятую, а затем сразу все инициализировать?
донМахитопроходящий.,
где тогда искать ошибку? В коде, где функция вызывается, в функции или у фокса настройки какие-нибудь есть?В коде после инициализации. Искать строку, при выполнении которой переменные теряются.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как объявить переменные через запятую, а затем сразу все инициализировать? / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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