
Ubuntu日本語フォーラム

ログインしていません。
もともとWindowsのC++builderで開発したプログラムがあり、ちょっとした手直しでwineを用いて動かしたいと思います。このプログラム(abc.exeとします)は
system("hoge.exe < model.dat > output.dat")
のように処理しているところがあるのですが、ここでつまずくようです。ここでhoge.exeは外部プログラムで計算ソルバー、model.datは問題のプログラム(abc.exe)で作成したテキスト形式のモデルファイル(実質テキストの羅列)、output.datはソルバが吐いたものをリダイレクトで受けたテキストファイルです。
abc.exeでmodel.datは作成できるのですが、どうもパス名でこけるらしく、mopdel.datの入力、及び、output.datへの出力に失敗するようです。リダイレクトを用いてデータの受け渡しにリダイレクトを用いる場合どうすればよいでしょうか。
オフライン
Win32でリダイレクトを処理する主体を把握していませんが、cmd.exeがないので
リダイレクトが処理されない、ということはないでしょうか?
あとは、ShellExecuteでcmd.exeに食わせるという手も試してみる価値が
ありそうですが、プログラム側を弄るのは避けたいですよね。
# TStreamのどれか(ってこの場合TFileStreamしかないか)でその処理を
# 書き直してもいけそうな気はしますが、コマンドラインプログラムで
# VCLにリンクさせるのはイヤかも。
オフライン
回答ありがとうございます。
このときに行っている命令はAnsiStringの変数に一旦書き込んでいるんですが、この際にファイルにもデバグのため書き込んで残してあります。このファイルを開いてこの文字列をそのままターミナルで実行すると(但しmodel.datは同じ場所において)ちゃんと実行できます。少なくともLinuxのターミナルでは実行できるようなのです。
オフライン