Substituir variável por nome dentro do texto
Moderador: Moderadores
- rrfsistemas
- Usuário Nível 3

- Mensagens: 249
- Registrado em: 11 Jul 2004 18:16
- Localização: Uberlândia/MG
Substituir variável por nome dentro do texto
Preciso de algum exemplo de como trabalhar com variáveis dentro de um texto, ou seja, substituir uma variável pelo seu conteúdo dentro de um texto e depois justifica-lo dentro da página.
Se alguem puder me indicar ou me ajudar fico grato...
100 + :xau
Se alguem puder me indicar ou me ajudar fico grato...
100 + :xau
"Não é a ferramenta que faz o artesão e sim a sua criatividade...""
Renato Ribeiro Ferreira
Tecnologia em Analise de Sistemas de Informação
http://www.rrfsistemas.hd1.com.br
( VFP 9 + MySql e/ou Oracle 11 ) - ...Harbour/MiniGui...
Renato Ribeiro Ferreira
Tecnologia em Analise de Sistemas de Informação
http://www.rrfsistemas.hd1.com.br
( VFP 9 + MySql e/ou Oracle 11 ) - ...Harbour/MiniGui...
Se o exemplo do Filizola não for o bastante, tem um exemplo de como fazer o que precisa na seção de download postado pelo Toledo.
Link:
https://pctoledo.org/download/cop ... t&deonde=2
:xau
Link:
https://pctoledo.org/download/cop ... t&deonde=2
:xau
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
- rrfsistemas
- Usuário Nível 3

- Mensagens: 249
- Registrado em: 11 Jul 2004 18:16
- Localização: Uberlândia/MG
Estarei olhando e testando obrigado. 
"Não é a ferramenta que faz o artesão e sim a sua criatividade...""
Renato Ribeiro Ferreira
Tecnologia em Analise de Sistemas de Informação
http://www.rrfsistemas.hd1.com.br
( VFP 9 + MySql e/ou Oracle 11 ) - ...Harbour/MiniGui...
Renato Ribeiro Ferreira
Tecnologia em Analise de Sistemas de Informação
http://www.rrfsistemas.hd1.com.br
( VFP 9 + MySql e/ou Oracle 11 ) - ...Harbour/MiniGui...
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Substituir variável por nome dentro do texto
olá pessoal, já se passaram 10 anos deste tópico. rsrs.
Espero que alguém possa me ajudar, pra que eu evite de abrir um novo tópico.
O meu caso não é apenas uma variável qualquer e sim uma MATRIZ/VETOR. Observem a chamada a função MONTA_VETOR e seu conteúdo:
Bom, se os caros colaboradores e professores observarem coloquei 2 itens em destaque e é exatamente o meu problema e pensei que daria certo, mas, o harbour, ou melhor a HMG 3.0.XX apresenta a seguinte mensagem de erro:
Então, em todas as vezes que chamo a função MONTA_VETOR, passo pra ela alguns argumentos, mas o argumento final (nesse caso aqui MENU_CAD1) é uma MATRIZ pública, ou seja, eu preciso que dentro da função MONTA_VETOR eu aproveite apenas o nome que é o verdadeiro conteúdo.
Bom, não sei se expliquei ou se compliquei, mas, o valor passado entre aspas "MENU_CAD1" é o nome de uma matriz de apenas uma linha, e,quando ela é recebida na função o nome é mudado para MATRIZ_MENU, que recebe o conteúdo MENU_CAD1. Então quando chega a vez da linha:
aadd (&MATRIZ_MENU.,{ATAIL(LINHA),ATAIL(BLOCO),ATAIL(H_IND)}) o erro citado é retornado.
alguém tem alguma ideia para mim?
vlw!
Ah! EU CREIO QUE DEUS EXISTE e você é como o pai de um certo cantor que morreu tão jovem? Pense, assim como nos dias de Noé, será na volta do Filho do Homem: JESUS CRISTO!
Espero que alguém possa me ajudar, pra que eu evite de abrir um novo tópico.
O meu caso não é apenas uma variável qualquer e sim uma MATRIZ/VETOR. Observem a chamada a função MONTA_VETOR e seu conteúdo:
Código: Selecionar todos
MONTA_VETOR (LINHA,BLOCO,H_IND,'&Fornecedores',{|| EXECUTA_PROGRAMA ({|| PCI10005 ()})},'PCI10005',[b]'MENU_CAD1'[/b])Código: Selecionar todos
static function MONTA_VETOR (LINHA,BLOCO,H_IND,PROMPT,ACAO,INDICE,[b]MATRIZ_MENU[/b])
if E_MASTER () .or. EXISTE_PROGRAMA (INDICE)
aadd (LINHA,PROMPT)
aadd (BLOCO,ACAO)
aadd (H_IND,INDICE)
aadd (&[b]MATRIZ_MENU[/b].,{ATAIL(LINHA),ATAIL(BLOCO),ATAIL(H_IND)})
endif
returnCódigo: Selecionar todos
Error BASE/1065 Argument error: &
Called from MONTA_VETOR(nnnn)
...Bom, não sei se expliquei ou se compliquei, mas, o valor passado entre aspas "MENU_CAD1" é o nome de uma matriz de apenas uma linha, e,quando ela é recebida na função o nome é mudado para MATRIZ_MENU, que recebe o conteúdo MENU_CAD1. Então quando chega a vez da linha:
aadd (&MATRIZ_MENU.,{ATAIL(LINHA),ATAIL(BLOCO),ATAIL(H_IND)}) o erro citado é retornado.
alguém tem alguma ideia para mim?
vlw!
Ah! EU CREIO QUE DEUS EXISTE e você é como o pai de um certo cantor que morreu tão jovem? Pense, assim como nos dias de Noé, será na volta do Filho do Homem: JESUS CRISTO!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Substituir variável por nome dentro do texto
Amigo, compilei com o Clipper e funcionou:
Abraços,
Código: Selecionar todos
cls
Private Menu_Cad1:={}
Monta_Vetor("Fornecedor",{|| Executa({|| PCI()})},"PCI1","Menu_Cad1")
? 'Elementos: ',Len(Menu_Cad1)
? 'Conteudo 1: ',Menu_Cad1[1,1]
inkey(0)
Return
Func Monta_Vetor(Prompt,Acao,indice,matriz_menu)
AADD(&matriz_menu.,{Prompt,Acao,indice})
Return Nil
Func Executa()
Retu Nil
Func PCI()
Retu NilToledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Substituir variável por nome dentro do texto
realmente o prezado Toledo tem razão...
verifiquei e revisei o código e nalgum momento, a variável estava com um pequeno erro de ortografia.
Desculpa o incômodo.
[Editado]
verifiquei e revisei o código e nalgum momento, a variável estava com um pequeno erro de ortografia.
Desculpa o incômodo.
[Editado]
Editado pela última vez por Toledo em 27 Jun 2015 08:14, em um total de 1 vez.
Razão: Esta mensagem foi editada para retirar um texto que já foi postado em um outro tópico na seção correta para assuntos sobre MiniGui.
Razão: Esta mensagem foi editada para retirar um texto que já foi postado em um outro tópico na seção correta para assuntos sobre MiniGui.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Substituir variável por nome dentro do texto
Não sei se entendi direito, me deu a impressão de que nem precisava macro, era só passar a variável direto.
Pelo menos no Clipper, array por padrão já equivale a ser por referência.
Pelo menos no Clipper, array por padrão já equivale a ser por referência.
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/
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Substituir variável por nome dentro do texto
* 1 - Então, o erro que está dando (de acordo com a imagem anexa), informa que na matriz/vetor (array) não existe tal(is) valor(es). Veja os códigos onde a matriz MENU_CADH1 inicia até chegar ao MAIN MENU:JoséQuintas escreveu:Não sei se entendi direito, me deu a impressão de que nem precisava macro, era só passar a variável direto.
Pelo menos no Clipper, array por padrão já equivale a ser por referência.
Código: Selecionar todos
MONTA_VETOR (LINHA,BLOCO,H_IND,'&Orçamentos',{|| EXECUTA_PROGRAMA ({|| PCI10001 ()})},'PCI10001','MENU_CADH1')
1 - LINHA: matriz local que é transferida para a função MONTA_VETOR;
2 - BLOCO: matriz local que é transferida para a função MONTA_VETOR;
3 - H_IND: matriz local que é transferida para a função MONTA_VETOR;
4 - "Orçamentos" é o elemento que passa o nome do ITEM do MAIN MENU;
5 - Aqui é executada uma função em RUN-TIME que usa a função EVAL() ; e
6 - finalmente o último parâmetro não existia no MODO CONSOLE e o acrescentei para que eu passe o verdadeiro nome da MATRIZ que montará o ITEM do MAIN MENU e respectivamente o ACTION e as demais operações. O que achei estranho é que tudo aparentemente está correto, mas, quando se clica no ITEM/MENU imediatamente aparece o erro de ARRAY.
* 2- Aqui abaixo está a segunda fase da matriz MENU_CADH1 (e todas as outras, mas, se resolver uma MATRIZ as outras também passarão a funcionar). Observem que as linhas comentadas são apenas testes que eu fiz para ver se estava gravando na substituição da &MATRIZ_MENU para o nome real que é passado desde a chamada da função com o nome correto (vocês viram no primeiro momento e aqui chega com o nome genérico). O local da mudança de MATRIZ_MENU para o nome correto é feito na última linha dentro IF/ENDIF com a seguinte função: AADD(&MATRIZ_MENU).,{PROMPT,ACAO,INDICE}). Uma coisa que observei que se a gente descomentar as linhas com comando "?" a matriz que contém 3 colunas, me estranha a coluna 2 estar vazia. Já as colunas 1 e 3, aparecem corretamente. Vejam e decifram por gentileza:
Código: Selecionar todos
static function MONTA_VETOR (LINHA,BLOCO,H_IND,PROMPT,ACAO,INDICE,MATRIZ_MENU)
// ? 'dentro de MONTA_VETOR'
// ? 'LINHA',LINHA,'BLOCO',BLOCO,'H_IND',H_IND
// ? 'PROMPT',PROMPT,'ACAO',ACAO,'INDICE',INDICE,'MATRIZ_MENU',MATRIZ_MENU
// ? '&MATRIZ_MENU.',&MATRIZ_MENU.
// WAIT
if E_MASTER () .or. EXISTE_PROGRAMA (INDICE)
aadd (LINHA,PROMPT)
aadd (BLOCO,ACAO)
aadd (H_IND,INDICE)
// aadd (&MATRIZ_MENU.,{ATAIL(LINHA),ATAIL(BLOCO),ATAIL(H_IND)})
aadd (&MATRIZ_MENU.,{PROMPT,ACAO,INDICE})
// aadd (&MATRIZ_MENU.,{PROMPT,ACAO,INDICE})
endif
return
Código: Selecionar todos
POPUP MENU_CAD[1,1]
if len(MENU_CADH1)>0
for CADH1=1 to len(MENU_CADH1)
? 'MENU_CADH1[CADH1,1]',MENU_CADH1[CADH1,1]
? 'MENU_CADH1[CADH1,2]',MENU_CADH1[CADH1,2]
? 'MENU_CADH1[CADH1,3]',MENU_CADH1[CADH1,3]
wait
MENUITEM MENU_CADH1[CADH1,1] ACTION {||EXECUTA_PROGRAMA2(MENU_CADH1[CADH1,3]+' ()')} // NAME MENU_CAD1[CAD1,3]
// MENUITEM MENU_CADH1[CADH1,1] ACTION EXECUTA_PROGRAMA2(pci10048()) // NAME MENU_CAD1[CAD1,3]
// MENUITEM MENU_CADH1[CADH1,1] ACTION {|| MENU_CADH2V1[CADH2V1,3]} // NAME MENU_CAD1[CAD1,3]
next
endif
END POPUPvlw!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Substituir variável por nome dentro do texto
Esse erro é quando tenta acessar o elemento de um array que não existe.
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/
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Substituir variável por nome dentro do texto
sim sei; disso "já estou cabeludo de saber".JoséQuintas escreveu:Esse erro é quando tenta acessar o elemento de um array que não existe.
Agora, enviei todos os meus códigos pra que vc ou alguém me ajude, pois nos testes que fiz não apresenta nenhuma falta desse elemento.
Compile vc mesmo e descubra, por favor, se puder!
vlw.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Substituir variável por nome dentro do texto
Ok, agora entendi.
Não tem nada a ver com Clipper.
Vai ter que confirmar com quem usa a LIB gráfica.
É possível que quem execute a rotina seja o Windows, e não o programa, e por isso a variável não existe no momento da execução, ou contém apenas .F.
Talvez seja melhor redefinir o estilo de criar o menu.
Pode tentar também o uso de uma função, ao invés do array diretamente.
Mas antes disso, convém verificar se não tem um jeito mais simples de fazer isso.
Não tem nada a ver com Clipper.
Vai ter que confirmar com quem usa a LIB gráfica.
É possível que quem execute a rotina seja o Windows, e não o programa, e por isso a variável não existe no momento da execução, ou contém apenas .F.
Talvez seja melhor redefinir o estilo de criar o menu.
Pode tentar também o uso de uma função, ao invés do array diretamente.
Código: Selecionar todos
STATIC xArray := {}
FUNCTION OArray()
RETURN xArray
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/
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Substituir variável por nome dentro do texto
certo...
mas não entendi como usar essa sua sugestão...
pode ser mais específico em qual das minhas funções se encaixaria essa sua? ou seja, é possível vc mostrar-me como trocar?
ou uma outra sugestão de mudança.
Se vc ver todo o contexto desse tópico, verá que nada mais ou nada menos - resumindo tudo, é o seguinte:
1 - tenho um arquivo DBFNTX (aliás tudo é DBFNTX ainda) que contem todos os nomes dos módulos (contas a pagar, a receber, vendas, clientes,etc) e outro arquivo de mesmo nome mas em .TXT. Esses 2 arquivos funcionam assim: se o tal usuário pode ter acesso àquele tal opção do menu (no clipper antigo funcionava e no harbour modo console perfeitamente bem e funcional) o menu ou as opções dele são criadas em RUN-TIME.
2 - Existem 2 funções dentro do meu .PRG de funções que criam o MENU POPUP (modo console) que chamam-se MENU_HORIZONTAL() e MENU_VERTICAL(). Elas pegam e trabalham em conjunto com esses 2 arquivos e vão criando as opções do MENU POPUP (modo console e sem mouse) através da função E_MASTER() dentro da função MONTA_VETOR() (que está aqui postado) e monta o menu para o usuário que logar.
Então, foi através disso, para migrar para modo gráfico que preciso fazer. Se ou alguém aqui do fórum mais capacitado que eu, tiver uma outra ideia ou sugestão ficarei honrado com o aprendizado.
mas não entendi como usar essa sua sugestão...
pode ser mais específico em qual das minhas funções se encaixaria essa sua? ou seja, é possível vc mostrar-me como trocar?
ou uma outra sugestão de mudança.
Se vc ver todo o contexto desse tópico, verá que nada mais ou nada menos - resumindo tudo, é o seguinte:
1 - tenho um arquivo DBFNTX (aliás tudo é DBFNTX ainda) que contem todos os nomes dos módulos (contas a pagar, a receber, vendas, clientes,etc) e outro arquivo de mesmo nome mas em .TXT. Esses 2 arquivos funcionam assim: se o tal usuário pode ter acesso àquele tal opção do menu (no clipper antigo funcionava e no harbour modo console perfeitamente bem e funcional) o menu ou as opções dele são criadas em RUN-TIME.
2 - Existem 2 funções dentro do meu .PRG de funções que criam o MENU POPUP (modo console) que chamam-se MENU_HORIZONTAL() e MENU_VERTICAL(). Elas pegam e trabalham em conjunto com esses 2 arquivos e vão criando as opções do MENU POPUP (modo console e sem mouse) através da função E_MASTER() dentro da função MONTA_VETOR() (que está aqui postado) e monta o menu para o usuário que logar.
Então, foi através disso, para migrar para modo gráfico que preciso fazer. Se ou alguém aqui do fórum mais capacitado que eu, tiver uma outra ideia ou sugestão ficarei honrado com o aprendizado.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Substituir variável por nome dentro do texto
Acabei passando respostas referente à criação, e não à execução.
O codeblock vai usar o conteúdo no momento do click, e não o conteúdo que está no momento da criação do codeblock, por isso o erro.
O action só precisa saber da opção, e não do array.
Então.... colocar no action o que é do action.
O codeblock vai usar o conteúdo no momento do click, e não o conteúdo que está no momento da criação do codeblock, por isso o erro.
O action só precisa saber da opção, e não do array.
Então.... colocar no action o que é do action.
Código: Selecionar todos
POPUP MENU_CAD[1,1]
if len(MENU_CADH1)>0
for CADH1=1 to len(MENU_CADH1)
MENUITEM MENU_CADH1[CADH1,1] ACTION BuildExecuteBlock( MENU_CADH1[CADH1,3] )
next
endif
END POPUP
FUNCTION BuildExecuteBlock( xOpcao )
RETURN { || Executa_Programa2( xOpcao ) }
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/