質問

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

たとえば、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コードで文字列を検索できると非常に便利ですそれらのそれぞれに。

ありがとう!

役に立ちましたか?

解決

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

「Forms 10gリリース1」では、 (9.0.4)XMLコンバーターは個別のコマンドラインプログラムです。 forms2xml。 10.1でもそれは真実だと思います

さらに、XMLは読みやすく、解釈しやすいです。

他のヒント

バイトは文字の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ファイルのディレクトリを取得し、検索可能なテキストを含む対応するファイルを生成するスクリプトを作成するのは、それほど面倒ではないようです。
楽しんでください!

Oracle Forms 9i以降にはプログラミングAPIがあり、説明したとおりのことができます。これを行うには、Formsのドキュメントを確認する必要がありますが、バイナリ文字列を抽出するよりも速い場合があります。

既存のツールの支払いを希望する場合は、次を使用してください:

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

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

こちらページには、16進数をASCIIテキストに戻すperlスクリプトがあります(メールを送信するように言って送信します)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top