• ベストアンサー

テキストファイルの表示

VB6.0で開発したプログラムです。 コマンドボタンを押すとエラーログ(テキストファイル)を 表示するという機能を追加しました。 Shell関数を使って、ノートバッドにエラーログをパラメタとして 渡して起動する、というオーソドックスなものなのですが できればユーザーの編集を防ぐために 読み取り専用で開きたいのです Shell関数にはそれを指定する引数ってないですよね? エラーログのファイル自体を読み取り専用にしてしまうと ログを書き込めないだろうし。 テキストファイルを読み込んでフォームに表示って 方法しかないでしょうかねぇ しかしあまりモジュールを増やしたくないんですよ。 ただでさえでっかいプログラムで すでに身動きとれなくなってるやつなんで。 OpenTextFileメソッドとやらも見つけたのですが、 (読み取り専用を指定できる) 画面に表示させることはできなそう?? 不可能ならしょうがないのですが、 何か方法があったら教えてください。。。

noname#62349
noname#62349

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 表示直前で、読み取り専用属性を付けてから開いたらどうですか。 そして表示終了後に、読み取り専用属性を解除します。 ちなみにファイルの属性変更は、SetAttr関数で出来ます。

noname#62349
質問者

お礼

こんにちは。おひさしぶりです。 SetAttr関数で属性変更できました! ただ表示終了後すぐに解除するとファイルは開いたままなので、 編集すると上書きできてしまったので エラーログを書き込む直前に解除するようにしたら 理想の動きになりました。 どうもありがとうございました。

その他の回答 (3)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

Internet Explorerとか、quickViewerとか、moreあたりを使うとか。

noname#62349
質問者

お礼

回答ありがとうございます。 その手もありますが、IEとかofficeがインストールされていることが 前提になってしまいますよね。ちょっと危険かな… すでに客先にリリースされているプログラムなので 環境はあまり変えられないんですよ。。。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

別ファイルにコピーして書込み禁止にしてメモ帳で開けばいいと思います。 >テキストファイルを読み込んでフォームに表示 リッチテキストボックスならLoadFileで一発

noname#62349
質問者

お礼

おひさしぶりです。いつもお世話になってます(^-^) コピーしなくてもmaruru01さんが教えてくれた関数で解決できました。 ありがとうございました。

  • emac
  • ベストアンサー率16% (1/6)
回答No.1

ログファイルをコピーすればいいんじゃないですか?

noname#62349
質問者

お礼

回答ありがとうございます。 ログファイルをコピーして表示して削除して… ってことでしょうか。 確かにそうなんですが、たいした機能ではないので そこまでやる必要あるかなぁというところです。

関連するQ&A

  • テキストファイルの内容を、フォームに表示したい

    (Microsoft Access) 単純な関数を使って、 保存されているテキストファイルの内容を、 フォームに表示したいのですが、 行を指定して表示できる関数はないでしょうか? (もとのテキストファイルが変更されれば  表示される内容も変更されるように) FileDateTime のように ファイル名と、表示したい行を指定できる 簡単な関数があれば、教えてください。

  • テキストファイルを直接置換する方法

    VBAに関する質問です。 複数のテキストファイルを読み込んで 指定した文字列を別の文字列に検索・置換してくれるプログラムを作りたいと考えています。 これをするためには一度 Set MyTxt = FSO.OpenTextFile(StrPath, 1) Do While MyTxt.AtEndOfStream = False hairetu(xxx) = MyTxt.ReadLine loop のようにしてテキストデータを全て配列に読み込み、 Replace関数で一つずつ検索・置換した後に Open StrPath For Output As #1 Print #1, hairetu(xxx) のようにしてファイルを出力し直すしかないですか? 配列に読み込まずに 既存のファイルを直接編集する方法を教えてください。

  • テキストファイルが開けません。

    main関数に2つの引数をとり、第1引数で指定したファイルの内容を第2引数で指定したファイルにコピーするプログラムを以下のように作りました。 #include<stdio.h> #include<fcntl.h> int main(int argc, char* argv[]){ int fd1, fd2, rs, ws; char buffer[10000]; if(argc!=3){ write(2, "使用法:実行ファイル コピー元ファイル コピー先ファイル\n", 54); exit(1); } fd1=open(argv[1], O_RDONLY); if(fd1<0){ fprintf(stderr, "can't open file '%s'.\n", argv[1]); exit(1); } fd2=open(argv[2], O_WRONLY|O_CREAT|O_TRUNC); if(fd2<0){ fprintf(stderr, "can't open file '%s'.\n", argv[2]); exit(1); } while((rs=read(fd1, buffer, 10000))>0){ if((ws=write(fd2, buffer, rs))!=rs){ write(2, "an error occurred while copying.\n"); exit(1); } } close(fd1); close(fd2); } コンパイル、実行ともに正常終了したのですが、 コピー先のテキストファイルを開こうとすると、 「アクセスは拒否されました。」というダイアログが表示されて 開くことができません。 なぜなのでしょうか。 よろしくお願いします。 ちなみにOSはWindows Vistaで、 プログラムはcygwin上で実行しました。

  • テキストファイルの行を指定して読み込み

    テキストファイルの読み込みたい行を指定して テキストボックスに表示させたいのですが、 どのようにすればよいでしょうか? StreamReaderには一行分の文字を読み取るReadLine メソッドがありますが、行は指定はできないようです。 良い方法があればアドバイスを頂きたいです。 よろしくお願いします。 --- 開発環境:VS2005 pro OS:Vista

  • ShellExecuteでエクセルファイルが起動しません。

     今、API関数GetOpenFileNameで「ファイルを開く」コモンダイアログを出して、  そこから選んだファイルのフルパスをテキストボックスに入れています。  さらにそのテキストボックスの中に入ったフルパスをAPI関数ShellExecuteで起動  させようとしているのですが、起動してくれません。  ちゃんとフルパスは入っています。  試しに新しいフォームを作ってShellExecute単独で、直接フルパスを  指定してやってみたところ起動できました。  問題は、パスではなく他の引数でしょうか??  ちなみに第1引数   : me.hwnd      第2引数   : "open"      第3引数   : フルパス      第4・5引数 : vbNullString      第6引数   : SW_SHOW と指定しました。  第4と5の引数はvbNullCharや""と指定してみました。  よろしくお願いします。

  • VBAで、テキストファイルの編集

    プログラムの初心者です。 困ってます。お教え下さい。 VBA上の制御で、あるテキストファイルのデータをコピーして、 別のテキストファイルに貼り付けして、別保存したいのですが、 分かりません。 テキストファイルを開くだけでしたらできたのですが、 それからが・・・・ Call Shell("C:\WINNT\system32\notepad.exe c:\text1.txt") すいません、お教え下さい。

  • vb プログラムの起動と例外処理

    はじめまして プログラムの実行と例外処理に関して質問させていただきます。 現在,visual basic2005でプログラム(A)からvbで作成した別のプログラム(B)に引数を指定してから起動し,別のプログラム(B)が例外処理に関する方法を調べています。 プログラム(B)起動時に例外処理を用い,以下のようなエラーメッセージを表示させるにはどういった処理を構成すればよいでしょうか。 パス名が設定されていない場合,”ファイルのパス名が見つかりませんでした” 引数が指定されていない場合,”引数が指定されておりません” 原因が特定できないエラーが発生した場合,”原因不明のエラーが発生しました” プログラムの実行にはShellメソッドとSystem.Diagnostics.ProcessクラスのStartメソッドがあるという事がわかりましたが,上記2つのメソッドが自分の意図したい操作に適しているかまでは理解におよんでおりません。 まだプログラミングを始めたばかりという事もあり,右も左もわかりませんが,ご教授お願い致します。

  • ACCESS2007 インポートするマクロでファイル指定

    ACCESS2007を使用しています。 tblにインポートするマクロを作成しようと思っているのですが、入力ファイルをパラメータのように与えることはできるのでしょうか。 できるのならば、その方法を教えてください。 マクロのアクションに「テキスト変換」で引数の箇所で、ファイルを指定しますが、これはFIXしたファイル名を指定しなければいけないようなので無理なのかなとは思っていたりしてます。 よろしくお願いします。

  • VBScriptのCloseとNothing

    VBScriptのCloseとNothing vbsでバッチ処理をプログラムを作っています。 内容は、テキストファイルの読み込みと書き込みです。 OpenTextFile(読み取り専用)でテキストファイルの中身を読み取り、 文字列操作後、 OpenTextFile(追記モード)で 読み取ったテキストファイルとは別のテキストファイルに書き込みます。 CloseとNothingは いつ、どのように使えばよいのですか? 参考サイトでも良いので教えてください。 よろしくお願いします。

  • テキストファイルの改行コード???

    こんにちは。よろしくお願いします。 テキストファイルをVBScriptで読み込ませ、ブラウザ上に表示させようと思っているのですが上手くいきません。知恵をお貸し願えませんでしょうか? 1.表示させたい「本文」をブラウザ上から入力する。(TEXTAREAを利用し、入力後にボタンを押すとテキストファイルに内容を書き込む。 2.表示用のページに行くと1のテキストファイルを読み込み、ソース上にテキスト内容を挿入するようなイメージにしたい。 「2」をソース上に書き込まないで、TEXTAREA内に書き込むようにすれば問題無く、改行されて表示されるのですが、ソース上に書き出すことによって、「1」の書き込みの際に簡単なタグを使用したファイルを作成し、「2」で反映したいと思って、上記のような方法を考えています。 read_file = ファイル名 '--- オブジェクト作成 --- Set ObjFSO = Server.CreateObject("Scripting.FileSystemObject") '--- ファイルを開く(読み取り専用、ファイルが存在しないときは新規作成) --- Set ObjTS = ObjFSO.OpenTextFile(Server.Mappath(read_file),1,True) '--- ファイルのデータを表示 --- Do Until ObjTS.AtEndofStream     setWD = setWD & ObjTS.ReadLine & Chr(10) Loop ReadFile = setWD で、上のReadFileに対して replaceで改行コードを<BR>に置き換えようにも、調べていたら、vbCrLfだの1310だのLF+CRだの。。。いっぱい出てきてよく分かりません。 どなたか、お知恵をお貸しくださいませんでしょうか?よろしくお願いします。