× Linguagem de Programação ADVPL

Perguntas Array out of bounds

Mais
3 anos 10 meses atrás #32971 por gilmargpc
Boa tarde

Conseguem me auxiliar num código, esta apresentando o erro
"array out of bounds [2] of [1] on { || ANMAPROV[NNMAPROV] + AOKLIB[NNMAPROV] }(MT120BRW.PRW) 14/01/2021 17:56:52 line : 161"
O erro esta neste array: aNmAprov[nNmAprov] + aOkLib[nNmAprov]
User Function PCAprov()
                       
Local cAprov := space(6)
Local aNmAprov := {}
//Local nNmAprov := 0
Local aOkLib := {}




cNumSC := sc7->c7_num
	                                                                        
// Identificando aprovador pendente...
	If !empty(SC7->C7_APROV7) .and. empty(SC7->C7_LIBOK7)
		cAprov 	:= SC7->C7_APROV7
	Endif
	If !empty(SC7->C7_APROV6) .and. empty(SC7->C7_LIBOK6)
		cAprov 	:= SC7->C7_APROV6
	Endif
	If !empty(SC7->C7_APROV5) .and. empty(SC7->C7_LIBOK5)
		cAprov 	:= SC7->C7_APROV5
	Endif
	If !empty(SC7->C7_APROV4) .and. empty(SC7->C7_LIBOK4)
		cAprov 	:= SC7->C7_APROV4
	Endif
	If !empty(SC7->C7_APROV3) .and. empty(SC7->C7_LIBOK3)
		cAprov 	:= SC7->C7_APROV3
	Endif
	If !empty(SC7->C7_APROV2) .and. empty(SC7->C7_LIBOK2)
		cAprov 	:= SC7->C7_APROV2
	Endif
	If !empty(SC7->C7_APROV1) .and. empty(SC7->C7_LIBOK1)
		cAprov 	:= SC7->C7_APROV1
	Endif   

	If !empty(SC7->C7_APROV1)
			aadd(aNmAprov , UsrRetName(SC7->C7_APROV1))
			aadd(aOkLib , " ")		
	Endif	
		If !empty(SC7->C7_APROV2)
			aadd(aNmAprov , UsrRetName(SC7->C7_APROV2))
			aadd(aOkLib , " ")		
		Endif	
		If !empty(SC7->C7_APROV3)
			aadd(aNmAprov , UsrRetName(SC7->C7_APROV3))
			aadd(aOkLib , " ")		
		Endif	
		If !empty(SC7->C7_APROV4)
			aadd(aNmAprov , UsrRetName(SC7->C7_APROV4))
			aadd(aOkLib , " ")		
		Endif	
		If !empty(SC7->C7_APROV5)
			aadd(aNmAprov , UsrRetName(SC7->C7_APROV5))
			aadd(aOkLib , " ")		
		Endif	
		If !empty(SC7->C7_APROV6)
			aadd(aNmAprov , UsrRetName(SC7->C7_APROV6))
			aadd(aOkLib , " ")		
		Endif	
		If !empty(SC7->C7_APROV7)
			aadd(aNmAprov , UsrRetName(SC7->C7_APROV7))
			aadd(aOkLib , " ")		
		Endif	

// Identifiando quem aprovou:
		If len(aOkLib) = 0
			aadd(aNmAprov , "*** SEM APROVADORES CADASTRADOS ***")
			aadd(aOkLib , " ")		
		Endif

		If !empty(SC7->C7_LIBOK1) 
			aOkLib[1] := " - " + iif(SC7->C7_LIBOK1="S","Aprovado" , "Reprovado") + " em " + dtoc(SC7->C7_DTLIB1)
		Endif	
		If !empty(SC7->C7_LIBOK2) .and. len(aOkLib)>1
			aOkLib[2] := " - " + iif(SC7->C7_LIBOK2="S","Aprovado" , "Reprovado") + " em " +  dtoc(SC7->C7_DTLIB2)
		Endif	
		If !empty(SC7->C7_LIBOK3) .and. len(aOkLib)>2
			aOkLib[3] :=" - " + iif(SC7->C7_LIBOK3="S","Aprovado" , "Reprovado") + " em " +  dtoc(SC7->C7_DTLIB3)
		Endif	
		If !empty(SC7->C7_LIBOK4) .and. len(aOkLib)>3
			aOkLib[4] := " - " + iif(SC7->C7_LIBOK4="S","Aprovado" , "Reprovado") + " em " + dtoc(SC7->C7_DTLIB4)
		Endif	
		If !empty(SC7->C7_LIBOK5) .and. len(aOkLib)>4
			aOkLib[5] := " - " + iif(SC7->C7_LIBOK5="S","Aprovado" , "Reprovado") + " em " +  dtoc(SC7->C7_DTLIB5)
		Endif	
		If !empty(SC7->C7_LIBOK6) .and. len(aOkLib)>5
			aOkLib[6] := " - " + iif(SC7->C7_LIBOK6="S","Aprovado" , "Reprovado") + " em " +  dtoc(SC7->C7_DTLIB6)
		Endif	
		If !empty(SC7->C7_LIBOK7) .and. len(aOkLib)>6
			aOkLib[7] := " - " + iif(SC7->C7_LIBOK7="S","Aprovado" , "Reprovado") + " em " +  dtoc(SC7->C7_DTLIB7)
		Endif			

nLiIni := 005

@ 001,1 TO 200,500 DIALOG oDlg2 TITLE "Aprovadores deste PC: " + cNumSC            
//Lista todos os aprovadores envolvidos		

oFont := TFont():New('Courier new',,-18,.T.)

For nNmAprov := 1 to len(aNmAprov)
	oSay:= TSay():New(@ nLiIni,04, {|| aNmAprov[nNmAprov] + aOkLib[nNmAprov] },oDlg2,,oFont,,,,.T.,CLR_RED,CLR_WHITE,200,20)
	nLiIni := nLiIni + 10
Next


@ 75,50 BMPBUTTON TYPE 1 ACTION Close(oDlg2)
ACTIVATE DIALOG oDlg2 CENTERED


Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 10 meses atrás #32972 por admin
Respondido por admin no tópico Array out of bounds
Brother bom dia, certeza que seu vetor ou está vazio, ou tem menos elementos que a variavel nnmaprov, vc precisa debugar mesmo, não tem outra forma.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.148 segundos
Joomla templates by a4joomla