powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Почему очищается массив?
11 сообщений из 11, страница 1 из 1
Почему очищается массив?
    #32995558
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как известно, массив можно объявлять повторно командой DECLARE. Причем можно указать другой размер массива - значения у него сохраняются (естественно, которые не затрагиваюся переразметкой массива).
Все замечательно подтверждается, если я проделываю в окне Command нечто подобное:
Код: plaintext
1.
2.
3.
4.
5.
DIMENSION aaa( 2 , 2 )
aaa( 2 , 1 )= 21 
aaa( 2 , 2 )= 22 
DIMENSION aaa( 3 , 2 )
DISPLAY MEMORY LIKE aaa
Значения в массиве сохранились.
Но если я тоже самое проделываю в моем приложении, то все значения в массиве принимают значение .F. после DIMENSION aaa(3,2). Какие установки могут повлять на такое поведение?
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32995597
Andrey Ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кузнецов Игорь
Код: plaintext
1.
DIMENSION aaa( 2 , 2 )

Попробуйте вместо первого
Код: plaintext
1.
DIMENSION aaa( 2 , 2 )
дать
Код: plaintext
1.
PUBLIC ARRAY aaa( 2 , 2 )
Если проблема исчезла, значит причина - в области видимости массива или в вызове чего-то в вашем коде (типа DIMENSION aaa(3,2)), чего вы не учли.
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32995603
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, SET COMP
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32995611
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кузнецов ИгорьКак известно, массив можно объявлять повторно командой DECLARE. Причем можно указать другой размер массива - значения у него сохраняются (естественно, которые не затрагиваюся переразметкой массива).
Все замечательно подтверждается, если я проделываю в окне Command нечто подобное:
Код: plaintext
1.
2.
3.
4.
5.
DIMENSION aaa( 2 , 2 )
aaa( 2 , 1 )= 21 
aaa( 2 , 2 )= 22 
DIMENSION aaa( 3 , 2 )
DISPLAY MEMORY LIKE aaa
Значения в массиве сохранились.
Но если я тоже самое проделываю в моем приложении, то все значения в массиве принимают значение .F. после DIMENSION aaa(3,2). Какие установки могут повлять на такое поведение?
Ничего подобного. Результат после выполнения твоего кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
AAA       Priv  A
   ( 1 , 1 )  L     .F.
   ( 1 , 2 )  L     .F.
   ( 2 , 1 )  N      21 
   ( 2 , 2 )  N      22 
   ( 3 , 1 )  L     .F.
   ( 3 , 2 )  L     .F.
У меня VFP80 SP1.
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32995666
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Комментарий к команде:
Код: plaintext
1.
DIMENSION ArrayName1 (nRows1 [, nColumns1])
	[, ArrayName2 (nRows2 [, nColumns2])] ...
Если число элементов в массиве увеличивается, значения всех элементов первоначального массива копируются в новый расширенный массив. Дополнительные элементы массива инициализируются значением "ложь" (.F.).
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32996062
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир САНичего подобного. Результат после выполнения твоего кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
AAA       Priv  A
   ( 1 , 1 )  L     .F.
   ( 1 , 2 )  L     .F.
   ( 2 , 1 )  N      21 
   ( 2 , 2 )  N      22 
   ( 3 , 1 )  L     .F.
   ( 3 , 2 )  L     .F.
У меня VFP80 SP1.
Вот именно такой же результат и у меня, если я это проделываю вручную в окне Command!!! А в приложении результат получается -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
AAA       Priv  A
   ( 1 , 1 )  L     .F.
   ( 1 , 2 )  L     .F.
   ( 2 , 1 )  L     .F
   ( 2 , 2 )  L     .F.
   ( 3 , 1 )  L     .F.
   ( 3 , 2 )  L     .F.
Моя последовательность команд выполняется в методе Clik у кнопки. Если это важно могу его привести, но там все просто, никаких перескоков не делается. Все последовательно ...
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32996118
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Ts
Попробуйте вместо первого
Код: plaintext
1.
DIMENSION aaa( 2 , 2 )
дать
Код: plaintext
1.
PUBLIC ARRAY aaa( 2 , 2 )
Если проблема исчезла, значит причина - в области видимости массива или в вызове чего-то в вашем коде (типа DIMENSION aaa(3,2)), чего вы не учли.
Не помогает!
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32996126
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Urri тебе уже ответил в чем причина. Повторяю еще раз.

SET COMPATIBLE OFF

Это настройка по умолчанию. Если ее изменить на ON, то ты и получишь полное очищение массива при изменении размерности.

Не меняй настроек среды, если не понимаешь, что они означают!
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32996127
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай сюда код (хоть чюдес и не бывает, но иногда случаются)
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32996293
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ Urri тебе уже ответил в чем причина. Повторяю еще раз.

SET COMPATIBLE OFF

Это настройка по умолчанию. Если ее изменить на ON, то ты и получишь полное очищение массива при изменении размерности.

Не меняй настроек среды, если не понимаешь, что они означают!
Да, это оно! Для того и обращаемся к специалистам, потому что самим в своих опусах разобраться не могем.
...
Рейтинг: 0 / 0
Почему очищается массив?
    #32999237
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi ВладимирМ!

Но что ещё более удивительно, так это то, что вопрос на знание этой "особенности" вынесен в сертификацию на BrainBench! Всегда считал что вопросы связанные с редко/никогда не используемыми фишками есть неправильные :) а SET COMPATIBLE по сути такая и есть - её единственное "полезное" применение (и то с очень большой натяжкой!) это FSIZE() для определения размера файла.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Почему очищается массив?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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