質問編集履歴
2
指摘反映
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,6 +42,10 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
+
■iniファイルにCRLFが入るのが嫌な理由
|
46
|
+
|
47
|
+
iniファイル作成後、ツールを再起動した際、iniファイルの1行目から読み込み処理を行っていきます。そちらの処理では、1行目に" [ "が存在することが前提として起動する処理であるため、今回の修正で、iniファイルの1行目にFF FE 0D 00 0A 00、つまり" [ "が存在しないのは都合が悪いです。
|
48
|
+
|
45
49
|
■コード
|
46
50
|
|
47
51
|
|
1
コードを追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -39,3 +39,49 @@
|
|
39
39
|
■まとめ
|
40
40
|
|
41
41
|
上記のような差が出る原因がわかりません。私の想いとしては、「iniファイルがUTF16-LE(BOM付き)の場合」であっても、改行コードが入らない状態にすることです。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
■コード
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
①呼び出し側(Dlg.cpp)
|
50
|
+
|
51
|
+
ma.CreateIni(b.m_DevName, b.m_SvName, b.m_RcvFolder, b.m_CopyPath, b.m_Port);
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
②上記①に呼ばれる側(A.cpp)
|
56
|
+
|
57
|
+
int A::CreateIni(CString DevName, CString SvName, CString RcvName, CString IniPath, CString Port)
|
58
|
+
|
59
|
+
{
|
60
|
+
|
61
|
+
if(::WritePrivateProfileString((LPCTSTR)strName, SERVERNAME, (LPCTSTR)SvName, IniPath) == 0)
|
62
|
+
|
63
|
+
return -1;
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
③バイナリの書き込み
|
70
|
+
|
71
|
+
if (file.Open(strIniPath, CFile::modeWrite | CFile::modeCreate | CFile::shareExclusive)) {
|
72
|
+
|
73
|
+
BYTE bom[2] = {0xff, 0xfe};
|
74
|
+
|
75
|
+
file.Write(bom, 2);
|
76
|
+
|
77
|
+
file.Close();
|
78
|
+
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
※注
|
84
|
+
|
85
|
+
maは「Aクラスのインスタンス」です。
|
86
|
+
|
87
|
+
b.xxxは「Bクラスのメンバ変数」で、ダイアログでユーザが入力した値がCString型で格納されています。
|