IA doida ensinando errado

Aqui é o lugar para bater papo e trocar idéias sobre os mais variados assuntos

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

IA doida ensinando errado

Mensagem 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().
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 8028
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 2 vezes
Curtiram: 1 vez

Re: IA doida ensinando errado

Mensagem por Itamar M. Lins Jr. »

Olá!
De quem é essa IA ?
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Re: IA doida ensinando errado

Mensagem por JoséQuintas »

copilot, fornecido pela Microsoft, mas parece que não tem uma IA pré-definida.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Responder