C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[10]: textの起動について


(過去ログ 48 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■26337 / inTopicNo.1)  textの起動について
  
□投稿者/ 初心者なハム (19回)-(2008/10/07(Tue) 13:24:58)

分類:[C#] 

わんくま同盟の皆様: 
 たびたび失礼いたします.この度,皆様の知恵をお借りさせて頂きたく質問しております.
どうかご教授の程,宜しくお願いいたします.

 さてタイトルにもありましたtextの起動についてなのですが,現在の所,当PCでは

      textBox1.Text = File.ReadAllText("C:\\Users\\郵政省\\日本郵政\\すでに\\民営化実行.txt", Encoding.Default);      ←仮名

で,text(民営化実行.txt)を読みこんでいます.
 ここで問題なのですが,今作っているプログラムを他のPCに移して実行する場合,どう変更すればよいのか分からず,不具合が出てます.
そこで上記にあるコードで

       textBox1.Text = File.ReadAllText("C:\\Users\\郵政省\\日本郵政\\すでに\\民営化実行.txt", Encoding.Default);  

                          ではなく

               textBox1.Text = File.ReadAllText("C:\\民営化実行.txt", Encoding.Default);      
    
 というような感じで,直接,「民営化実行.txt」と指定し,実行するようにしたいのです.どのように記述すればよいのか分からず,困っております.
どうか,どのように記述すればよいのかお教え頂けるよう,宜しくお願い致します.




引用返信 編集キー/
■26338 / inTopicNo.2)  Re[1]: textの起動について
□投稿者/ PATIO (137回)-(2008/10/07(Tue) 13:38:29)
No26337 (初心者なハム さん) に返信
>  textBox1.Text = File.ReadAllText("C:\\民営化実行.txt", Encoding.Default);      
>     
>  というような感じで,直接,「民営化実行.txt」と指定し,実行するようにしたいのです。

この記述だとCドライブのルートディレクトリにある「民営化実行.txt」しか開けませんが、
それで良いのでしょうか?
「直接,「民営化実行.txt」と指定し,実行するようにしたいのです。」
の部分が意味が良くわかりません。

textBox1.Text = File.ReadAllText("民営化実行.txt", Encoding.Default);      
ならカレントディレクトリを見に行くと思うのでカレントディレクトリにファイルがなければ、
エラーになるでしょう。ただ、カレントディレクトリ=実行ファイルがある場所とは
限らないのでそのつもりでいるなら動かないケースも出てくると思いますよ。

実行ファイルのある位置にファイルを置くのであれば、
実行ファイルが存在するフォルダのパスを取得してそれにファイル名を繋げて
フルパス名を編集してファイルアクセスすると確実だと思います。

まあ、質問の意味がいまいち良く分からないので外しているかもしれませんけれど。

引用返信 編集キー/
■26340 / inTopicNo.3)  Re[1]: textの起動について
□投稿者/ みきぬ (137回)-(2008/10/07(Tue) 13:49:46)
No26337 (初心者なハム さん) に返信
>  ここで問題なのですが,今作っているプログラムを他のPCに移して実行する場合,どう変更すればよいのか分からず,不具合が出てます.
>
ファイル名を、アプリケーションの設定ファイル(app.config)で持てばええんじゃないでしょうか。
でもって、実行する環境にあわせて設定ファイルを書き換えてあげればOK。

.NET TIPS : アプリケーション設定を活用するには?[2.0のみ、C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/558appsettings/appsettings.html
引用返信 編集キー/
■26341 / inTopicNo.4)  Re[2]: textの起動について
□投稿者/ HiJun (109回)-(2008/10/07(Tue) 13:53:02)
OpenDialogとかで、開きたい場所を指定してやるとか?
引用返信 編集キー/
■26343 / inTopicNo.5)  Re[3]: textの起動について
□投稿者/ 初心者なハム (20回)-(2008/10/07(Tue) 15:49:47)
■ ( PATIO さん) に返信
 ご指摘いただき,ありがとうございます.
>textBox1.Text = File.ReadAllText("民営化実行.txt", Encoding.Default);      
>ならカレントディレクトリを見に行くと思うのでカレントディレクトリにファイルがなければ、
>エラーになるでしょう。ただ、カレントディレクトリ=実行ファイルがある場所とは
>限らないのでそのつもりでいるなら動かないケースも出てくると思いますよ。
おっしゃるとおりです.

>実行ファイルのある位置にファイルを置くのであれば、
>実行ファイルが存在するフォルダのパスを取得してそれにファイル名を繋げて
>フルパス名を編集してファイルアクセスすると確実だと思います。
 おっしゃるとおりです.やはり,移植先に合わせてフルパス名を編集すれば確実ということですよね.

>まあ、質問の意味がいまいち良く分からないので外しているかもしれませんけれど。
 その,変な言い回しになるかもしれませんが,分からない側(私)としては,何せ分からないのでどういう風に記述すれば適切なのかが分からないのが
実情でして,そのことに関してご迷惑をおかけして大変申し訳ないです.なんと言いますか,もし的外れなことを言っていれば大変申し訳ない
のですが,イメージとしてほかのPCにプログラムを映した際,移植先に関係なく

           ”民営化実行.txt”

だけを実行したいのです.その場合,民営化実行.txtの前述にあるtextBox1.Text = File.ReadAllText("C:\\Users\\郵政省\\日本郵政\\すでに\\民営化実行.txt", Encoding.Default);
の\\Users\\郵政省\\日本郵政の影響を受けずに,どこのPC上でプログラムを使用しても("C:\\民営化実行.txt)だけで起動するような方法を探しております.少し,大げさに表現しましたが
今,私が思い描いていることはこのようになっております.
 すみません.

■ (みきぬ さん) に返信
 ご教授,ありがとうございます.
>ファイル名を、アプリケーションの設定ファイル(app.config)で持てばええんじゃないでしょうか。
>でもって、実行する環境にあわせて設定ファイルを書き換えてあげればOK。
 その,大変申し訳ないのですが,いまいちやり方が分かりません.このことについて勉強します.
ご教授ありがとうございます.

No26341 (HiJun さん) に返信
 御助言,ありがとうございます.
> OpenDialogとかで、開きたい場所を指定してやるとか?
 確かに,そういう方法がありますよね.手軽で,いい方法だと思いました.ただ,欲を言わせてい頂くと,開く作業を
使用するユーザー側に行わせず,全自動でスムーズな流れにしたいと考えています.よって,解決しなかった時の
最終手段として使用してみようと思います.


 
引用返信 編集キー/
■26345 / inTopicNo.6)  Re[4]: textの起動について
□投稿者/ 774RR (225回)-(2008/10/07(Tue) 16:32:45)
なんだか質問がよくまとまってなくってわからないんだけど、

・全ユーザーで共通な設定ファイルがある
・ユーザがインストール先を変更した場合に、そのファイルがどこにあるかわからない
っつーこと?
ならばインストール時にインストーラで初期設定ファイルなりレジストリなりに
その場所を記録しておくだけの話(そのようにインストーラを作る必要がある)

・全ユーザに個別の設定ファイルがあって、その雛形として共通ファイルがある
ってことなら、決めることがいくつかあって
・ユーザー固有設定ファイルをおくディレクトリを適宜決める
 (Vista 対応まで考えるなら UAC に反しないような方式にする必要がある)
・そのディレクトリをうまく算出できる方法をプログラムに埋め込む
ということになるかな。

引用返信 編集キー/
■26357 / inTopicNo.7)  Re[5]: textの起動について
□投稿者/ PATIO (138回)-(2008/10/07(Tue) 17:55:34)
まず、書くべき事はそのファイルがアプリケーションにとってどういう性質もので有るかを書く事だと思います。
アプリケーションの設定ファイルであれば、一々ユーザーに指定させるのはオペレーション的にも変ですよね。
あと、その設定ファイルがアプリケーションから書き換える必要があるファイルかどうか。
これは既に指摘がある通り、書込みが必要な場合、VistaではUACの関係でファイルの置き場所がある程度限定されます。
(本当はXPにもあるけれど、たいていの人がAdmin権限で使っているので問題になってませんが)

アプリケーションが操作するデータファイルで置き場所が一々変わるタイプのものであれば、
既に言われているようにダイアログでその都度指定してもらう事になります。

で、通常はこの手の設定ファイルはある程度置き場所を決めておき、それを動的に取得する手段を作っておくのが
普通でしょう。つまりプログラムの中に固定でパスを書くようなことはしないと言う話です。
その手段としてインストール時にそのパスをレジストリに記録しておく方法とか、
特殊なフォルダに置くようにしてそのフォルダのパスをAPIで取り出してファイル名を編集する等がある思います。
いずれにしてもファイルを開く時に固定のファイル名の指定でどうにか出来ると言う話は有りません。
この辺の仕組みは色々考えられるのでやり方も色々あります。

Vistaまで考えるのであれば、ユーザー毎のプロファイルを置くフォルダーのパスをAPIで取得して
その位置にアプリケーション用のフォルダーを設けてそこに置くのが常套手段ではないかと思います。
インストール時にその位置にファイルを入れておくわけですね。
アプリケーションはAPIでフォルダーを取得して設定ファイルにパスを編集してファイルを開きます。
このパスをインストール時にレジストリに書き込んでおけば、レジストリから読み込むだけで
ファイルが開ける事になりますね。

引用返信 編集キー/
■26358 / inTopicNo.8)  Re[6]: textの起動について
□投稿者/ PATIO (139回)-(2008/10/07(Tue) 18:03:54)
ちなみにですが、

「どこのPC上でプログラムを使用しても("C:\\民営化実行.txt")だけで起動するような方法を探しております。」
こんな事は出来ません。
つまり、"C:\\民営化実行.txt"とプログラムの中に固定の文字列で埋め込んで何処にファイルがあっても
OKと言うような方法は無いという事です。
ファイルを開く為のパスはプログラマがきちんと指定する必要があります。
これをしないで何処にあっても大丈夫なんて事は無理です。

既に前の書き込みでも書いていますが、プログラマの責任でそのファイルの置き場所がわかる手段を講じる必要があります。
その為の手段は既に他の方の書き込みも含めて挙がって来ていますのでそれぞれの方法について検討してみてください。
細かな手段に関してはWEB上で調べれば、色々あがってくると思います。

引用返信 編集キー/
■26360 / inTopicNo.9)  Re[7]: textの起動について
□投稿者/ PATIO (140回)-(2008/10/07(Tue) 18:06:54)
舌足らずの部分があったの追記。

> 「どこのPC上でプログラムを使用しても("C:\\民営化実行.txt")だけで起動するような方法を探しております。」
> こんな事は出来ません。
> つまり、"C:\\民営化実行.txt"とプログラムの中に固定の文字列で埋め込んで何処にファイルがあっても
> OKと言うような方法は無いという事です。

何処のPCにでも必ずC:\に民営化実行.txtを置いておけば、勿論可能ですよ。
インストールの時にそこに置く事になりますが。
ユーザー的には嫌がられる事、請け合いではあります。
引用返信 編集キー/
■26383 / inTopicNo.10)  Re[8]: textの起動について
□投稿者/ Jitta on the way (190回)-(2008/10/08(Wed) 07:11:52)
あと、「初心者」ほど、必要な情報を勝手な判断で削ってしまう傾向が見受けられます。特に、「どの様なことを実現したいか」ということを。問題をかんがえる上で、背景は重要なので、省かないで欲しいです。




全ディレクトリを検索するってのは、ナシ?
引用返信 編集キー/
■26386 / inTopicNo.11)  Re[9]: textの起動について
□投稿者/ ま (136回)-(2008/10/08(Wed) 09:44:03)
民営化実行.txt ってユーザー毎に内容が異なるの?

リソースは?
引用返信 編集キー/
■26422 / inTopicNo.12)  Re[10]: textの起動について
□投稿者/ 初心者なハム (21回)-(2008/10/08(Wed) 19:06:00)
 返答が,遅くなり,大変申し訳ないです.

(774RR さん) に返信
 御助言,ありがとうございます.
>・全ユーザーで共通な設定ファイルがある
>・ユーザがインストール先を変更した場合に、そのファイルがどこにあるかわからない
>っつーこと?
 そうではありません.


( PATIO さん) に返信:
 色々と,御助言頂きありがとうございます.
> 「どこのPC上でプログラムを使用しても("C:\\民営化実行.txt")だけで起動するような方法を探しております。」
>こんな事は出来ません。
>つまり、"C:\\民営化実行.txt"とプログラムの中に固定の文字列で埋め込んで何処にファイルがあっても
>OKと言うような方法は無いという事です。
 すみません.普通に,分かっておりませんでした.

 また,他にもPATIO さんの有益な御助言に従い,色々と試してみます.誠にありがとうございます.


(Jitta on the way さん) に返信:
 御助言ありがとうございます.
> あと、「初心者」ほど、必要な情報を勝手な判断で削ってしまう傾向が見受けられます。特に、「どの様なことを実現したいか」ということを。
>問題をかんがえる上で、背景は重要なので、省かないで欲しいです。
 申し訳ないです.ご指摘ありがとうございます.

No26386 (ま さん) に返信:
 ご指摘ありがとうございます.
> 民営化実行.txt ってユーザー毎に内容が異なるの?
 内容が異なるというより,プログラムで実行した結果をそこに記録し,民営化実行.txt を介して結果の書き込み,読み込みを行っています.


 ちなみに,今やっていることは各PCでつくった環境の違う2つのプログラム(VB6 VS2005)を1つに統合し,1つのプログラムにしようとしています.
この中で,民営化実行.txt はプログラムの結果を書いたり,読み込んだりする媒介の役割を果たしており,その民営化実行.txt があるプログラムを
もう1つのPCに移植する作業をしておりました.その際,指定していたパスの変更に迫られるわけであり,もし移植した際に別に変更せずにすむ方法
を考えていたのです.
 ただ,直接変更する問題なのでしょうが,まだ,色々と試してみることにします.
 なので,申し訳ないのですが,再びお時間を頂き,一旦ひと括りにして,また出直して色々と考えてみてみます.

 御助言,ご指摘いただいた皆様,色々とご迷惑をおかけして申し訳ございませんでした.それと色々とありがとうございました.
 それでは失礼いたします.



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -