こんにちは。
皆さんのお知恵をお借りしたいとおもいます。

現在Windows NT & VC++ でプログラムの勉強をしています。

例えば、aaa.cppのソース内で、exe(例えば、c:\work\sample.exe)を実行させて
成功したかどうか念の為、確認を行いたいと考えております。


---aaa.cpp---
int rtn_flg; /* system関数の戻り値 */
(略)
rtn_flg = system("c:\\work\\sample.exe");

/* sample.exeが正常に動作したか確認したい */


-------------


上記のようなプログラムでsample.exeが正常に実行できたか、確認したいとかんがえております。

正常に実行できなかった場合というのは、たとえは『実行ファイルが存在しません。』などというシステムエラーです。
(sample.exe内で意図的にエラーをリターンしているといういみではありません。)

実際上記のプログラムを実行すると、正常にexeが動作したときも、例えばsample.exeの名称をssaammppllee.exeと実際にありえない名称にしても
rtn_flg には"0"が返ってきます。

rtn_flgでexeが正常に動作したか、そうでないか確認できないものでしょうか?

大変わかりづらい質問でご面倒ですが、宜しくお願い致します。

A 回答 (2件)

Borland系のコンパイラではerrnoで判別できます。


MS系のコンパイラにも該当するものがあるのではないかと思うのですが...
ヘルプ等を見てはいかがでしょう。

# WindowsAPIを使用するなら、CreateProcess()のエラーはGetLastError()で取得できます。
    • good
    • 0

system()がもともとそういう仕様の関数なので,


プログラムの実行をsystemで行っている限りはできません。

別の方法で実行するしかないでしょう。
exec()等を調べてみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで種類を数える関数が無いのは何故?

エクセルで種類を数える関数が無いのは何故なんでしょうか?

エクセルで種類を数えるには、いくつかの関数を組み合わせるのが一般的ですよね?
直接数える関数が無いのは、訳があるんでしょうか?

Aベストアンサー

>>エクセルで種類を数える関数が無いのは何故なんでしょうか?

やっぱり、そういう関数が必要な方が全体からみたら少数派だと、エクセルの開発者たちが考えているからではないかと思います。
また、既存の関数を組み合わせたら、対処可能だから、無理して新しい関数を作る必要性もない、開発の優先順位が低いって判断もあるでしょうね。

私は、エクセルの表を作ったり、エクセルVBAでプログラムを作ったりしますけど、そういう関数が必要になったことが全くありませんし。

Qあるexeファイルを実行するexeファイルを作りたい

いつもお世話になってます。

前回、http://okwave.jp/qa4949997.html にて質問させていただきました。最終的にはこのページのようなことをしたいのですが、とりあえずRubyファイルをコンパイルし、exeファイルに変換することはできました。

そこで次はそのexeファイルを実行させるC/C++コードが必要になってくるのですが、C/C++はあまり詳しくないのでよくわかりません。

ちなみにコマンド引数も使うexeファイルです。

よろしくお願いします。

Aベストアンサー

exeファイルを実行させたいということでしょうか?

「Exerb」というコンパイラは分からないので、
使えるかどうかは分からないのですが、
API関数に、
ShellExecute();
http://msdn.microsoft.com/ja-jp/library/cc422072.aspx
CreateProcess();
http://msdn.microsoft.com/ja-jp/library/cc429066.aspx
WinExec();
http://msdn.microsoft.com/ja-jp/library/cc429435.aspx
という関数があります。

Qエクセルの関数で

エクセルの関数辞典を見ていたら、CUMPRINC関数というのがありました。
しかし、エクセルの「挿入」→「関数」→関数の分類で「財務」というのを選択したのですが、一覧表に載っていません。
どこに載っているのでしょうか?
どうすればこの関数を使えますか?
ちなみにシートの上でやっても関数の反応をしませんでした。

Aベストアンサー

Yahooで検索してみると、参考URLが引っかかりました。

参考になりませんか?

参考URL:http://money-sense.net/doc/20041215_224257.php

QC#VB、exeに埋め込んだexeの実行

C#でexeに埋め込みの画像を表示することはできますが、
exeに埋め込みのexeを実行することはできるのでしょうか。お願いします。

Aベストアンサー

テンポラリファイルに保存してキックするとか。

string file = Path.GetTempFileName().Replace(".tmp", ".exe");
byte[] bin = Properties.Resources.埋め込みのexe;
using (FileStream fs = new FileStream(file, FileMode.Create))
fs.Write(bin, 0, bin.Length);
Process p = Process.Start(file);
p.WaitForExit();
File.Delete(file);

Qエクセルの関数 ネスト

エクセルの関数 ネスト

エクセルの関数で、ネストさせるときがあるとおもうのですが、

関数を内側に書いたらよいのか外側に書いたらよいのか分からなくなる時があります。

エクセルの関数に関してわかりやすく書いてあるページなどありますか。

Aベストアンサー

こんばんは

Excel2003までは、ネストが7まで、2007では64までが可能です。
http://www.google.co.jp/search?hl=ja&source=hp&q=excel+%E3%83%8D%E3%82%B9%E3%83%88%E3%80%802003%E3%80%802007&aq=f&aqi=&aql=&oq=&gs_rfai=

「仕様上は可能」でも、複雑なネストは間違いが生じやすいですし、変更もしにくくなります。「出来るだけネストはしない」「適宜、中間結果をセルに出力する」という方法を採った方が、間違いが少なく、柔軟性のあるシステムになると思います。

>エクセルの関数に関してわかりやすく書いてあるページなどありますか。
関数の個別の機能ならば、Webサイトも書籍も多数あるのですが、「組み合わせて使う」というのはその場その場での発想になってしまうと思います。

Qリリース実行やExe実行で動作が異なる

質問です。

Microsoft Visual Studio 2008 Professional Edition - JPN
Microsoft DirectX SDK (August 2007)

上記の環境で開発を行っているのですが、
Debug実行、Release実行、Exe実行で動作ができなくなることが
あるのですが、原因はなんなんでしょうか?
ご教授御願い致します。

特にコンパイル環境の設定を変更したわけではなく、
リリース環境も"最大限に最適化"のみとなっています。
フォルダパス等も間違っておらず、DirectXの描画が不正となります。

基本的にDebug実行では、問題なく、リリース環境とExe実行に問題が発生します。
原因は、環境構築の違いからくるものだと思うのですが、
解決するには、どうすればよいのでしょうか?
また、他の問題があるのでしょうか?

宜しく御願い致します。

Aベストアンサー

リリース環境のみに起こるバグというのはよくあることです。

そういう場合、releaseビルドでもファイルにログを出力したり、WindowsならOutputDebugStringで
追跡できるようにしておくとよいでしょう。
(define1つでログ出力のオン/オフが出来るようにしておくと便利です。)

>DirectXの描画が不正となります
上記の方法でログをとりHRESULTの値等がどうなっているか調べてください。

Qエクセル関数の解読サイトなんてありますか?

エクセル関数の解読サイトなんてありますか?

いつもお世話になっております<(_ _)>

エクセルファイルに関数の入った数式が入力されています。
セルごとに複数の関数が入っていますが、私にはちっともわかりません。

そこで質問です。
こんなとき「エクセル関数を解読」してくれるようなサイトってありませんか?

たとえば検索窓があってそこに「=SUM(S1:S13)」わからなくて困っている関数式を入力。
すると答えの別ボックスに「S1~S13までの数値の合計」と出てくるようなサイト。

それに近いサイトでも良いので知っている方がいらっしゃればぜひ、教えてください<(_ _)>

Aベストアンサー

もし、

=IF(E14="","",IF(O14="",(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1300,(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1625))

だったら、どういう文章が出て欲しいのでしょうか?

もしE14が空白だったら、
 空白、
そうじゃなかったから、
 もしO14が空白だったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1300
 そうじゃなかったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1625

って感じですか?
数式をそのまま読解したほうが解りやすくないですか?

Qmain.cpp以外のcppの追加について

VisualC++を使用し、プログラムを作っています。
そこでプログラムを整理しようと思うのですが、
main.cpp以外もcppを作成し、プログラムを分割することが可能ですよね?
cppファイル自体は作ることができるのですが、
作った後どのようにしてmain文から呼び出し?をするのか具体的なことがわかりません。

どのようなワードで検索が引っ掛かるのかもわからないので
掲載しているHP、もしくはやり方を教えてください。

私自身理解が足りていないので、
説明もあやふやなものになっていますがよろしくお願いします。

Aベストアンサー

参考まで…。

http://blog.livedoor.jp/tek_koc/archives/50198846.html

Qエクセル関数を、書き写して分析できるツールはある?

タイトルの件、質問します。

エクセルの関数を分析する際に、エクセルの数式バーや、セルに入っている関数を
F2を教えて見るのでは、見にくい場合があります。

現在は、私は、メモ帳に関数をコピーして、分析したり、修正したりしています。
エクセルの機能or他ソフトで、関数を分析できるツールはあるのでしょうか??

【エクセルバージョン】
2003、2007

Aベストアンサー

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利な方法です。
そもそも計算が通っていない(たとえばカッコの対応が間違えていて,Enterしても受け付けてくれないようなミスをしている場合)には使えません。



また,数式バーの中で数式の「中」にカーソルを入れて左右の矢印キーでカーソルを動かしていったときに,「(」や「)」をまたいだ瞬間に,対応する「閉じカッコ」「始まりのカッコ」が色つきで強調表示されるのを確認しながら,カッコの対応がまちがえてないかなどを調べるのも簡易な良い方法です。


あまり使わない方法ですが,数式の中で適宜ALT+Enterを打って「セル内改行」してしまい,数式を縦に分解して書いてみるのも整理しやすい方法のひとつです。

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利...続きを読む

QEXEやDLLを実行中に実行されているファイルが何処にあるのか知りたいんです

例えば
test.exeというEXEを開発していて、test.exeを実行したときに
test.exeが何処にあるのか(フルパスで)を
test.exeの中で知りたいのですが
どなたかご存知ありませんか?
環境はWindows全般 VC++です

Aベストアンサー

GetModuleFileName() という API がお望みのものか、と。


人気Q&Aランキング

おすすめ情報