Página 1 de 1
Bound Error.. Array Access
Enviado: 06 Mar 2008 23:39
por rangelssilva
Ao filtrar certos dados para serem colocados num vetor, utilizando achoice resulta em vazio....
Gostaria de saber como poderia fazer uma condicional dizendo se for vazio faça tal coisa... POis senão aparece a seguinte msg de erro: Bound Error array access....
If VenvetBr={}
Comandos
endif
Seria dessa maneira.. Não sei ao certo pois ten assim e deu errado....
Como utilizar uma condicional para isso...
Agradeço a colaboração amigos programadores.....
:'(
Bound error
Enviado: 07 Mar 2008 01:27
por Adalberto
Rangel
Pode perguntar assim:
IF EMPTY( LEN( VenvetBr ) )
Da Certo!
Enviado: 07 Mar 2008 03:56
por Maligno
Seu teste está correto. Mas não é necessário obter o tamanho da matriz. Você pode usar a forma simples de teste IF EMPTY(Matriz) que já é suficiente. Contudo, é importante lembrar que isso só funciona para matrizes unidimensionais. Se fosse uma matriz multidimensional, seria necessário proceder múltiplos testes em cada matriz interna.
Enviado: 07 Mar 2008 10:10
por Pablo César
Permita-me colega Maligno, exemplificar para melhor comprensão de todos.
Quando temos uma MATRIZ multidimensional, por exemplo:
MATRIZ:={{},{},{}}
Perceba que esta matriz é composta por outras três matrizes "aninhadas" e elas estão VAZIAS. No entanto se precisar saber se estão vazias, você deveria testar matriz a matriz, como por exemplo assim:
Código: Selecionar todos
MATRIZ:={{},{},{}}
* MATRIZ:={{"a","bb"},{1,2,3},{date(),.T.}} // Habilite esta linha p/ver outro exemplo
VAZIA:=.T.
FOR I=1 TO LEN(MATRIZ)
IF LEN(MATRIZ[I])>0
VAZIA:=.F.
EXIT
ENDIF
NEXT
IF VAZIA=.T.
? "Matriz sem elemento algum. Vazia."
ELSE
CONTA:=0
FOR I=1 TO LEN(MATRIZ)
CONTA:=CONTA+LEN(MATRIZ[I])
NEXT
? "Matriz com "+ALLTRIM(STR(CONTA))+" elemento"+(IF(CONTA=0,"","s"))+". Nao esta vazia."
ENDIF
Agora como disseram os colegas Adalberto e Maligno, para o caso que seu VETOR ou MATRIZ seja UNIDIMENSIONAL, é só fazer:
Código: Selecionar todos
VenvetBr={}
* VenvetBr={} // Habilite esta linha para ver outro exemplo
VenvetBr={}
* VenvetBr={"AAA","BBB"} // Outro exemplo
VAZIA:=.T.
CONTA:=LEN(VenvetBr)
IF CONTA=0
? "Matriz sem elemento algum. Vazia."
ELSE
? "Matriz com "+ALLTRIM(STR(CONTA))+" elemento"+(IF(CONTA=0,"","s"))+". Nao esta vazia."
ENDIF
Melhor explicado que isso é só dois, três, quatro disso... hihihi
Enviado: 07 Mar 2008 22:54
por rangelssilva
Obrigado gente.... As vezes fica dificil pensar em muita coisa, principalmente quando se trabalha o dia todo..fiquei 4,5 anos construindo um pequenos sistema para controle de venda e leilões onde posso admistrar melhor meus bens..... Se eu fuzesse so isso e fosse um programador porfissional poderia fazer algo mais complexo> Como sei que aqui tem muita gente experiente , fica mais fácil conseguir o que se precisa depois que me esgotaram as energias...
Vou testar as opções e qualquer dúvida mando um post novamente.......
Tenham um ótimo fim de semana....
Boas programação...

Enviado: 10 Mar 2008 12:03
por gvc
Eu uso:
if len(matriz) = 0 // Tá vazia
aadd(matriz, '')
end
ou
if len(matriz) = 0 // Tá vazia
aadd(matriz, {'', '', 0})
end
Boa sorte. Espero ter ajudado
Bound Error.. Array Access
Enviado: 25 Jun 2015 16:44
por microvolution
gente, de acordo com os exemplos postados, não sei se compreendi ao certo.
Estou a fazer um MENU GRÁFICO e os PROMPTs e os ACTIONs estou fazendo assim:
Código: Selecionar todos
DEFINE MAIN MENU
for I=1 TO LEN(MENU_GUI)
if MENU_GUI[I,1]='HOR'
if !empty(MENU_GUI[I,2])
POPUP MENU_GUI [I,2]
// END POPUP
endif
if !empty(MENU_GUI[I,3])
POPUP MENU_GUI [I,3]
// END POPUP
endif
if !empty(MENU_GUI[I,4])
POPUP MENU_GUI [I,4]
// END POPUP
endif
// if !empty(MENU_GUI[I,5])
// POPUP MENU_GUI [I,5]
// END POPUP
// endif
// if !empty(MENU_GUI[I,6])
// POPUP MENU_GUI [I,6]
// END POPUP
// endif
elseif MENU_GUI[I,1]='CAD'
MENUITEM MENU_GUI [I,1] ACTION MENU_GUI [I,2]
elseif MENU_GUI[I,1]='CAD1'
SEPARATOR
POPUP MENU_GUI [I,2]
END POPUP
endif
END POPUP
next
Acontece que a partir da linha COMENTADA (se não estiver comentada) aparece um erro de array. Na verdade preciso via programação verificar se esta posição está EMPTY/NIL, pra não dar o erro de array. Só que se colocar essa linha em funcionamento dá erro, se eu não colocá-la o erro para.
Agradeço a atenção de todos!
Ah! EU DECLARO QUE DEUS EXISTE! independente de sua crença nEle ou não, Ele sempre existiu e sempre existirá!