Comando FOR EACH...IN...NEXT
Moderador: Moderadores
Comando FOR EACH...IN...NEXT
Boa tarde!
Eu gostaria de saber como usa o comando FOR EACH ... IN ... NEXT. Não estou entendendo a sintexe do comando. Se alguém me poder ajudar ficarei grato. E qual a diferença entre este comando e o FOR...TO...NEXT.
Abraços,
Paulo
Jacareí/SP
Eu gostaria de saber como usa o comando FOR EACH ... IN ... NEXT. Não estou entendendo a sintexe do comando. Se alguém me poder ajudar ficarei grato. E qual a diferença entre este comando e o FOR...TO...NEXT.
Abraços,
Paulo
Jacareí/SP
Comando FOR EACH...IN...NEXT
Você pode encontrar nessa documentação (ítem 3.2)
http://www.kresin.ru/en/hrbfaq_3.html#Doc2
E nesse também :
https://vivaclipper.wordpress.com/2012/ ... next-loop/
Basicamente o FOR EACH percorre cada ítem de um elemento. Esse elemento pode ser uma string, um array ou um hash.
http://www.kresin.ru/en/hrbfaq_3.html#Doc2
E nesse também :
https://vivaclipper.wordpress.com/2012/ ... next-loop/
Basicamente o FOR EACH percorre cada ítem de um elemento. Esse elemento pode ser uma string, um array ou um hash.
Comando FOR EACH...IN...NEXT
Boa noite! Como eu converto o seguinte FOR ... TO ... NEXT para FOR EACH ... IN ... nesta parte do meu sistema.
Quem puder me ajudar ficarei muito grato.
Atenciosamente,
Paulo Takami
Jacareí/SP
Código: Selecionar todos
cPeso := "3298765432"
cParte := SUBSTR( cCpf , 1 , 10 )
nParcial := 0
nResult2 := 0
*------------------------------- Calculo do digito
FOR x = 1 TO 10
nParcial += ( VAL ( SUBSTR( cParte , x , 1 ) ) * VAL( SUBSTR ( cPeso , x , 1 ) ) )
NEXT xAtenciosamente,
Paulo Takami
Jacareí/SP
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando FOR EACH...IN...NEXT
imagine o seguinte: para cada elemento do array, fazer determinada operação.
Usuários do fórum:
Com FOR/NEXT
Com FOR/EACH, atenção que pode obrigar a declarar a variável pra poder funcionar:
Pode usar um nome mais adequado ao elemento também, e poderia usar direto o array:
Se for usado sobre uma string, cada elemento é uma letra da string.
Usuários do fórum:
Código: Selecionar todos
aForumPCToledo := { "TOLEDO", "JOSE QUINTAS", "ASIMOES", "PAULO_CPV", "VLADEMIRO" }
Código: Selecionar todos
FOR nCont = 1 TO Len( aForumPCToledo )
? aForumPCToledo[ nCont ]
NEXT
Código: Selecionar todos
LOCAL oElement
FOR EACH oElement IN aForumPCToledo
? oElement
NEXT
Código: Selecionar todos
LOCAL oUsuario
FOR EACH oUsuario IN { "TOLEDO", "JOSE QUINTAS", "ASIMOES", "PAULO_CPV", "VLADEMIRO" }
? oUsuario
NEXT
Código: Selecionar todos
FOR EACH cLetra IN "TESTE DO FOR EACH"
? cLetra
NEXT
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando FOR EACH...IN...NEXT
No seu loop vai precisar de algo mais "avançado", digamos assim, porque precisa saber o número do elemento atual:
Tem outro uso do FOR/EACH mas não entendi, não sei se aplicaria no seu caso, usando duas variáveis de uma vez.
Código: Selecionar todos
cPeso := "3298765432"
// cParte := SUBSTR( cCpf , 1 , 10 )
nParcial := 0
nResult2 := 0
FOR EACH oElement IN Substr( cCpf, 1, 10 )
nParcial += VAL ( oElement ) * VAL( SUBSTR ( cPeso , oElement:__EnumIndex , 1 ) ) )
NEXT
Código: Selecionar todos
FOR EACH a, b IN x, y
NEXT
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando FOR EACH...IN...NEXT
Aplica sim:
Então:
Código: Selecionar todos
PROCEDURE Main
LOCAL A, B
FOR EACH A, B IN "123456", "abcdef"
? a, b
NEXT
RETURN
Código: Selecionar todos
1 a
2 b
3 c
4 d
5 e
6 f
Código: Selecionar todos
PROCEDURE Main
LOCAL A, B, cCpf := "11122233344", cFator := "3298765432", nParcial := 0
FOR EACH A, B IN cCpf, cFator
nParcial += Val( a ) * Val( b )
NEXT
? nParcial
RETURN
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Comando FOR EACH...IN...NEXT
Eita... sempre aprendendo... esta da String não sabia.
Vlw
Vlw
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando FOR EACH...IN...NEXT
Tem mais um uso, pra trocar a string original, a string precisa ser por referência:
Nota: Array não precisa, porque por default já é por referência
Código: Selecionar todos
PROCEDURE Main
LOCAL cString := "ABCDEFGHIJKLMNOPQ", cLetra
FOR EACH cLetra IN @cString
IF cLetra $ "BDEF"
cLetra := Lower( cLetra )
ENDIF
NEXT
? cString
RETURN
Código: Selecionar todos
AbCdefGHIJKLMNOPQ
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Comando FOR EACH...IN...NEXT
Boa tarde! Obrigado por todos me darem ajuda sobre o assunto, mas gostaria se vocês tem mais exemplos do comando para me passar e qual é a sintaxe dele: o que eu coloco na FOR EACH <tipo conteúdo> IN <tipo de conteúdo>.
Abraços,
Paulo - Jacareí/SP
Abraços,
Paulo - Jacareí/SP
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando FOR EACH...IN...NEXT
Tem todos os exemplos aí.
Talvez mais simples se pensar nisso em português:
o que está em minúsculo, pode usar o nome que quiser/precisar.
Talvez mais simples se pensar nisso em português:
Código: Selecionar todos
PARA CADA elemento DENTRO_DE lista
? elemento
PROXIMO
Código: Selecionar todos
FOR EACH oElement IN lista
? oElement
NEXT
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Comando FOR EACH...IN...NEXT
Muito bom Quintas, excelente recurso.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Comando FOR EACH...IN...NEXT
Acho interessante ressaltar o uso em hash que acho bem bacana também:
Código: Selecionar todos
PROCEDURE Teste()
LOCAL hTeste := HB_Hash()
LOCAL element
hTeste["a"] := 1
hTeste["b"] := 2
FOR EACH element IN hTeste
? element // valor do componente, neste caso 1 e 2
? element:__enumKey() //neste caso é apresentado a chave da hash, neste caso "a" e "b"
NEXT
RETURN
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando FOR EACH...IN...NEXT
Olhem este:
Código: Selecionar todos
cDest := XmlNode( cDest, "enderDest" )
::aDest[ "xLgr" ] := XmlNode( cDest, "xLgr" )
::aDest[ "nro" ] := XmlNode( cDest, "nro" )
::aDest[ "xCpl" ] := XmlNode( cDest, "xCpl" )
::aDest[ "xBairro" ] := XmlNode( cDest, "xBairro" )
::aDest[ "cMun" ] := XmlNode( cDest, "cMun" )
::aDest[ "xMun" ] := XmlNode( cDest, "xMun" )
::aDest[ "UF" ] := XmlNode( cDest, "UF" )
::aDest[ "CEP" ] := XmlNode( cDest, "CEP" )
::aDest[ "cPais" ] := XmlNode( cDest, "cPais" )
::aDest[ "xPais" ] := XmlNode( cDest, "xPais" )
Código: Selecionar todos
cDest := XmlNode( cDest, "enderDest" )
FOR EACH oElement IN { "xLgr", "nro", "xCpl", "xBairro", "cMun", "xMun", "UF", "CEP", "cPais", "xPais" }
::aDest[ oElement ] := XmlNode( cDest, oElement )
NEXT
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Comando FOR EACH...IN...NEXT
Quintas,
Esse seu último post foi usando hb_hash()?
Esse seu último post foi usando hb_hash()?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando FOR EACH...IN...NEXT
Sim, é que é parte de um fonte da hbnfe.
::aDest também é variável de uma classe.
Tem lá na classe
::aDest também é variável de uma classe.
Tem lá na classe
Código: Selecionar todos
::aDest := hb_Hash()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/


