質問編集履歴

2

指摘反映

2019/09/24 08:18

投稿

退会済みユーザー
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

コードを追加しました。

2019/09/24 08:17

投稿

退会済みユーザー
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型で格納されています。