DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB.NETでテキストデータを取得したい

環境/言語:[WindowsXP VB.NET]
分類:[.NET]

VB.NETですが、環境設定ファイルをconfig.txtで下記のように作成し
VB.NETのフォームをロードした時に該当する箇所を読み込みしたいのですが
よくわかりません。ご教授いただけますか?

config.txt

sysname = "システム名"


VB.NET フォーム

Label1.text = sysname
■No3578に返信(KAZさんの記事)
> VB.NETですが、環境設定ファイルをconfig.txtで下記のように作成し
> VB.NETのフォームをロードした時に該当する箇所を読み込みしたいのですが
> よくわかりません。ご教授いただけますか?
>
> config.txt
>
> sysname = "システム名"
>
このような設定情報の書き込みは.NETには向いていません。
設定はXMLで保存するのがベストです。
XMLでしたら、属性地などに、ほかの情報も書き込めるので、
非常に柔軟な使い方が可能です。
たとえば
<setting>
<sysname>システム1</sysname>
</setting>
このようなXML(ファイル名はconfig.xmlとでもしましょう)でしたら、

XmlDocument doc = new XmlDocument();
doc.Load("config.xml");
string sysname = doc.DocumentElement.FirstChild.Value;

で取得できます。FirstChildでなく、ChildNodes[0]でも同じことですが、
まぁDOMですから、いろいろアクセス方法はあります。
KAZさん こんにちは。
環境設定ファイルは、INIファイルにした方が簡単だと思うのですが。
下記のサイトに、環境設定ファイルとINIファイルの読み書きのしかたの解説があります。

http://www.atmarkit.co.jp/fdotnet/dotnettips/039inifile/inifile.html
早速のご教授ありがとうございます。
参考にさせていただき、思い通りの環境設定ができました。
(m_o_m)
解決済み!
config.xmlに教えていただいた文+αを記述し、
form1.vbに

XmlDocument doc = new XmlDocument();
doc.Load("config.xml");
string sysname = doc.DocumentElement.FirstChild.Value;

を追加した所、コードが違うというエラーが発生しました。
通常のVB.NETのフォームコードでは上記の記述は無理なのでしょうか?
■No3583に返信(KAZさんの記事)
> config.xmlに教えていただいた文+αを記述し、
> form1.vbに
>
> XmlDocument doc = new XmlDocument();
> doc.Load("config.xml");
> string sysname = doc.DocumentElement.FirstChild.Value;
>
> を追加した所、コードが違うというエラーが発生しました。
> 通常のVB.NETのフォームコードでは上記の記述は無理なのでしょうか?

コードが違うというエラーですか・・・
このサンプルコードはC#のものです。;を取り除いてありますか?
また、ファイル名が正しいか確認してください。
Application.StartupPathでexeがあるディレクトリが取得できるので、
そこからの相対パスを足してください。

ちなみに、INIファイルを扱うには、APIを使う必要が出てきます。
XMLがINIより設定情報の保存に優れているのにかかわらず、
わざわざAPIを呼び出して、INIを読み書きする利点は全くないと思います。
> VB.NETですが、環境設定ファイルをconfig.txtで下記のように作成し
> VB.NETのフォームをロードした時に該当する箇所を読み込みしたいのですが
> よくわかりません。ご教授いただけますか?
>
> config.txt
>
> sysname = "システム名"
>
>
> VB.NET フォーム
>
> Label1.text = sysname

既にりょうさんが回答されているようにXMLを使う手もありますが、
自前のロジックで組んでもそれほど複雑にはなりませんので参考までに方針など。

1.StreamReaderを使ってReadLineで一行ずつ読み込む
2.StringクラスのSplitメソッドなりVBのSplit関数で"="で文字列を分割する。
3.分割した0番目の要素をキー、1番目の要素を値としてHashtableに登録する。
4.1.〜3.の繰り返し
5.以後はHashtableからキーを元に必要な値を取得する。

といような手が使えると思います。
厳密には右辺の""をはがす処理も考慮しないといけませんが、
それもファイルフォーマットの仕様次第ですね。
xmlでの方法も試してみましたが
C#ではないので、定義がないとか宣言がされていないといった
エラーになります。

私自身C#はわかりません。VB.NETもまだ触り始めたばかりで
今まではVB6を利用していました。
■No3596に返信(KAZさんの記事)
> xmlでの方法も試してみましたが
> C#ではないので、定義がないとか宣言がされていないといった
> エラーになります。
>
言語は関係ありません。コードと、設定情報の書き込んであるXMLを載せてください。どこかが必ず間違っているはずです。エラーの内容も載せてくださいね。

> 私自身C#はわかりません。VB.NETもまだ触り始めたばかりで
> 今まではVB6を利用していました。
いろいろとありがとうございます。
XML自体ぜんぜんわからないので、今回はあきらめます。
大変ご迷惑をおかけいたしました。(m_o_m)
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板