簡単な設定をiniファイルに保存するためにDevExpress Demoコードの一部を理解し、おそらく再利用しようとしています。私は.NET System.Configurationを使用して、私が望むことをすることができることを知っています。ちょっとしたプロジェクトの場合は、テキストファイルとして保存するだけで、もっと柔軟で軽量に見えます。"[] Server"のようなキーをsortedDictionaryに使うのはなぜですか?
とにかく、私はそれを使って遊んでいる間に、キーを「[] Server」と「[] DBFormat」とキー名として追加しようとしている理由を理解しようとしています。彼らは私がまだ理解できない理由のために、私は多分ここでいくつかの助けを使うことができます。
public class IniFile {
SortedDictionary<string, string> data = new SortedDictionary<string, string>();
...
public void Load(string path) {
using(StreamReader sr = new StreamReader(path)) {
string folder = "[]";
while(!sr.EndOfStream) {
string s = sr.ReadLine().Trim();
if(s.Length == 0 || s[0] == ';') continue;
if(s[0] == '[') {
folder = s;
continue;
}
string key, value;
int delim = s.IndexOf('=');
if(delim < 0) {
key = folder + s.Replace("[", string.Empty).Replace("]", string.Empty);
value = string.Empty;
} else {
key = folder + s.Remove(delim).TrimEnd().Replace("[", string.Empty).Replace("]", string.Empty);
value = s.Substring(delim + 1).TrimStart();
}
if(!data.ContainsKey(key)) data.Add(key, value);
else data[key] = value;
}
}
}
...
public void Save(string path) {
using(StreamWriter sw = new StreamWriter(path)) {
string folder = "[]";
foreach(string key in data.Keys) {
int delim = key.IndexOf(']');
string keyFolder = key.Remove(delim + 1);
string keyName = key.Substring(delim + 1);
if(keyFolder != folder) {
folder = keyFolder;
sw.WriteLine(folder);
}
sw.WriteLine(keyName + " = " + data[key]);
}
}
}
void AddRawValue(string key, string value) {
key = key.Trim();
value = value.Trim();
int folderBegin = key.IndexOf('[');
int folderEnd = key.IndexOf(']');
if(folderBegin != 0 || folderEnd < 0) throw new ArgumentException("key");
data.Add(key, value);
}
そしてここでは、iniファイル自体の一部である:
DBFormat = "Mdb"
Login = "admin"
Password = ""
Server = "(localhost)"
明白な、彼らはのためのキー名に[]を追加して、トラブルかかわら行くここ
は、私は、関連すると思うのコードです何らかの理由がありますが、デモデータでは使用しません。 []内の文字列を使用して設定をグループ化していると思いますか?
わかりません一部のサードパーティのデモコードを使用すると、BCLに組み込まれた設定システムを使用するより簡単で簡単なことに同意します。 –
私はそれが本当に醜いコードだと言わなければならない。 –
このコードの品質に基づいて、理解している時間を無駄にせず、コードサンプルの別のソースを見つけることをお勧めします。 – Rob