2010-08-09 7 views
2

В приложении Visual Foxpro один из пользователей получает ошибку (остальное - нет). И я верю, потому что массивы используются в форме arr (number) вместо arr [number]. Кто-нибудь знает, что вызывает это странное поведение у одного пользователя?Visual Foxpro Array [] или()

Спасибо!

+0

Насколько я знаю, нет никакой разницы между использованием [] и(). Они могут использоваться взаимозаменяемо. – EddieC

+1

Какое сообщение об ошибке? –

ответ

0

Либо использование ссылок на массивы действителен, если оно правильно сбалансировано как() или []. Вероятно, проблема связана с тем, где массив объявляется или готов. Мне пришлось отлаживать исторически странные экземпляры вроде этого, когда один пользователь переходил к процессу совершенно по-другому, чем другие, и к бизнес-потоку ... Во всяком случае, из-за некоторого «обходного» процесса, массив не был создавая и, таким образом, вынужденный провал.

Всегда ли это происходит в том же месте в процессе?

Я бы настоятельно рекомендовал некоторые ошибки захвата в процессе для этого «одного» пользователя. Хуже приходит к худшему, я бы поставил что-то в области кода что-то вроде ...

if atc("PersonsLoginName", sys(0)) > 0 
    TurnOnMyCustomDebugging() && for this special scenario trapping 
endif 

Кроме того, я не знаю, что у вас есть для перехвата ошибок, рутин, но я хотел бы получить дамп память во время ошибки и полный стек вызовов, который получил пользователя к этой точке. Если вам нужна помощь, сообщите мне об этом.

0

Foxpro не проводит различия между ними. Это фактически документировано как в примечаниях к командам DIMENSION, так и DECLARE.

Фактически, документация строго не следует так или иначе. Команды DIMENSION и DECLARE определяют синтаксис с помощью скобки().

DIMENSION ArrayName1(nRows1 [, nColumns1]) [AS cType] 
    [, ArrayName2(nRows2 [, nColumns2])] ... 

Но пример, приведенный в Arrays разделе документации используются квадратные скобки [].

DIMENSION ArrayName[5,2] 
ArrayName[1,2] = 966789 
+0

Документация строго следит за тем, что события между '[]' s являются необязательными параметрами, это не имеет никакого отношения к вопросу. –

+0

@rudi_visser Пожалуйста, прочтите это снова. Если вы посмотрите на объявление - игнорируя необязательные параметры, он использует parens. Затем, если вы посмотрите на пример, он использует квадратные скобки. – jveazey

Смежные вопросы