... structure" )
? oXmlNode:cName
oXmlNode := oXmlDoc:findFirst( "field" )
DO WHILE oXmlNode <> NIL
// attributes are stored in a hash
AAdd( aStruct, { oXmlNode:aAttributes[ "name" ] , ;
oXmlNode:aAttributes[ "type" ] , ;
Val( oXmlNode:aAttributes[ "len" ] ), ;
Val( oXmlNode ...
Pesquisa resultou em 1822 ocorrências: +AAdd
Termo pesquisado: +aadd
- 26 Jan 2026 22:54
- Fórum: [x]Harbour
- Tópico: En tiempo de ejecución error.log
- Respostas: 3
- Exibições: 29
- 22 Jan 2026 22:58
- Fórum: HwGui
- Tópico: DESATIVAR TAB HWGUI 2.23 B8
- Respostas: 21
- Exibições: 326
Re: DESATIVAR TAB HWGUI 2.23 B8
... lOk := .T.
IF Empty( cPathLeto )
RETURN .F.
ENDIF
BEGIN SEQUENCE
// 1) cria DBF se não existir
IF ! leto_file( cPathLeto + "psw.dbf" )
AAdd( aStru, { "USUARIO", "C", 10, 0 } )
AAdd( aStru, { "SENHA", "C", 10, 0 } )
AAdd( aStru, { "GRUPO", "C", 20, 0 } )
AAdd( aStru, { "ACESSO", "C ...
IF Empty( cPathLeto )
RETURN .F.
ENDIF
BEGIN SEQUENCE
// 1) cria DBF se não existir
IF ! leto_file( cPathLeto + "psw.dbf" )
AAdd( aStru, { "USUARIO", "C", 10, 0 } )
AAdd( aStru, { "SENHA", "C", 10, 0 } )
AAdd( aStru, { "GRUPO", "C", 20, 0 } )
AAdd( aStru, { "ACESSO", "C ...
- 22 Jan 2026 17:05
- Fórum: SQL
- Tópico: Carga do DBF para MySql/Postgres e LetoDbf juntos!
- Respostas: 16
- Exibições: 16908
Re: Carga do DBF para MySql/Postgres e LetoDbf juntos!
... IF PQresultStatus( res ) != PGRES_TUPLES_OK
? "Erro SQL:"
? PQresultErrorMessage( res )
RETURN aRet
ENDIF
FOR n := 1 TO PQntuples( res )
AAdd( aRet, DbRow( res, n ) )
NEXT
RETURN aRet
/* ========================================================= */
FUNCTION SqlFilter( conn, cTabela ...
? "Erro SQL:"
? PQresultErrorMessage( res )
RETURN aRet
ENDIF
FOR n := 1 TO PQntuples( res )
AAdd( aRet, DbRow( res, n ) )
NEXT
RETURN aRet
/* ========================================================= */
FUNCTION SqlFilter( conn, cTabela ...
- 11 Jan 2026 09:25
- Fórum: MiniGui
- Tópico: Ajuda na criação de Botões
- Respostas: 25
- Exibições: 574
Re: Ajuda na criação de Botões
... os botões, pode facilitar.
Não tenho certeza se precisa mexer nos CHs pra aceitar igual HMG Extended.
aButtons := {}
...
DEFINE BUTTON ( "xxx" )
AAdd( aButtons, "XXX" )
...
A partir daí, pode verificar o array, como um array comum.
Não se esqueça que, se tiver exclusão no array, melhor ...
Não tenho certeza se precisa mexer nos CHs pra aceitar igual HMG Extended.
aButtons := {}
...
DEFINE BUTTON ( "xxx" )
AAdd( aButtons, "XXX" )
...
A partir daí, pode verificar o array, como um array comum.
Não se esqueça que, se tiver exclusão no array, melhor ...
- 09 Jan 2026 00:50
- Fórum: MiniGui
- Tópico: Ajuda na criação de Botões
- Respostas: 25
- Exibições: 574
Re: Ajuda na criação de Botões
... ponteiro,2]>0 .AND. matriz_Botao_Artigo[ponteiro,2]<2
Carrega_Botoes_Artigos( aNomeButton )
matriz_Botao_Artigo[ponteiro,2] :=2
ENDIF
ELSE
AADD(matriz_Botao_Artigo, { aNomeButton, 1 })
ENDIF
ENDIF
Return Nil
Pergunto-lhe, acha que devo fazer um RELEASE aos botões quando mudo de grupo ou ...
Carrega_Botoes_Artigos( aNomeButton )
matriz_Botao_Artigo[ponteiro,2] :=2
ENDIF
ELSE
AADD(matriz_Botao_Artigo, { aNomeButton, 1 })
ENDIF
ENDIF
Return Nil
Pergunto-lhe, acha que devo fazer um RELEASE aos botões quando mudo de grupo ou ...
- 15 Dez 2025 16:45
- Fórum: [x]Harbour
- Tópico: Rotina em c# para harbour
- Respostas: 5
- Exibições: 380
Re: Rotina em c# para harbour
... msxml5r.dll', 'capicom.dll' }
// 1. Converter string em bytes (igual Encoding.GetBytes)
aBytes := {}
FOR i := 1 TO Len( cTextoOriginal )
AAdd( aBytes, Asc( SubStr( cTextoOriginal, i, 1 ) ) )
NEXT
// 2. Criar hash SHA1 dos bytes
aHash := hb_SHA1( aBytes )
oXml ...
// 1. Converter string em bytes (igual Encoding.GetBytes)
aBytes := {}
FOR i := 1 TO Len( cTextoOriginal )
AAdd( aBytes, Asc( SubStr( cTextoOriginal, i, 1 ) ) )
NEXT
// 2. Criar hash SHA1 dos bytes
aHash := hb_SHA1( aBytes )
oXml ...
- 12 Dez 2025 15:05
- Fórum: HwGui
- Tópico: Abas com texto control ainda nao funciona na versao 2.23
- Respostas: 51
- Exibições: 1590
Re: Abas com texto control ainda nao funciona na versao 2.23
... aCB[i,2] == cId
EXIT
ENDIF
NEXT
IF Empty( block )
IF i <= nLen
ADel( ::aCB, i )
::aCB := ASize( ::aCB, nLen - 1 )
ENDIF
ELSE
IF i > nLen
AAdd( ::aCB, { nId, cId, block } )
ELSE
::aCB[i,3] := block
ENDIF
ENDIF
RETURN Nil
METHOD Get( nId ) CLASS HPaintCB
LOCAL i, nLen, aRes
IF ...
EXIT
ENDIF
NEXT
IF Empty( block )
IF i <= nLen
ADel( ::aCB, i )
::aCB := ASize( ::aCB, nLen - 1 )
ENDIF
ELSE
IF i > nLen
AAdd( ::aCB, { nId, cId, block } )
ELSE
::aCB[i,3] := block
ENDIF
ENDIF
RETURN Nil
METHOD Get( nId ) CLASS HPaintCB
LOCAL i, nLen, aRes
IF ...
- 23 Nov 2025 14:44
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Encontrando a rota entre duas UFs
- Respostas: 2
- Exibições: 259
Re: Encontrando a rota entre duas UFs
... aRotaOk
LOCAL cUFOrigem, aItem, cUF, aRotas, aUFList := {}
FOR EACH cUF IN aUFSource
IF hb_AScan( aUFList, { | e | e == cUF } ) == 0
AAdd( aUFList, cUF )
ENDIF
NEXT
IF Len( aUFList ) == 0
RETURN {}
ENDIF
IF Len( aUFList ) == 1
RETURN { aUFList[1] }
ENDIF
FOR EACH cUF IN ...
LOCAL cUFOrigem, aItem, cUF, aRotas, aUFList := {}
FOR EACH cUF IN aUFSource
IF hb_AScan( aUFList, { | e | e == cUF } ) == 0
AAdd( aUFList, cUF )
ENDIF
NEXT
IF Len( aUFList ) == 0
RETURN {}
ENDIF
IF Len( aUFList ) == 1
RETURN { aUFList[1] }
ENDIF
FOR EACH cUF IN ...
- 21 Nov 2025 16:35
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Encontrando a rota entre duas UFs
- Respostas: 2
- Exibições: 259
Encontrando a rota entre duas UFs
... cUF )
//? "vizinhos", nPass, hb_ValToExp( aTrajeto )
//Inkey(10)
FOR EACH xItem IN aTrajeto
aNewList := {}
FOR EACH xItem2 IN aList2
AAdd( aNewList, xItem2 )
NEXT
AAdd( aNewList, xItem )
//? "adicionado", nPass, hb_ValToExp( { xItem, aNewList } )
//Inkey(10)
AAdd( aList, { xItem ...
//? "vizinhos", nPass, hb_ValToExp( aTrajeto )
//Inkey(10)
FOR EACH xItem IN aTrajeto
aNewList := {}
FOR EACH xItem2 IN aList2
AAdd( aNewList, xItem2 )
NEXT
AAdd( aNewList, xItem )
//? "adicionado", nPass, hb_ValToExp( { xItem, aNewList } )
//Inkey(10)
AAdd( aList, { xItem ...
- 20 Nov 2025 09:52
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Fluxo dos fontes
- Respostas: 3
- Exibições: 311
Re: Fluxo dos fontes
... aFieldList, { | e | e[1] == aField[ DBS_NAME ] } )
IF nPos == 0
//? aField[ DBS_NAME ], aField[ DBS_TYPE ], aField[ DBS_LEN ], aField[ DBS_DEC ]
AAdd( aFieldList, { aField[ DBS_NAME ], 0 } )
nPos := Len( aFieldList )
ENDIF
aFieldList[ nPos, 2 ] += 1
NEXT
USE
NEXT
ASort( aFieldList,,, { | a ...
IF nPos == 0
//? aField[ DBS_NAME ], aField[ DBS_TYPE ], aField[ DBS_LEN ], aField[ DBS_DEC ]
AAdd( aFieldList, { aField[ DBS_NAME ], 0 } )
nPos := Len( aFieldList )
ENDIF
aFieldList[ nPos, 2 ] += 1
NEXT
USE
NEXT
ASort( aFieldList,,, { | a ...
- 20 Nov 2025 09:48
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Fluxo dos fontes
- Respostas: 3
- Exibições: 311
Fluxo dos fontes
... pro contrário
FOR EACH aItem IN aPrgList
FOR EACH aItem2 IN aItem[3]
nPos := hb_AScan( aNewList, { | e | e[1] == aItem2[1] } )
IF nPos == 0
AAdd( aNewList, { aItem2[1], {} } )
nPos := Len( aNewList )
ENDIF
AAdd( aNewList[ nPos ][ 2 ], { aItem[1], {} } )
NEXT
NEXT
// tentar mover pra ...
FOR EACH aItem IN aPrgList
FOR EACH aItem2 IN aItem[3]
nPos := hb_AScan( aNewList, { | e | e[1] == aItem2[1] } )
IF nPos == 0
AAdd( aNewList, { aItem2[1], {} } )
nPos := Len( aNewList )
ENDIF
AAdd( aNewList[ nPos ][ 2 ], { aItem[1], {} } )
NEXT
NEXT
// tentar mover pra ...
- 17 Nov 2025 07:49
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Corrigindo aplicativo antigo
- Respostas: 3
- Exibições: 258
Re: Corrigindo aplicativo antigo
... cLine ) + 1 )
cLine := Val( Substr( cLine, 1, At( ":", cLine ) - 1 ) )
nPos := hb_AScan( aPrgList, { | e | e[1] == cFile } )
IF nPos == 0
AAdd( aPrgList, { cFile, {} } )
nPos := Len( aPrgList )
ENDIF
AAdd( aPrgList[ nPos ][ 2 ], cLine )
ENDIF
NEXT
hb_MemoWrit( "test.txt", hb ...
cLine := Val( Substr( cLine, 1, At( ":", cLine ) - 1 ) )
nPos := hb_AScan( aPrgList, { | e | e[1] == cFile } )
IF nPos == 0
AAdd( aPrgList, { cFile, {} } )
nPos := Len( aPrgList )
ENDIF
AAdd( aPrgList[ nPos ][ 2 ], cLine )
ENDIF
NEXT
hb_MemoWrit( "test.txt", hb ...
- 17 Out 2025 18:36
- Fórum: [x]Harbour
- Tópico: Exemplo de uso de HBCURL.LIB para xHarbour?
- Respostas: 10
- Exibições: 13959
Exemplo de uso de HBCURL.LIB para xHarbour?
... desconto
hNfe:Total:vlricms := nfe->vlricms
hNfe:Itens := {} // populando itens com array ou hash com código do item
For each hitem in hitens
Aadd(hnfe:itens, { hitem:codigo, hitem:Qtd, hitem:prc } )
// ou se tivesse criado hNfe:itens := CreateObj()
//
// hnfe:itens[nfeitens->codigo ...
hNfe:Total:vlricms := nfe->vlricms
hNfe:Itens := {} // populando itens com array ou hash com código do item
For each hitem in hitens
Aadd(hnfe:itens, { hitem:codigo, hitem:Qtd, hitem:prc } )
// ou se tivesse criado hNfe:itens := CreateObj()
//
// hnfe:itens[nfeitens->codigo ...
- 16 Out 2025 17:09
- Fórum: [x]Harbour
- Tópico: hb_xrealloc
- Respostas: 10
- Exibições: 3753
hb_xrealloc
... Tenho um sistema legado q gostaria de resolver essa questão q ocorre eventualmente em determinadas rotinas.
LOCAL cString := "", i, adados := {}
FOR i := 1 TO 1000000
cString += "mais dados aqui"
aadd(adados, { i, {i, cString} } )
/*
IF i % 1000 == 0
hb_gcAll(.T.)
ENDIF
*/
NEXT
LOCAL cString := "", i, adados := {}
FOR i := 1 TO 1000000
cString += "mais dados aqui"
aadd(adados, { i, {i, cString} } )
/*
IF i % 1000 == 0
hb_gcAll(.T.)
ENDIF
*/
NEXT
- 01 Out 2025 02:09
- Fórum: MiniGui
- Tópico: HMG Extended OOP
- Respostas: 0
- Exibições: 5693
HMG Extended OOP
... ENDIF
NEXT
RETURN ASort( aRetVal )
STATIC FUNCTION AddIfUnique( aList, cName )
IF ! Empty( cName ) .AND. AScan( aList, cName, , , .T. ) == 0
AAdd( aList, cName )
ENDIF
RETURN Nil
E mais outros:
FUNCTION AllFormNames()
LOCAL aList := {}, oForm
FOR EACH oForm IN ohmgApp():AllForms ...
NEXT
RETURN ASort( aRetVal )
STATIC FUNCTION AddIfUnique( aList, cName )
IF ! Empty( cName ) .AND. AScan( aList, cName, , , .T. ) == 0
AAdd( aList, cName )
ENDIF
RETURN Nil
E mais outros:
FUNCTION AllFormNames()
LOCAL aList := {}, oForm
FOR EACH oForm IN ohmgApp():AllForms ...