0

TDUMP.exeは、DelphiRADStudioのファイルダンプユーティリティです。私が走ったら

tdump.exe myapp.exe

myapp.exeに関する情報が返されます。

tdump.exeのコンソール出力をVCLGUIアプリケーションにキャプチャしたいと思います。http://delphi.about.com/cs/adptips2001/a/bltip0201_2.htmで試しましRunDosInMemoた。出力結果は、コマンドラインコンソールの出力と同じではありません。それは常に戻ります:

ERROR: Can not open output file myapp.exe.

また、myapp.exeファイルは上書きされます。

他のコンソールコマンドをで実行するとRunDosInMemo、期待どおりに機能しますが、Delphitdump.exeは機能しません。

リダイレクトコンソールの出力がtdumpで機能しない理由はありますか?

私は次のコードを使用して呼び出していますRunDosInMemo

RunDosInMemo('tdump.exe ' + ParamStr(0), Memo1);
4

2 に答える 2

0

'tdump' が表示するエラー メッセージから明らかなように、渡されたファイル名の内容を読み取ろうとしているのではなく、出力にファイル名を使用しています。

「tdump」が実際に期待しているのは、その「stdin」からファイルの内容を読み取ることです。質問でリンクしたコードは適切ではありません。少なくとも 2 つのパイプを作成し、入力ファイルの内容を 'tdump の標準入力の書き込み側に書き込み、'tdump の出力を出力パイプの読み取り側から読み取る必要があります。

ただし、これは必須ではありません。「tdump」に、標準入力からではなく、引数で渡されたファイルを読み取るように指示できます。コンソールで a を発行しtdump -?、ヘルプを参照してください。次のオプションがあります。

-ns 標準入力のリダイレクトのサポートを無効にします

手順を機能させるには、呼び出しを変更するだけです。

 RunDosInMemo('tdump.exe -ns ' + ParamStr(0), Memo1);
于 2013-12-23T23:56:14.803 に答える
0

ParamStr(0) は、引用符で囲む必要のあるスペースが含まれている可能性があるパスを含む、exe の完全な名前を返します。試す:

RunDosInMemo('tdump.exe "' + ParamStr(0) + '"', Memo1);
于 2012-07-16T10:19:43.677 に答える