Execução de Scripts
Moderador: Moderadores
-
Endrigo Rodrigues
- Usuário Nível 1

- Mensagens: 35
- Registrado em: 27 Fev 2009 01:30
- Localização: Belo Horizonte/MG
Execução de Scripts
No Visual FoxPro existe uma função com a seguinte sintaxe:
ExecScript(cExpression [, eParameter1, eParameter2, ...])
Essa função executa qualquer .prg em tempo de execução, posso criar o prg no cliente e executá-lo, acessando objetos, classes, variáveis de memória, formulários, relatórios, e tudo o mais que existir no sistema e estiver público. Gostaria de saber se existe algo parecido no xHarbour?
ExecScript(cExpression [, eParameter1, eParameter2, ...])
Essa função executa qualquer .prg em tempo de execução, posso criar o prg no cliente e executá-lo, acessando objetos, classes, variáveis de memória, formulários, relatórios, e tudo o mais que existir no sistema e estiver público. Gostaria de saber se existe algo parecido no xHarbour?

Endrigo Rodrigues
Fantastsoft Sistemas
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Execução de Scripts
Eu desconheço algo assim, mas lhe pergunto, já deu uma procurada no Help do xHarbour ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Execução de Scripts
Se você estiver trabalhando e/ou testando o Harbour (não xHB), poderia fazer isto:
Código: Selecionar todos
#define EOL chr(10)
proc main
local CONTENT, HANDLE_HRB, PRG, HRBCODE
PRG := ;
"proc p()" + EOL + ;
" ? 'Hello World'" + EOL + ;
" alert( 'Hello World' )" + EOL + ;
"return"
HRBCODE := hb_compileFromBuf( PRG, "harbour", "-n", "-w3", "-es2", "-q0" )
HANDLE_HRB := hb_hrbload( HRBCODE )
hb_hrbDo( HANDLE_HRB )
hb_hrbunload( HANDLE_HRB )
WAITVailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"
E-mail/MSN: contato@vailton.com.br
Skype: vailtom
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"
E-mail/MSN: contato@vailton.com.br
Skype: vailtom
-
Endrigo Rodrigues
- Usuário Nível 1

- Mensagens: 35
- Registrado em: 27 Fev 2009 01:30
- Localização: Belo Horizonte/MG
Re: Execução de Scripts
Sim, por isso estou perguntando aqui no fórum.
Talvez eu não esteja pesquisando de maneira correta, pois só achei Code Blocks e Macro Substituição, e não é isso que eu quero. Quero poder criar e ler formulários, classes e objetos em tempo de execução sem precisar recompilar o sistema novamente.
É isso que o ExecScript do Visual FoxPro faz.
Consigo criar uma rotina de validação de dados e gravar essa rotina em uma tabela específica de personalizações do sistema e o meu sistema a executa como se fosse parte do programa.
Entenderam?
Talvez eu não esteja pesquisando de maneira correta, pois só achei Code Blocks e Macro Substituição, e não é isso que eu quero. Quero poder criar e ler formulários, classes e objetos em tempo de execução sem precisar recompilar o sistema novamente.
É isso que o ExecScript do Visual FoxPro faz.
Consigo criar uma rotina de validação de dados e gravar essa rotina em uma tabela específica de personalizações do sistema e o meu sistema a executa como se fosse parte do programa.
Entenderam?

Endrigo Rodrigues
Fantastsoft Sistemas
-
Endrigo Rodrigues
- Usuário Nível 1

- Mensagens: 35
- Registrado em: 27 Fev 2009 01:30
- Localização: Belo Horizonte/MG
Re: Execução de Scripts
Isso Vailton.
Exatamente isso que eu queria. No xHarbour, não possui essa funcionalidade?
Exatamente isso que eu queria. No xHarbour, não possui essa funcionalidade?

Endrigo Rodrigues
Fantastsoft Sistemas
-
Endrigo Rodrigues
- Usuário Nível 1

- Mensagens: 35
- Registrado em: 27 Fev 2009 01:30
- Localização: Belo Horizonte/MG
Re: Execução de Scripts
No Visual FoxPro consigo criar um TextBox em um formulário utilizando ExecScript de um código não compilado no sistema.
É possível fazer isso Vailton no Harbour? E no xHarbour?
É possível fazer isso Vailton no Harbour? E no xHarbour?

Endrigo Rodrigues
Fantastsoft Sistemas
Re: Execução de Scripts
Pelo que andei pesquisando... esta característica de compilação em run-time é um recurso exclusivo do Harbour.
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"
E-mail/MSN: contato@vailton.com.br
Skype: vailtom
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"
E-mail/MSN: contato@vailton.com.br
Skype: vailtom
-
Endrigo Rodrigues
- Usuário Nível 1

- Mensagens: 35
- Registrado em: 27 Fev 2009 01:30
- Localização: Belo Horizonte/MG
Re: Execução de Scripts
Veja bem esses códigos em Visual FoxPro. (Não usei recursos da IDE para criação de Forms)
Programa principal, onde criei o formulário e o botão para executar o conteúdo de um PRG externo ao sistema (não compilado):
Esse é o PRG externo:
Isso é que eu gostaria de fazer no Harbour ou xHarbour, têm como traduzir esse código para Harbour ou xHarbour e postá-lo aqui para mim por favor.
Agradeço a ajuda.
Programa principal, onde criei o formulário e o botão para executar o conteúdo de um PRG externo ao sistema (não compilado):
Código: Selecionar todos
oForm = CREATEOBJECT("MeuForm")
oForm.Show(1)
DEFINE CLASS MeuForm AS Form
Caption = "Teste ExecScript()"
FontName = "Tahoma"
FontSize = 8
AutoCenter = .T.
BorderStyle = 2
MaxButton = .F.
MinButton = .F.
Height = 320
Width = 640
nCodigo = 0
ADD OBJECT Label1 AS Label WITH ;
Top = 8, ;
Left = 8, ;
Caption = "Código", ;
AutoSize = .T., ;
FontName = "Tahoma", ;
FontSize = 8
ADD OBJECT Codigo AS TextBox WITH ;
Top = 8, ;
Left = 160, ;
Width = 80, ;
ControlSource = "THISFORM.nCodigo", ;
Format = "KL", ;
InputMask = "######", ;
FontName = "Tahoma", ;
FontSize = 8
ADD OBJECT Criar AS CommandButton WITH ;
Top = 8,;
Left = 320,;
Height = 32,;
Width = 80,;
Caption = "Criar",;
FontName = "Tahoma", ;
FontSize = 8
PROCEDURE CriarClick
LOCAL cCmds
cCmds = FILETOSTR("COMANDOS.PRG")
EXECSCRIPT(cCmds)
ENDPROC
PROCEDURE Init
BINDEVENT(THISFORM.Criar, "Click", THISFORM, "CriarClick")
ENDPROC
ENDDEFINE
Código: Selecionar todos
oForm.AddProperty("cDescricao", "")
oForm.AddObject("Label2", "Label")
WITH oForm.Label2
.Visible = .T.
.Top = 32
.Left = 8
.Caption = "Descrição"
.AutoSize = .T.
.FontName = "Tahoma"
.FontSize = 8
ENDWITH
oForm.AddObject("Descricao", "TextBox")
WITH oForm.Descricao
.Visible = .T.
.Top = 32
.Left = 160
.Width = 160
.ControlSource = "THISFORM.cDescricao"
.Format = "K!"
.FontName = "Tahoma"
.FontSize = 8
ENDWITH
Isso é que eu gostaria de fazer no Harbour ou xHarbour, têm como traduzir esse código para Harbour ou xHarbour e postá-lo aqui para mim por favor.
Agradeço a ajuda.

Endrigo Rodrigues
Fantastsoft Sistemas
Re: Execução de Scripts
Eu sei que em xHarbour você poderia fazer algo assim:
Pelo que consta no exemplo omacro.prg da pasta testes, o HB também suporta o operador "WITH" mas eu mesmo nunca usei ele.
Código: Selecionar todos
oForm:AddProperty("cDescricao", "")
oForm:AddObject("Label2", "Label")
WITH OBJECT oForm:Label2
:Visible = :T:
:Top = 32
:Left = 8
:Caption = "Descrição"
:AutoSize = :T:
:FontName = "Tahoma"
:FontSize = 8
END
oForm:AddObject("Descricao", "TextBox")
WITH OBJECT oForm:Descricao
:Visible = :T:
:Top = 32
:Left = 160
:Width = 160
:ControlSource = "THISFORM:cDescricao"
:Format = "K!"
:FontName = "Tahoma"
:FontSize = 8
ENDVailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"
E-mail/MSN: contato@vailton.com.br
Skype: vailtom
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"
E-mail/MSN: contato@vailton.com.br
Skype: vailtom
-
Endrigo Rodrigues
- Usuário Nível 1

- Mensagens: 35
- Registrado em: 27 Fev 2009 01:30
- Localização: Belo Horizonte/MG
Re: Execução de Scripts
Bom, o meu questionamento não foi o WITH, e sim o código do PRG principal (que foi compilado e gerado um .exe) chamar o código do PRG secundário sem ter sido compilado. Esse segundo PRG eu posso digitar ele em um editor de textos no próprio cliente sem precisar recompilar o sistema.
Entendeu agora o meu questionamento?
Entendeu agora o meu questionamento?

Endrigo Rodrigues
Fantastsoft Sistemas
