• ベストアンサー

AtEndOfStream について

お世話になっております。 他人が作成したWSHのプログラムを解析して おりまして、どうしても意味が分からない箇所が ございます。  (オブジェクトA).StdErr.AtEndOfStream 文献等から、「オブジェクトAのエラー出力が ストリームの最後であるかどうかを判定し、 True/Falseを返す」ということまでは分かった のですが、『エラー出力がストリームの最後』と いう状態はどういうことなのでしょうか? 大変恐縮ですが、どなたかご教示いただければと 思います。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

標準エラー出力ってなんだかわかりますか? MS-DOSプロンプトやコマンドプロンプトでは、標準入出力という機能が提供されています。 標準入力、標準出力、標準エラー出力があり、デフォルトですと、標準入力はキー入力、標準出力と標準エラー出力はプロンプトへの出力です。 これらは、変更することが出来、DOSコマンドではリダイレクトということをするとファイルを標準入力や標準出力に、プリンタを標準出力にすることが出来ます。 同様に、WSHではストリームというものに標準入出力を変更することができます。 こうすることにより、通常はコマンドプロンプトに垂れ流しにされる実行出力結果をストリームとして取り込むことで、WSHで文字列として扱えるようになります。 おそらく(オブジェクトA)で何らかのアプリケーションを実行しているはずです。その出力結果を扱おうということですね。 で、AtEndOfStreamプロパティは、起動したアプリが、標準エラー出力に出力した文字が存在するか(残っているか)どうかをチェックするためのプロパティということになります。

masaharu4445
質問者

お礼

taka_tetsu様 丁寧なご回答ありがとうございます。 おかげでストリームの概念から調べることが出来、大方の理解をすることができました。 大変参考になりました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイル出力クラスの選択について(Java)

    少し長文になります。 Javaで、複数のオブジェクトに格納された文字列をループでgetして、 1つのファイル(test.txt)内に出力していくプログラムを作っています。 ファイル出力する際に使用可能なクラスがいくつもあるため、 どれを選択すればいいのか迷ってます。 以下の条件から、使用すべきクラスを教えて下さい! <ファイル出力の条件> ーーーーーーーーーーーーーー 1. ファイル(test.txt)は毎回新規で1ファイルのみ作成して、   そのファイル内にオブジェクトからループでgetした文字列を1行ずつ出力していく。   (次回実行の直前に、前回のtest.txtは手動削除する。) 2. test.txt内には日本語が出力される可能性があり、且つ、   test.txtをWindowsのアプリケーションで利用するため、   SJISにエンコードして出力する。   ※Javaの実行環境はLinux 3. バッファを使って出力する。 ーーーーーーーーーーーーーー 以上です。 私の考えでは、全てキャラクタストリームを使って、 ---------- FIleWriter fw = new FileWriter("test.txt",true);  OutputStreamWriter osw = new OutputStreamWriter(fw,"SJIS"); BufferedWriter bw = new BufferedWriter(osw); ---------- でいいのかなと思ったのですが、 ネットを見ていると ---------- FileOutputStream os = new FileOutputStream("output"); OutputStreamWriter osw = new OutputStreamWriter(os, "JIS"); BufferedWriter bw = new BufferedWriter(osw); PrintWriter pw = new PrintWriter(bw); ---------- という記述もあり、 わざわざキャラクタストリームとバイトストリーム(FileOutputStream)を混ぜて使っている意図もよく分かりません。 (文字列を扱うのに、バイトストリームを使う意味って無いですよね??) それから、私の例では FIleWriterインスタンス生成時の引数で"true"を指定して test.txtに"追記"するように設定してますが、 test.txt自体は毎回新規作成のものを使うので、この場合trueもfalseも不要でしょうか?? (→認識の確認として、 「trueやfalseはあくまで既存ファイルに対しての追記/上書きの設定であって、 ファイルをオープンしてクローズするまでの間はtrueなど設定しなくても ずっと末尾に追記されていく」という認識でOK?) また、true/falseが不要な場合、 FIleWriterは使わずに、 ---------- OutputStreamWriter osw = new OutputStreamWriter("test.txt","SJIS"); BufferedWriter bw = new BufferedWriter(osw); ---------- としても問題無いでしょうか?? 以上、分かる方、アドバイスください!

    • ベストアンサー
    • Java
  • サーバエラー500発生時でも200で返却したい

    mb_send_mailで不正な送信先メールアドレスを設定して実行すると、戻り値はfalseとなり、 falseの場合には後続のPHPスクリプトにてメール送信が失敗したエラー画面を出力する 処理を実装している。 mb_send_mailの戻り値がtrueまたはfalseかを判定している以外は、エラー処理は実装していません。 【問題点】 mb_send_mail=false後、エラー画面出力処理が最後まで実行されていることは、 処理の途中に埋め込んだデバッグ用のログで確認済みなのだが、 クライアント側にはInternal Server Errorのステータスと、PHPスクリプトで 出力しようとした画面ではなく、内部エラーが発生した旨の簡易な情報が出力された 画面が出力されます。 [Mon Sep 09 11:43:57 2013] [error] [client ****] malformed header from script. Bad header=test@set@ting_error... ↑不正なメールアドレスを設定したのでエラーになることは構わないのだが、 後続の処理で作成したエラー画面をHttpStatus200で返却したい。 【質問】 mb_send_mail=falseが発生したとしても、HTTPステータスは500ではなく200で レスポンスを返却し、PHPスクリプトで作成したエラー画面をクライアントに表示させる方法を ご教授ください。 【試したこと】 ・mb_send_mail=falseとなった場合に、http_response_code(200);としてみたが効果なし。 ご教授よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 文字列の一致を確認する条件分岐でエラーなります。

    どこが間違ってるのでしょうか? #include <iostream> using namespace std; int main(void) { int buffA = 1; int buffB = 10; if(buffA == buffB) { // 一致なら"true"を出力 cout << "true" << "\n"; } else { // 不一致なら"false"を出力 cout << "false" << "\n"; } return 0; } エラー内容----------------------------------- エラー: プログラム内に逸脱した '\201' があります エラー: プログラム内に逸脱した '@' があります

  • ラジオボタンの選択判定

    こんばんわ。 ラジオボタンを使って判定を行いたいのですがうまくいきません。 やりたいのは、1,2,3のラジオボタンとaというボタンがありaを押したときにチェックがついているラジオボタンによって判定が変わるようにしたいのです。 初期設定を1はtrue、2,3はfalseにしてあります。 3つのボタンはグループ化してありますので、どれかひとつしかtrueがないです。 現状では、初期設定の状態でボタンを押しても反応しません。 一度ボタンのt/fを変更すれば判定ができるようになるのですが。 どなたかわかる方いらっしゃいましたら教えてください。 お願いします。

    • ベストアンサー
    • Java
  • コマンドプロンプトで変数が数字であることを判定する方法

    コマンドプロンプトで変数の中身が数字であることを判定することは可能でしょうか。 変数の内容が0000や1020ならばTRUE、00A0なんかだとFALSEに するIF文を作りたいのです。

  • 複数の、Falseの判定方法について

    現在ゲームを作っているんですが、 どうしても、コーディングが、長くなってしまうので、 やりかたを教えて欲しいのですが、 複数の、オブジェクトの判定のやり方を、知りたいのです。 SHAPEを、コントロール配列にして、 0~4までが、全部Falseだったら、 チェックを入れる。 という風にしたいのです。 現在は If (Shape(0).Visible = False) And (Shape(1).Visible = False) And ~省略~ Then    hanntei = True 'Boolean形 end if という風に、全部書いてます。 まだまだ、SHAPEは増やす予定なので、 そうするとどうしても、長くなってしまうので、どうにかしたいのですが、思いつきません。 どなたか、教えてください。

  • OpenOffice.org CalcでIF関数

    非常に単純な質問で恐縮です。 OpenOffice.org Calcで以下のように書きましたがうまくいきません。 何が間違っているのでしょうか? 【行いたい動作】 A1セルの値がFALSEの場合、B1セルにFALSEと記入したい。 [A1の値] =D1<=E1 (見た目はFALSEと記述されている) [B1の値] IF(A1=FALSE;FALSE;TRUE)

  • AccessVBAでのExcelメモリ解放

    はじめまして。 仕事でAccessVBAを使ってExcelのデータを操作するプログラムを作っています。 やりたいこと (1)日付と店番・店名が入力されているExcelを開く (2)削除日=C列からオートフィルで空白(日付が入力されていないもの)を絞りだす (3)日付=B列からオートフィルで本日の日付より1ヶ月前の日付を搾り出す (4)もし本日より1ヶ月前の日付があれば、C列の削除日に本日の日付を入れる (5)印刷 問題点 ・動作が不安定 ・Excelのメモリ解放がおかしいのか、プログラム終了後別件でエクセルを開くと  ビジー状態になり「応答なし」になってしまう ・プログラム内でAccessテーブルのデータを既存のExcelファイルの最終行に 追加で出力したいが、なぜかAccessテーブルの名前で新規シートが作られ、そこに データが入ってしまう 色々なサイトを見ましたが、どこがおかしいのか分からず。 どなたか知恵をお貸しいただけますでしょうか。 Private Sub cmd_insert_Click() On Error GoTo Error Dim App As Object ' Application Object Dim Wkb As Object ' Excel.Workbook Object Dim Wsh As Object ' Excel.WorkSheet Object Dim Kensu As Integer ' 削除データ件数格納 Dim cnt As Integer ' 件数カウント Dim lngYLine As Long ' 対象となる列の番号 Dim intXLine As Integer ' 対象となる行の番号 Dim strac As String ' Accessテーブル名 Dim strxls As String ' 出力先ファイルのパス Dim strmsg As String ' メッセージボックスへのメッセージ格納 Dim strans As String ' 削除対象日付格納 'Excelファイルをセット Set App = CreateObject("Excel.Application") App.Visible = True Set Wkb = App.WorkBooks.Open("C:\Downloads\記録.xls") ←わざと変なURLにしています Set Wsh = Wkb.Worksheets("HP") '出力先ファイル指定 strxls = "C:\Downloads\記録.xls" 'Accessテーブルに入力したデータをExcelファイルへ出力 strac = "tbl_募集データ" strmsg = strac & " を、Excelファイルへ出力します。" & Chr(13) & _ "出力先は" & strxls & "、 シート名はHPです。" & _ Chr(13) & "よろしければ、OKをクリックして下さい。" '★★excelシートの最終行に追加でデータを入れたい★★ ' If MsgBox(strmsg, vbOKCancel) = vbOK Then ' ' ' '最初のデータをフィールド名として使う ' DoCmd.TransferSpreadsheet acExport, _ ' acSpreadsheetTypeExcel9, strac, strxls, True ' MsgBox "データ入力正常完了!" ' ' End If 'オートフィルで「削除日」の行が空白のものを選択 ※削除日はC行目固定とする Wsh.Range("C1").CurrentRegion.AutoFilter Field:=3, Criteria1:="=" '本日分の削除データのチェック(本日より1ヶ月前の日付のものを搾り出す) strans = Format(DateAdd("d", -30, Date), "mm/dd") Wsh.Range("B1").CurrentRegion.AutoFilter Field:=2, Criteria1:=strans If Wsh.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then MsgBox "本日は削除データがありません" Else '削除データ件数取得 Kensu = (Wsh.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count) - 1 MsgBox "削除データあり、件数は" & Kensu & "件でした" lngYLine = Wsh.Cells.Find(strans).Row intXLine = Wsh.Cells.Find(strans).Column For cnt = 1 To Kensu '削除日の列に本日の日付を入力 Wsh.Range("C" & CStr(lngYLine)).Value = Format(Date, "mm/dd") lngYLine = lngYLine + 1 Next '削除対象範囲を印刷 If MsgBox("印刷しますか?", vbQuestion + vbYesNo) = vbYes Then 'シートの指定 Wsh.Activate App.Visible = False Wkb.Application.ScreenUpdating = False Wsh.Visible = True Wsh.PrintOut Wsh.Visible = False End If End If 'オートフィルを元に戻す If Wsh.FilterMode = True Then Wsh.ShowAllData End If MsgBox ("正常終了しました!") '上書き保存 Wkb.Save 'Only XL 97 supports UserControl Property On Error Resume Next 'App.UserControl = True Wkb.Close SaveChanges:=False App.Quit Set Wsh = Nothing Set Wkb = Nothing Set App = Nothing Exit Sub Error: If Err.Number = 3044 Then MsgBox "パスの指定が誤っている可能性があります。", vbCritical Else MsgBox "予期せぬエラーが発生しました。", vbCritical End If App.UserControl = True Wkb.Close App.Quit Set Wsh = Nothing Set Wkb = Nothing Set App = Nothing End Su

  • C#でアクセス権限の取得方法が知りたいです。

    指定したフォルダのアクセス権限を取得し、「書き込み権限が無い」場合エラーを出力したいのですが、 良い方法があれば教えていただけますでしょうか。 開発環境は、visualC#を使っています。 現在圧縮を行う ⇒ ファイルを出力する ⇒ 出力先に書き込み権限がなかった場合、エラーを出力する というプログラムを書いています。 そこでアクセス権限を取得したいです。 AccessControlType AccountName FileSystemRights IsInherited Allow NT AUTHORITY\SYSTEM FullControl False Allow BUILTIN\Administrators FullControl False Allow BUILTIN\Users ReadAndExecute, Synchronize False Allow NT SERVICE\TrustedInstaller FullControl True Allow BUILTIN\Administrators ReadAndExecute, Synchronize True Allow NT AUTHORITY\SYSTEM ReadAndExecute, Synchronize True Allow BUILTIN\Users ReadAndExecute, Synchronize True GetAccessControlメソッドで、上記のように各権限をテキストで出力する事はできるのですが、 「書き込み権限が無い場合」という条件をif文で判別する場合どのようにすれば良いか悩んでします。 このような出力でアクセス権限を取得しなくても、 書き込み権限があるかどうか判別する為のメソッド(返り値としてtrue or false)があるのか。 このテキストでの出力から文字列操作でtrueかfalseを抜いて、 フルコントロールもしくはユーザの書き込み権限いずれかの部分がtrueになっているのを確認しなければいけないのか。 ご教授いただけないでしょうか。 よろしくお願い致します。

  • windowsというクラスをダミーでJScriptで記述できないものでしょうか?

    HTMLのjavascriptのファイルtest.jsを JScriptでコンパイルしたところ、 window.document..... でエラーになります。 HTMLだから正しく動いていたと思いますが、 windowsというクラスをダミーでJScriptで記述できないものでしょうか? もしくは、windowというオブジェクトが定義されていないと判定する 方法が知りたいです。 Javascript JScript VBScript WSH ... それぞれ別物でしょうか?

このQ&Aのポイント
  • 専業主婦の心ない暴言が男女平等を妨げ、DV(家庭内暴力)につながる可能性がある。
  • 夫たちの労働や苦労を無視し、仕事と育児を平等に分担すべきであることを訴える。
  • 専業主婦や兼業主婦に対する偏見や差別的な言葉も存在し、社会の課題となっている。
回答を見る