:: Visual Foxpro, Foxpro for DOS
Проблема с массивами
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Уважаемые форумчане! Изредка появляется вот такой глюк.
CLEAR
LOCAL ARRAY cArray[300]
FOR m.jk=1 TO 300
cArray[m.jk]=TRANSFORM(m.jk)
ENDFOR
? cArray[254] && 254 - Ок
? cArray[255] && 255 - Ок
? cArray[256] && 256 - Ок
? cArray[257] && 257 - Ок
? "&cArray[254]" && 254 - Ок
? "&cArray[255]" && 255 - Ок
? "&cArray[256]" && &cArray[256] - проблема
? "&cArray[257]" && &cArray[257] - проблема
прошу не ругать за конструкцию типа "&cArray[256]" (такая необходимость). почему -то до 255 элемента значения выдаются, а после на команде ? "&cArray[256]" результат в виде ссылки на то же самый элемент массива. Может кто сталкивался ? Спасибо.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
При выходе за размерность массива всегда так будет. Но странная конструкция, откровенно.
CLEAR
LOCAL ARRAY cArray[300]
FOR m.jk=1 TO 300
cArray[m.jk]=TRANSFORM(m.jk)
ENDFOR
? cArray[254] && 254 - ??
? cArray[255] && 255 - ??
? cArray[256] && 256 - ??
? cArray[257] && 257 - ??
? "&cArray[254]" && 254 - ??
? "&cArray[255]" && 255 - ??
? "&cArray[256]" && &cArray[256] - ?
? "&cArray[301]" && &cArray[257] - ?
Ratings: 0 negative/0 positive
Re: Проблема с массивами
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
pasha_usue
При выходе за размерность массива всегда так будет. Но странная конструкция, откровенно.
CLEAR
LOCAL ARRAY cArray[300]
FOR m.jk=1 TO 300
cArray[m.jk]=TRANSFORM(m.jk)
ENDFOR
? cArray[254] && 254 - ??
? cArray[255] && 255 - ??
? cArray[256] && 256 - ??
? cArray[257] && 257 - ??
? "&cArray[254]" && 254 - ??
? "&cArray[255]" && 255 - ??
? "&cArray[256]" && &cArray[256] - ?
? "&cArray[301]" && &cArray[257] - ?
Спасибо за ответ. Но я разве за размерность где-то вышел ?


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
dimuhametov
Спасибо за ответ. Но я разве за размерность где-то вышел ?
Не знаю. У меня 256 и 257 нормально вышли, а 301 - точно как вы описываете.

PS. Может у вас там не константы, а счётчик. И этот счётчик ограничен байтом (в таблице, например, лежит).



Исправлено 1 раз(а). Последнее : pasha_usue, 15.10.19 08:59
Ratings: 0 negative/0 positive
Re: Проблема с массивами
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
pasha_usue
PS. Может у вас там не константы, а счётчик. И этот счётчик ограничен байтом (в таблице, например, лежит).
поподробней можно


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
dimuhametov
pasha_usue
PS. Может у вас там не константы, а счётчик. И этот счётчик ограничен байтом (в таблице, например, лежит).
поподробней можно
Не знаю, как подробней. Я ж реального кода не вижу. Идея в том, что проблема не в размерности массива, а в максимальной размерности счётчика, по которому выдёргивается значение массива. А почему оно вдруг ограничилось, это я сказать не могу.
Могу сказать только, что счётчик размеров в байт, поэтому и не больше 255.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
pasha_usue
dimuhametov
pasha_usue
PS. Может у вас там не константы, а счётчик. И этот счётчик ограничен байтом (в таблице, например, лежит).
поподробней можно
Не знаю, как подробней. Я ж реального кода не вижу. Идея в том, что проблема не в размерности массива, а в максимальной размерности счётчика, по которому выдёргивается значение массива. А почему оно вдруг ограничилось, это я сказать не могу.
Могу сказать только, что счётчик размеров в байт, поэтому и не больше 255.
Код я в начале привел. Больше другого кода нет. Есть открытая среда IDE, которая дает ошибку. Если перезапустить IDE то ошибка исчезнет. Спасибо за теорию.


------------------
Незнание делает жизнь такой интересной.




Исправлено 1 раз(а). Последнее : dimuhametov, 15.10.19 11:06
Ratings: 0 negative/0 positive
Re: Проблема с массивами
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
dimuhametov
Код я в начале привел. Больше другого кода нет. Есть открытая среда IDE, которая дает ошибку. Если перезапустить IDE то ошибка исчезнет. Спасибо за теорию.
Я не смог повторить на этом коде.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
У меня только так получается, может наведёт на какие-то мысли.

CLEAR
LOCAL ARRAY cArray[300]
FOR m.jk=1 TO 255
cArray[m.jk]=TRANSFORM(m.jk)
ENDFOR
? cArray[254] && 254 - Ок
? cArray[255] && 255 - Ок
? cArray[256] && 256 - Ок
? cArray[257] && 257 - Ок
? "&cArray[254]" && 254 - Ок
? "&cArray[255]" && 255 - Ок
? "&cArray[256]" && &cArray[256] - проблема
? "&cArray[257]" && &cArray[257] - проблема


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Проблема с массивами
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
Размерность до 300 а инициалисация до 255 = > Остаток = .F.

CLEAR
LOCAL ARRAY cArray[300]
cArray = ''
FOR m.jk=1 TO 255
cArray[m.jk]=TRANSFORM(m.jk)
ENDFOR
? cArray[254] && 254 - Ок
? cArray[255] && 255 - Ок
? cArray[256] && 256 - Ок
? cArray[257] && 257 - Ок
? "&cArray[254]" && 254 - Ок
? "&cArray[255]" && 255 - Ок
? "&cArray[256]" && &cArray[256] - проблема
? "&cArray[257]" && &cArray[257] - проблема


------------------
Никогда не откладывайте на завтра, то, о чем можно забыть навсегда




Исправлено 3 раз(а). Последнее : Penner, 15.10.19 11:43
Ratings: 0 negative/0 positive
Re: Проблема с массивами
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Код я привел выше. Если кто хочет увидеть проблему воотчуюю, могу через Teamviewer подключить. Только IDE среду с ошибкой не отключать.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
dimuhametov
Если перезапустить IDE то ошибка исчезнет.
Что совершенно недвусмысленно говорит о чем-то накопленном до выполнения приведенного кода. Что говорит ?Alen(cArray) при наличии ошибки?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
ssa
dimuhametov
Если перезапустить IDE то ошибка исчезнет.
Что совершенно недвусмысленно говорит о чем-то накопленном до выполнения приведенного кода. Что говорит ?Alen(cArray) при наличии ошибки?
?Alen(cArray) возвращает 300


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
dimuhametov
ssa
dimuhametov
Если перезапустить IDE то ошибка исчезнет.
Что совершенно недвусмысленно говорит о чем-то накопленном до выполнения приведенного кода. Что говорит ?Alen(cArray) при наличии ошибки?
?Alen(cArray) возвращает 300
Кстати. Любое не CHAR значение также возвращает &cArray[256]. На Numeric, Boolean, NULL проверил.

Говорю ж, странная конструкция. Возможно, у интерпретатора с порядком выполнения возникают проблемы.

PS. И строка должна быть не больше 255 символов в длину, иначе тоже ломается. cArray[256]=PADL("", 256, cArray[256])



Исправлено 1 раз(а). Последнее : pasha_usue, 15.10.19 12:12
Ratings: 0 negative/0 positive
Re: Проблема с массивами
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Думаю, надо ещё проверить

?VARTYPE(cArray[256])
?LEN(cArray[256])

Чисто для очистки совести.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
pasha_usue
Думаю, надо ещё проверить
?VARTYPE(cArray[256])
?LEN(cArray[256])

Чисто для очистки совести.
? VARTYPE(cArray[256]) && C
? LEN(cArray[256]) && 3


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
dimuhametov
Изредка появляется вот такой глюк.
CLEAR
LOCAL ARRAY cArray[300]
FOR m.jk=1 TO 300
cArray[m.jk]=TRANSFORM(m.jk)
ENDFOR
? cArray[254] && 254 - Ок
? cArray[255] && 255 - Ок
? cArray[256] && 256 - Ок
? cArray[257] && 257 - Ок
? "&cArray[254]" && 254 - Ок
? "&cArray[255]" && 255 - Ок
? "&cArray[256]" && &cArray[256] - проблема
? "&cArray[257]" && &cArray[257] - проблема

Запускаю, повторно запускаю, еще и еще - вообще никакого глюка (проблемы) нет. Т.е. все однотипно выполняется.
Может быть что-то со средой в твоем случае?

Пробовал и в версии 9 SP2 (7423), и кстати в версии VFPA(10) - все выполняется без проблем.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 15.10.19 12:43
Ratings: 0 negative/0 positive
Re: Проблема с массивами
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Crispy
dimuhametov
Изредка появляется вот такой глюк.
CLEAR
LOCAL ARRAY cArray[300]
FOR m.jk=1 TO 300
cArray[m.jk]=TRANSFORM(m.jk)
ENDFOR
? cArray[254] && 254 - Ок
? cArray[255] && 255 - Ок
? cArray[256] && 256 - Ок
? cArray[257] && 257 - Ок
? "&cArray[254]" && 254 - Ок
? "&cArray[255]" && 255 - Ок
? "&cArray[256]" && &cArray[256] - проблема
? "&cArray[257]" && &cArray[257] - проблема

Запускаю, повторно запускаю, еще и еще - вообще никакого глюка (проблемы) нет. Т.е. все однотипно выполняется.
Может быть что-то со средой в твоем случае?

Пробовал и в версии 9 SP2 (7423), и кстати в версии VFPA(10) - все выполняется без проблем.

Да, безусловно, со средой проблемы. Ошибка редкая, но появляется. Думал у кого было нечто похожее. Ошибку поймал сегодня.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Проблема с массивами
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
dimuhametov
Ошибка редкая, но появляется. Думал у кого было нечто похожее. Ошибку поймал сегодня.

А если например попробовать поменять имя массива и понаблюдать?
В смысле - нет ли каких-то проблем пересечений именно с используемыми именами переменных?


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Проблема с массивами
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Crispy
dimuhametov
Ошибка редкая, но появляется. Думал у кого было нечто похожее. Ошибку поймал сегодня.

А если например попробовать поменять имя массива и понаблюдать?
В смысле - нет ли каких-то проблем пересечений именно с используемыми именами переменных?
Любой создаваемый массив ведет себя аналогичным образом, менял переменные, менял имя массива, копировал в другой массив, чистил все CLEARом, делал Release.
все также без изменений. Наверно проблема с мифическим однобайтным счетчиком.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика