阅读:4765回复:20
用Directory的问题
在这段程序中void CFileOperate::DirectoryCreate(CString DirectoryTo)
{ CString dirFrom = DirectoryTo; //文件夹路径和文件目录名 if (!Directory.Exists(dirFrom)) { Directory.CreateDirectory(dirFrom); } else { MessageBox(NULL,\"文件夹已经存在!!\",NULL,MB_OK); } }编译出现错误undeclared identifier,可是我已经#include <shlwapi.h>了啊. Directory应该怎样使用才是正确的 |
|
沙发#
发布于:2005-05-12 10:11
你要装VS2003或新的Platform SDK.
|
|
|
板凳#
发布于:2005-05-12 10:38
那有没有别的办法,
或者别的创建文件夹的办法 |
|
地板#
发布于:2005-05-12 10:57
你先把错误信息全贴出来!!!
|
|
|
地下室#
发布于:2005-05-12 11:41
G:\\pro\\project\\usb\\fileOperate.cpp(128) : error C2065: \'Directory\' : undeclared identifier
G:\\pro\\project\\usb\\fileOperate.cpp(128) : error C2146: syntax error : missing \';\' before identifier \'dir\' G:\\pro\\project\\usb\\fileOperate.cpp(128) : error C2065: \'dir\' : undeclared identifier G:\\pro\\project\\usb\\fileOperate.cpp(129) : error C2228: left of \'.Exists\' must have class/struct/union type G:\\pro\\project\\usb\\fileOperate.cpp(131) : error C2228: left of \'.CreateDirectoryA\' must have class/struct/union type G:\\pro\\project\\usb\\fileOperate.cpp(143) : warning C4800: \'int\' : forcing value to bool \'true\' or \'false\' (performance warning) G:\\pro\\project\\usb\\fileOperate.cpp(149) : error C2059: syntax error : \';\' G:\\pro\\project\\usb\\fileOperate.cpp(153) : error C2059: syntax error : \';\' Error executing cl.exe. |
|
5楼#
发布于:2005-05-12 12:05
这就对了,信息全贴出来,一目了然。
你压根儿没有声明Directory、dirFrom(dir???)就使用,当然有错误。 |
|
|
6楼#
发布于:2005-05-12 12:53
不太明白
详细一点可以吗 |
|
7楼#
发布于:2005-05-12 13:08
你要找一本C语言书,翻翻第一章了!呵呵。
你要使用Directory这个变量,必须在前面先声明,例如 CDirectory Directory; 用陈佩斯的话说:“你总得先让我亮个相吧!” |
|
|
8楼#
发布于:2005-05-12 14:18
#using <mscorlib.dll>
using namespace System; using namespace System::IO; void CFileOperate::DirectoryCreate(CString DirectoryTo) { CString dirFrom = DirectoryTo; //文件夹路径和文件目录名 if (!Directory.Exists(dirFrom)) { Directory.CreateDirectory(dirFrom); } else { MessageBox(NULL,\"文件夹已经存在!!\",NULL,MB_OK); } } 这是照着MSDN上的原程序写的,可是为什么会出现fatal error C1021: invalid preprocessor command \'using\'的错误 |
|
9楼#
发布于:2005-05-12 15:13
#using是.net里C++扩展的语法,你的VC6不认识。
|
|
|
10楼#
发布于:2005-05-12 15:46
那还有什么办法
|
|
11楼#
发布于:2005-05-12 15:57
当然有办法,你把代码给我,我还你个EXE。
|
|
|
12楼#
发布于:2005-05-12 16:01
#define PATH_IS_DIRECTORY
#define PATH_IS_FILE typedef struct FD_SINGNAL { DWORD attri; bool flags; }FD_SINGNAL,*PFD_SINGNAL; class CFileOperate { public: CFileOperate(); void DirectoryCreate(CString DirectoryTo); FD_SINGNAL checkFd(LPCTSTR pathname); } CFileOperate::CFileOperate() { } void CFileOperate::DirectoryCreate(CString DirectoryTo) { CString dirFrom = DirectoryTo; //文件夹路径和文件目录名 Diirectory dir; if (!dir.Exists(dirFrom)) { Directory.CreateDirectory(dirFrom); } else { MessageBox(NULL,\"文件夹已经存在!!\",NULL,MB_OK); } } //判断路径是否存在并且是否是目录 FD_SINGNAL CFileOperate::checkFd(LPCTSTR pathname) { struct FD_SINGNAL Fd_signal; Fd_signal.flags=PathFileExists(pathname); if(Fd_signal.flags) { Fd_signal.attri=GetFileAttributes(pathname); if(Fd_signal.attri&FILE_ATTRIBUTE_DIRECTORY) { Fd_signal.attri=PATH_IS_DIRECTORY; } else { Fd_signal.attri=PATH_IS_FILE; } } return Fd_signal; } |
|
13楼#
发布于:2005-05-12 16:23
你真要EXE?
真要EXE就给我项目。 如果不是,那么: 1:你的程序是基于.net的,机器上要有.net运行环境才能运行你的EXE。 2:你写的是.net下的C++程序,可又用了C#的语法。 3:2000\\XP\\ME下可用SHCreateDirectoryEx代替,98下可用CreateDirectory代替.net中的CreateDirectory函数。 |
|
|
14楼#
发布于:2005-05-12 16:52
若要在VC6下运行要做那些修改
|
|
15楼#
发布于:2005-05-12 17:06
用SHCreateDirectoryEx代替Directory类的静态函数CreateDirectory.
|
|
|
16楼#
发布于:2005-05-12 17:09
用CreateFile代替Directory类的静态函数Exists.
|
|
|
17楼#
发布于:2005-05-13 09:55
我用SHCreateDirectoryEx代替CreateDirectory
还是不行啊 还是有错误error C2065: \'SHCreateDirectoryEx\' : undeclared identifier |
|
18楼#
发布于:2005-05-13 10:08
你要装VS2003或新的Platform SDK. 装个新Platform SDK并不费事,也有需要。 只是这个函数在98下不能用,在98下用CreateDirectory代替。 |
|
|
19楼#
发布于:2005-05-13 10:11
谢谢了
|
|
上一页
下一页