C#は僕が始めて勉強したOOPの言語です。
2年以上前でしたが、確かバージョンが2.0でした。
勉強したって言っても、ガンガンプログラムを作ったわけじゃないんで、全然使えるようになってたわけじゃないんですけどね。
当時はXNAでミニゲーム作ったぐらいで終わりました。
横スクロールアクションとスネークっていうミニゲームを作ったかな。
現在はVC#でフォームアプリケーションの作成をしています。
・・・とは言っても、メインシステムの管理用なんで、インターフェースはこらなくてもOKってことにしてるんですけどね。んで、やって見るとなかなか難しい。
文法から復習して、3.0の新機能も勉強して試してみたいと思ってます。
ラムダ式・Linqとか。
されさて。
最初はiniファイル(XML形式)を読み込み、書き込みする機能をとりあえず実装しました。
仕様としては
・DOMを使う
・指定したPathからiniファイルを読み込む設定をする(カレントにiniを作って、そこにPathだけ書き込む)
・XML要素の追加が出来るようにする
・要素の内容を編集できるようにする
ってので最初は実装しました。
最初はSAXで読み込みつつ処理をしてたんですけど、要素の追加とか、拡張性とか考えてDOMに変更です。
SAXでもほぼ出来上がってたんですけど、卒研の学習用なんで、時間があるんです。
DOMでやったらXPathとかで指定できて、後々楽になりそうでした。
iniファイルくらいの内容だったらメモリも食わないですしね。
ってことで完成。
最初はいいかと思ってたんですけど、シリアライズでXML形式で出力できるクラスが用意されてるらしく、すごくスッキリしそうだったんでそちらに変えることにしました(笑
・XmlSerializerを使う
・initInfoVo(ini情報を格納するクラス)内にシリアライズメソッドとデシリアライズメソッドを実装する
この際要素の追加とかはなしにしました。
妥協してArrayList2つ使って情報を保持するか、Reflection使えばいけそうだったんですけど、必要な情報はあらかじめフィールドに用意しておいてもらうことにしました。
Reflectionが難しくてめんどくさそうだったからじゃないんだからねっ!
何かいいiniファイルを扱う方法を知ってる方がいらっしゃったら教えてください!
(追記)誤字を発見するたびに編集してたら、編集回数が・・・・なんか恥ずかしいな
(C#3.0)iniファイル作成・読込み
(C#3.0)iniファイル作成・読込み
最後に編集したユーザー sizuma on 2010年12月07日(火) 22:24 [ 編集 3 回目 ]
Re: (C#3.0)iniファイル作成・読込み
ん?xml形式ではなくて、ini形式でのファイルなんですよね?
XmlSerializerだとxml形式での保存になると思うのですが・・・?
XmlSerializerだとxml形式での保存になると思うのですが・・・?
Re: (C#3.0)iniファイル作成・読込み
>バグさん
ini形式のファイルを作るんじゃなくて、設定をXML形式(ini.xml)にして扱おうと思ったんですが・・・
もしかしてここからおかしいですかね(汗
ini形式のファイルを作るんじゃなくて、設定をXML形式(ini.xml)にして扱おうと思ったんですが・・・
もしかしてここからおかしいですかね(汗
Re: (C#3.0)iniファイル作成・読込み
全然おかしくないですよ(^-^)
簡単なサンプルです。
object型で読み書きするので、どんな型でもいけると思います。 ※キャストしてやる手間はありますが・・・
使用方法で分からないことがあったらまた聞いてください。
簡単なサンプルです。
object型で読み書きするので、どんな型でもいけると思います。 ※キャストしてやる手間はありますが・・・
使用方法で分からないことがあったらまた聞いてください。
using System;
using System.IO;
using System.Xml.Serialization;
public static class Serializer
{
///
/// XML形式での保存メソッド
///
/// 保存先ファイルのフルパス
/// 保存するオブジェクト
/// true = 成功 : false = 失敗
public static bool Save(string path, object obj)
{
try
{
XmlSerializer xml = new XmlSerializer(obj.GetType());
xml.Serialize(new FileStream(path, FileMode.OpenOrCreate), obj);
return true;
}
catch (Exception)
{
return false;
}
}
///
/// XML形式のファイルの読み込みメソッド
///
/// データが保存されているファイルのフルパス
/// 読み出す型
/// 成功した場合は読み出されたobjectが返り、失敗した場合はnullが返る
public static object Load(string path, Type type)
{
try
{
XmlSerializer xml = new XmlSerializer(type);
return xml.Deserialize(new FileStream(path, FileMode.Open));
}
catch (Exception)
{
return null;
}
}
}
Re: (C#3.0)iniファイル作成・読込み
勉強になります^^
僕が書いたのは、ini情報を格納するValueオブジェクトの中にSaveとLoadメソッドを持たせました。
こっちの方が違うシステムに使いたいときもそのまま使えるんでいいですね!
アドバイスありがとうございました。
僕が書いたのは、ini情報を格納するValueオブジェクトの中にSaveとLoadメソッドを持たせました。
こっちの方が違うシステムに使いたいときもそのまま使えるんでいいですね!
アドバイスありがとうございました。
最後に編集したユーザー sizuma on 2010年12月09日(木) 00:14 [ 編集 1 回目 ]