4

Oracle Forms10g は、Oracle Forms モジュールを、Oracle Forms Builder で動作するバイナリ形式 (.FMB) からテキスト形式 (.FMT) に変換するツールを提供します。

たとえば、Oracle Forms Builder でmymodule.fmbというモジュールを作成し、

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

コマンドラインから、Oracle Forms Convert ユーティリティは、ファイルmymodule.fmbからmymodule.fmtという名前のファイルを作成します。このテキスト ファイルは、コード化されたトリガーとプログラム ユニットの PL/SQL コードを除いて、人間が「読み取る」ことができるはずです。

たとえば、これはコード化された PL/SQL コードのチャンクを含む .FMT ファイルのスニペットです。

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 

フォームの PL/SQL コードを抽出できるようにするために、この種のファイルをデコードしようとしたことがありますか?

Oracle Forms Builder を使用して対応する .FMB ファイルを手動で開き、それぞれのファイルで文字列を検索する代わりに、多数の .FMT ファイルの PL/SQL コードで文字列を検索できると非常に便利です。そのうちの。

ありがとう!

4

4 に答える 4

5

APIに加えて、このプロセスの開始時に作業している場合は、FMTバージョンよりもXMLバージョンを生成する方がおそらく良いことに注意してください。FMTは下位互換性のために保持されている古い形式であり、最近発表されたフォーム->OracleAPEXコンバーターなどのツールにはXMLが必要です。読みやすいです。

「Forms10gリリース1」(9.0.4)では、XMLコンバーターは別個のコマンドラインプログラムです。forms2xml。それは10.1にも当てはまると思います

さらに、XMLは読みやすく解釈も簡単です。

于 2008-10-24T20:55:48.600 に答える
1

Oracle Forms 9i 以降には、記述した内容を正確に実行できるプログラミング API があります。これを行うには、フォームのドキュメントを確認する必要がありますが、バイナリ文字列を抽出するよりも高速な場合があります。

既存のツールに支払う意思がある場合は、次の方法を使用してください。

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

彼らの formsAPI と FormsTools を使用すると、フォームの抽出、差分、変更、更新を行うことができます。

于 2008-10-24T18:19:15.920 に答える
1

バイトは、文字の 16 進値です。たとえば、4 行目を次の 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]]

次の出力が得られます。

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

これは認識可能なフォーム pl/sql です。したがって、FMT ファイルのディレクトリを取得し、検索可能なテキストを含む対応するファイルを生成するスクリプトを作成するのは、それほど手間がかからないように見えます。
楽しむ!

于 2008-10-23T19:46:57.193 に答える
0

このページによると、著者は 16 進数を ASCII テキストに変換するための perl スクリプトを持っています (彼は彼に電子メールを送るように言い、彼はそれを送信します)。

于 2008-10-23T19:25:40.307 に答える