Página 1 de 1

IA doida ensinando errado

Enviado: 29 Dez 2025 09:49
por JoséQuintas
A função hb_gcall() pertence ao Harbour, a linguagem baseada em xBase/Clipper.
Ela é usada para chamar uma função ou procedimento dinamicamente, ou seja, quando você tem o nome da função em uma variável ou precisa decidir em tempo de execução qual rotina executar.
📌 Quando usar hb_gcall()
- Execução dinâmica: quando você não sabe qual função será chamada até o momento da execução.
- Chamadas indiretas: quando o nome da função está armazenado em uma string ou símbolo.
- Flexibilidade: útil em frameworks, bibliotecas ou sistemas que precisam carregar módulos e executar funções sem codificação fixa.
⚙️ Sintaxe básica
hb_gcall( <cFuncName>, [<aArgs>] )


- <cFuncName> → nome da função/procedimento a ser chamado (string).
- <aArgs> → array com os argumentos que serão passados para a função (opcional).
🧩 Exemplo prático
FUNCTION OlaMundo( cNome )
? "Olá, " + cNome
RETURN NIL

PROCEDURE Main()
LOCAL cFunc := "OlaMundo"
hb_gcall( cFunc, { "José" } )
RETURN


➡️ Nesse exemplo, a função OlaMundo() é chamada dinamicamente através de hb_gcall().
resultado será:
Olá, José

👉 Resumindo: você deve executar hb_gcall() quando precisar chamar funções/procedimentos cujo nome só é conhecido em tempo de execução.
Boa pergunta 👍.
No Harbour, a função hb_gcall() não tem nada a ver com limpeza de memória — ela serve apenas para chamadas dinâmicas de funções/procedimentos.
🧹 Limpeza de memória no Harbour
Quem cuida da memória é o Garbage Collector (GC) interno da linguagem. Ele é acionado automaticamente quando variáveis deixam de ser referenciadas. Mas existem funções utilitárias para forçar ou ajudar nesse processo:
- hb_gcAllFree() → força o coletor de lixo a liberar toda memória não referenciada naquele momento.
- hb_gcCollect() → executa uma coleta de lixo imediata, mas não tão agressiva quanto hb_gcAllFree().
- hb_gcGripGet() / hb_gcGripDrop() → usadas para controlar referências manuais em objetos, evitando que sejam coletados antes da hora.

Aí endoidoi de vez.... duplicou a função...
parece que está errado sobre hb_gcall

Você tem razão: eu me confundi antes.
A função correta relacionada à limpeza de memória no Harbour/xHarbour é HB_GCAll(), não hb_gcall().

Re: IA doida ensinando errado

Enviado: 29 Dez 2025 11:53
por Itamar M. Lins Jr.
Olá!
De quem é essa IA ?