Pergunta

A Oracle Forms10g fornece uma ferramenta para converter os módulos Oracle Forms, a partir do formato binário (.FMB) que a Oracle Forms Builder trabalha com, para o formato de texto (.fmt).

Por exemplo, se você criar um módulo chamado mymodule.fmb com o Oracle Forms Builder, e em seguida, invocar

frmcmp module=mymodule.fmb script=yes batch=yes logon=no

na linha de comando, o Oracle Forms utilitário Convert irá criar um arquivo chamado mymodule.fmt do arquivo mymodule.fmb . Este arquivo de texto é suposto ser "legível" por seres humanos, exceto o código PL / SQL de gatilhos e unidades de programa, que é codificada.

Por exemplo, este é um trecho de um arquivo .fmt com um pedaço de Codificada PL / SQL código

DEFINE  F50P
BEGIN
   PP = 10
   PI = 3
   PN = 464
   PL = 1138
   PV = (BLONG)
<<"
00000049 00800000 00440000 00000000 00000031 0000000d 00000002 a0011519 
00002420 0000045e 001f0000 00165030 5f32335f 4f43545f 32303038 31365f33 
375f3039 00000006 42454749 4e0a0000 0042676f 5f626c6f 636b2820 27504149 
53455327 20293b0a 69662066 6f726d5f 73756363 65737320 7468656e 0a096578 
65637574 655f7175 6572793b 0a656e64 2069663b 00000005 0a454e44 3b000000 
1d574845 4e2d4e45 572d464f 524d2d49 4e535441 4e434520 28466f72 6d290000 

Você já tentou decodificar este tipo de arquivos, para ser capaz de extrair o código PL / SQL de uma forma?

Seria muito útil para ser capaz de pesquisar uma string no código PL / SQL de um lote de arquivos .fmt, em vez de usar Oracle Forms Builder para abrir manualmente cada um dos arquivos .FMB correspondentes, e procure a string em cada um deles.

Obrigado!

Foi útil?

Solução

Juntamente com a API, nota que, se você está trabalhando no início deste processo, você provavelmente vai ser melhor para gerar a versão XML do que a versão FMT. O FMT é um formato mais antigo mantido para compatibilidade com versões anteriores, e ferramentas como as formas recentemente anunciadas -> A Oracle APEX conversor vai querer o XML. É também mais fácil de ler.

Em "Formas 10g Release 1" (9.0.4) o conversor de XML é um programa de linha de comando separada. forms2xml. Eu acho que ainda é verdade para 10,1

Além disso, o XML é mais fácil de ler e interpretar.

Outras dicas

Os bytes são apenas valores hexadecimais dos personagens. por exemplo: a obtenção da 4ª linha e colocá-lo para o seguinte código Python:

[chr(x) for x in [0x53,0x45,0x53,0x27 ,0x20,0x29,0x3b,0x0a ,0x69,0x66,0x20,0x66 ,0x6f,0x72,0x6d,0x5f ,0x73,0x75,0x63,0x63 ,0x65,0x73,0x73,0x20 ,0x74,0x68,0x65,0x6e ,0x0a,0x09,0x65,0x78]]

dá o seguinte resultado:

['S', 'E', 'S', "'", ' ', ')', ';', '\n', 'i', 'f', ' ', 'f', 'o', 'r', 'm', '_', 's', 'u', 'c', 'c', 'e', 's', 's', ' ', 't', 'h', 'e', 'n', '\n', '\t', 'e', 'x']

que é formas reconhecíveis PL / SQL. Portanto, parece que não seria muito trabalho para criar um script que iria demorar um diretório de arquivos FMT e produzir arquivos com texto que pode ser pesquisado correspondente.
Divirta-se!

Os formulários Oracle 9i e mais tarde tem uma API de programação para permitir que você faça exatamente o que você descreve. Você terá que rever a documentação formas de fazer isso, mas pode ser mais rápido do que tentar extrair strings binárias.

Se você estiver disposto a pagar por uma ferramenta existente, use o seguinte:

http://www.orcl-toolbox.com/

Seu formsAPI e FormsTools deixá-lo fazer extrações, diffs, mudanças e atualizações para seus formulários.

De acordo com a este página o autor tem um script Perl para converter parte de trás hex para texto ASCII (ele diz a enviar-lhe um e-mail e ele irá enviá-lo)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top