回答編集履歴

2

ご返信

2017/05/23 08:09

投稿

hsk
hsk

スコア728

test CHANGED
@@ -25,3 +25,113 @@
25
25
 
26
26
 
27
27
  などのように作られたものでしょうか?
28
+
29
+
30
+
31
+ ---
32
+
33
+ (コメントをいただいて)
34
+
35
+
36
+
37
+ 「オーバーロードされた関数のインスタンスが引数リスト...」ですが、引数の「型」が異なるためと思われます。
38
+
39
+
40
+
41
+ C言語(こと Windowsコンポーネント)の文字列の管理体系(型)には、複数種類あります。
42
+
43
+ そして異なる型にするには、変換が必要です。
44
+
45
+
46
+
47
+ [CFile.Open](https://msdn.microsoft.com/ja-jp/library/hwbccf8z.aspx) 関数の第一引数は、LPCTSTR型を要求しています。
48
+
49
+
50
+
51
+ ただLPCTSTR型は、C言語特有の処理(バッファ確保、文字列結合の作法)が必要です。
52
+
53
+ MFCには、CString 型と呼ばれる、std::string型とLPCTSTR型の両方の利点をもつ文字列クラス(型)が用意されていますので、こちらを使われると便利です。
54
+
55
+ (詳しくはお調べいただくか、別の質問をたてていただければと思います)
56
+
57
+
58
+
59
+ std::string型の変数からCString型の変数に変換して、CFile::Openを呼び出す場合は
60
+
61
+
62
+
63
+ http://faithandbrave.hateblo.jp/entry/20070708/1183907088
64
+
65
+
66
+
67
+ ```C
68
+
69
+ CString filePath = strFile.c_str();
70
+
71
+ CFile file;
72
+
73
+
74
+
75
+ file.Open(filePath, ...ほかの引数...);
76
+
77
+
78
+
79
+ ```
80
+
81
+
82
+
83
+ のようにします。
84
+
85
+
86
+
87
+
88
+
89
+ ---
90
+
91
+ 順番が逆になってしまいました。
92
+
93
+ BASIC(VisualBasic)では、ファイルの操作対象としてFreeFileで得られる整数値で識別をしていました。MFCのCFileクラス(型)では、CFile型で作成した変数そのものが、この識別番号を内包しています。
94
+
95
+
96
+
97
+ ```C
98
+
99
+ CFile file;
100
+
101
+ file.Open(_T("C:\\DIR\\TEST.TXT"), ...);
102
+
103
+ ```
104
+
105
+
106
+
107
+ としたとき、file変数自体に C:\\DIR\\TEST.TXT ファイルを操作する識別ができています。
108
+
109
+ あとは
110
+
111
+
112
+
113
+ ```C
114
+
115
+ file.Write("ABCD", 5);
116
+
117
+ file.Close();
118
+
119
+ ```
120
+
121
+
122
+
123
+ のように、変数自体のメソッドを呼び出せば、そのファイルを対象に操作がなされます。
124
+
125
+
126
+
127
+ [CFileのメンバー(一部誤訳あり)](https://msdn.microsoft.com/ja-jp/library/3d65ch27.aspx)
128
+
129
+
130
+
131
+ ---
132
+
133
+ MFCをお使いになられる理由がおありなのだと思いますが、そうでもないようでしたらVBからの移植には .NET Framework (VB.NET) をおすすめしたいです。VisualBasicを引き継いだライブラリも存在します(FreeFileもあります)し、現在の著名度と将来性ははるかに高いです。
134
+
135
+
136
+
137
+ ※別件のエラーハンドリングに関しては、別の質問をたてられることをお勧めします。

1

補足

2017/05/23 08:09

投稿

hsk
hsk

スコア728

test CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- [FreeFile](https://msdn.microsoft.com/ja-jp/library/c3zyf7d8.aspx)をはじめとするファイルIOは、VisualBasic(BASIC言語古来から)の機能であって、MFC にずばりの機能はない(はず)です。
3
+ [FreeFile](https://msdn.microsoft.com/ja-jp/library/c3zyf7d8.aspx)をはじめとする種のファイルI/O機能は、VisualBasic(BASIC言語古来から)の機能であって、残念ながら MFC にずばりの機能はない(はず)です。
4
4
 
5
5
 
6
6
 
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- の変数 file とstrFileをどのようにおつくりになっているかご提示いただければ、こちらの件ご回答できるかもしれません。
13
+ の変数 file とstrFileをどのようにおつくりになっているかご提示いただければ、こちらの件ご回答できるかもしれません。
14
14
 
15
15
 
16
16
 
@@ -24,4 +24,4 @@
24
24
 
25
25
 
26
26
 
27
- などのように作られたものでしょうか?
27
+ などのように作られたものでしょうか?