Domanda

Oracle Forms10g fornisce uno strumento per convertire i moduli Oracle Forms, dal formato binario (.FMB) con cui lavora Oracle Forms Builder, al formato testo (.FMT).

Ad esempio, se si crea un modulo chiamato mymodule.fmb con Oracle Forms Builder e quindi si richiama

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

dalla riga di comando, l'utilità Oracle Forms Convert creerà un file denominato mymodule.fmt dal file mymodule.fmb . Questo file di testo dovrebbe essere " leggibile " dagli umani, ad eccezione del codice PL / SQL di trigger e unità di programma, che è codificato.

Ad esempio, questo è un frammento di un file .FMT con un pezzo di codice PL / SQL codificato

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 

Hai mai provato a decodificare questo tipo di file, per essere in grado di estrarre il codice PL / SQL di un modulo?

Sarebbe molto utile essere in grado di cercare una stringa nel codice PL / SQL di molti file .FMT, invece di usare Oracle Forms Builder per aprire manualmente ciascuno dei file .FMB corrispondenti e cercare la stringa in ognuno di essi.

Grazie!

È stato utile?

Soluzione

Insieme all'API, tieni presente che se stai lavorando all'inizio di questo processo, probabilmente sarà meglio generare la versione XML rispetto alla versione FMT. La FMT è un formato precedente conservato per la compatibilità con le versioni precedenti e strumenti come i moduli recentemente annunciati - > Il convertitore Oracle APEX vorrà l'XML. È anche più facile da leggere.

In "Modulo 10g versione 1" (9.0.4) il convertitore XML è un programma a riga di comando separato. forms2xml. Penso che sia ancora vero per 10.1

Inoltre, l'XML è più facile da leggere e interpretare.

Altri suggerimenti

I byte sono solo valori esadecimali dei caratteri. per esempio: prendere la quarta riga e inserirla nel seguente codice 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]]

fornisce il seguente output:

['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']

che è forme riconoscibili pl / sql. Quindi sembra che non sarebbe troppo lavoro per creare uno script che prenderebbe una directory di file FMT e produca file corrispondenti con testo che potrebbe essere cercato.
Buon divertimento!

Oracle Forms 9i e versioni successive hanno un'API di programmazione che ti consente di fare esattamente ciò che descrivi. È necessario rivedere la documentazione dei moduli per fare ciò, ma potrebbe essere più veloce del tentativo di estrarre stringhe binarie.

Se sei disposto a pagare per uno strumento esistente, utilizza quanto segue:

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

I loro formAPI e FormsTools ti consentono di fare estrazioni, differenze, modifiche e aggiornamenti ai tuoi moduli.

scroll top