VBでVisual Fortranを動かすには?

解決


忠夫  2004-10-13 02:19:54  No: 85994

解析部をVisual Fortranで作成し、".exe"にしました。
その解析のプログラムをそのまま動かすと、きちんと計算を行うのですが、VBから"Shell関数"を用いて動かすと数値をうまく読み込まず、計算がうまくいきません。
これはどういうことが原因と考えられるのでしょうか?
Shell関数の部分は
kaiseki = Shell("..\solver\hsb.exe", 1)
としています。


raki  URL  2004-10-13 02:38:42  No: 85995

原因は分かりませんが、
ShellExecuteを使って実行してみてはいかがでしょうか。


忠夫  2004-10-13 02:51:27  No: 85996

"ShellExecute"とは何ですか?
"Shell"を"ShellExecute"に変えればよいのでしょうか?
基本的な質問ですいません。


raki  2004-10-13 03:02:42  No: 85997

ShellExecuteはWin32APIの一つです。

' 宣言部
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Const SW_SHOW = 5 

' 実行部はこのようになるでしょうか。
kaiseki = ShellExecute(Me.hWnd, "Open", "..\solver\hsb.exe", "", "", SW_SHOW)

検索すれば出てきますので、調べてみてください。


忠夫  2004-10-13 03:22:52  No: 85998

>rakiさん
丁寧に教えていただき、ありがとうございます。
しかし、出来ませんでした。
そのまま使ってはいけなかったのでしょうか?
僕の知識不足です。申し訳ありません。
他にも方法をご存知なら教えていただきたいのですが…。


魔界の仮面弁士  2004-10-13 03:41:42  No: 85999

"Microsoft FORTRAN PowerStation"は、触った事がありますが、
Visual Fortran という製品は見た事すら無いので、外しているかも
知れませんが…以下の事を、ひとつずつ確認してみてください。

(1) VBの開発環境から実行した場合と、VB側もコンパイルしてexeにしてから
    実行した場合とで、Fortran側のexeの動作に違いはありますか?

(2) Shell関数で指定するコマンドラインに、空白は含まれていませんか?
   (C:\Program Files〜など)
   空白が含まれる場合は、空白を含まないパスにて試してみてください。

(3) ChDrive および ChDir を使って、カレントディレクトリを
   事前に「Fortran製のexeがあるディレクトリ」に移動させてから、
   Shell 関数を呼び出してみては如何でしょうか。

(4) そのexeは、batファイルから呼び出した場合には動作しますか?
   もし bat からであれば動作するのであれら、exeをVBから直接
   呼び出すのではなく、batファイル経由で呼び出してみてください。

(5) Shell関数を使って呼び出す替わりに、WshShellオブジェクトの
    Runメソッドを使ってみては如何でしょうか。

# データの読み込みに失敗するというと、(3)のような気もするけれど…。


忠夫  2004-10-13 20:29:25  No: 86000

>魔界の仮面弁士さん
ありがとうございました!
(3)の方法でやったら出来ました。
今後もまたわからないことがありましたらよろしくお願いします。
本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加