2016-10-24 34 views
0

私はユーザーにデータの入力を許可するアプリを持っています。次に、.binファイルを開き、特定の位置を検索して貼り付けたいと思いますユーザがファイルに入力したデータ。Powerbuilderの.bin(バイナリ)(16進)ファイルの編集12

FileOpen、FileRead、FileWriteExのすべてを見渡しても解決策は思い付きません。私が今やっているのは、ファイルを16進エディタで開き、特定の文字列を検索してテキストを貼り付けることです。これをすべて手動で実行すると、自動的に行う方法がわかります。

これはPBでも可能ですか? .binファイルに貼り付けているのは実際のテキストです。 以下は例です....ヘックスエディタで開き、 'Test ...'を検索したら、3つの位置をスキップしてテキストを貼り付けます。

[1] https://i.stack.imgur.com/RsVxS.png

Result after PB pastes text into .bin file

+0

文字列を入力するだけでよいのですか?アプリケーションは検索を行い、自動的にペーストしますか? (ファイル内の位置のユーザーによる確認は行わない) –

+0

ユーザーが正しいことを確認していない。テキストが貼り付けられる場所には32の異なる位置がありますが、どの位置にあるかはわかりますが、ユーザーは確認する必要はありません。 – Goldglv

答えて

0

おそらく、COM経由でPBと通信.NETでDLLを作成します。 dllは、PBアプリケーションがユーザーが入力した文字列を送信した後、ファイルの16進数の編集を処理します。

+0

私はFileSeekを使用してテキストを貼り付けるために.binファイルの場所を見つけ出すことができましたが、FileWriteを貼り付けるとすぐに以下の結果が得られます。テキストを正しく貼り付けていますが、貼り付けた内容を反映するためにLEFT側のデータが必要です。私はこれを達成できる方法は何ですか? – Goldglv

+0

PBがFileWriteを使用してテキストを.binファイルに貼り付けた後に何が起こるかを示すために、元の質問に追加のリンクを追加しました。 HEXエディタの左側に '054879B3 .....'と表示しようとしていますか?これは可能ですか? – Goldglv

+0

私はこれをPythonで行うことができます。ファイルに書き込んで、この形式( '\ x07 \ x59 \ xED \ x1F')で送信すると、Pythonは文字列値ではなく16進値としてファイルに書き出します。 PBでこれとまったく同じことをしていますが、これまでのところ私はそれを理解することができません。 – Goldglv

0

ユーザーが整数に入力する16進コードを変換し、char関数を使用して文字に変換する必要があります。これは、ファイルに書き込むために必要な文字です。

+0

私は、ユーザーが入力した文字列、たとえば '14'を持っています。これをintに変換するにはどうすればいいのですか?明らかにInt('14 ')は私に14を返します(私は20の整数値を探しています)。 – Goldglv

+0

私はls_string = '〜h14'を使用してファイルに書き込む必要のある文字を取得できますが、PBは私に文字列変数 '〜h'を格納させません。 '私は変数を '~~ h'に設定するための回避策を見ましたが、これは私が '〜h14'を持っているように動作するようでしたが、PBはこれを16進値として認識しません。 – Goldglv

+0

私は文字列ls_test = '〜h14'を明示的に言う必要があります。私はそれを一旦BLOBに変換してファイルに書き込むと、正しい文字値を取得することができます。しかし、私が前に言及したように、 '14'はユーザー入力なので、 '〜h'と連結する方法が必要です。 – Goldglv

関連する問題