Obter o forms60_path em tempo de execução

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
marcio.adao
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Sex, 18 Mai 2007 11:52 am
Localização: Descalvado

Olá!
Preciso obter o diretório a partir do qual o .fmx está sendo executado. Seria o forms60_path em tempo de execução.
Tentei usar o WIN_API_ENVIRONMENT.GET_ENVIRONMENT_STRING('path',false) da biblioteca d2kwutil, mas retorna todas as paths do sistema. Pesquisei e não consegui achar uma resposta.
Alguém já passou por isso ou tem conhecimento de como fazê-lo?
Desde já, grato.
Sds.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Fala meu brother, blzinha?
Espero que esteja tudo bem por ai.

Estou sem o Forms instalado aqui, mas, vi essa nota abaixo sobre a biblioteca, talvez o ajude (o inconveniente é que você tem que passar o "nó" do regedit que precisa):
Win_Api_Environment.Read_Registry.Read_Registry
Description

Reads the value of a non-binary setting in the Win95 or NT registry. If you want to read an Oracle environment setting (normally stored in \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE), use the Tool_Env.Getvar() function instead as this built-in is portable.

Syntax

FUNCTION Win_Api_Environment.Read_Registry
(RegPath IN VARCHAR2,
RegEntry IN VARCHAR2,
RaiseExceptions IN BOOLEAN DEFAULT FALSE);

Parameters

RegPath
The full path in the registry to the required value e.g HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
RegEntry
Name of the variable to read e.g. ORACLE_HOME
RaiseExceptions
If TRUE, then if the requested variable is not found the exception NO_DATA_FOUND will be raised.
Returns

VARCHAR2
Link: http://sqltech.cl/doc/dev2000/help/fbhelp8.htm#frm01507

Espero que o ajude brother.
marcio.adao
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Sex, 18 Mai 2007 11:52 am
Localização: Descalvado

Faaala, Brother! Quanto tempo! Td bem com você?
Então, o problema do registro é indica apenas o path do ambiente de produção. O caminho do ambiente de homologação é indicado no ícone de atalho. Então o nosso cenário é o seguinte:
Os aplicativos de produção estão no diretório siscorp e os aplicativos de homologação estão no diretório siscorpdev.
O que eu preciso é saber quando for acessado o menu inicial do sistema, se foi executado a partir do diretório siscorp ou do siscorpdev.
Tentei usar a WIN_API_ENVIRONMENT mas retorna os paths que estão nas variáveis de ambiente. Tentei com Java também mas retorna o diretório do Linux.
Então apelei pra POG. Crei um arquivo texto no diretório indicando qual é o ambiente. Na inicialização do form ele importa esse arquivo e lê qual o diretório.
está dando certo. Não é a forma mais elegante e segura de fazer, por que precisa de um arquivo externo, mas funciona.
Se você lembrar de uma maneira mais profissional, manda pra gente.
Grande abraço!
Márcio.
marcio.adao
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Sex, 18 Mai 2007 11:52 am
Localização: Descalvado

Trevisolli,
Só complementando, a biblioteca que você passou faz exatamente o que o título do tópico pede: "Obter o forms60_path em tempo de execução".
Eu que é que expressei mal o que preciso. O correto é "obter o diretório a partir do qual foi executado o form".
Mas valeu informação. Será bastante útil aqui.
Abraço.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes