sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4765回复:20

用Directory的问题

楼主#
更多 发布于:2005-05-12 08:51
在这段程序中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应该怎样使用才是正确的
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-12 10:11
你要装VS2003或新的Platform SDK.
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-12 10:38
那有没有别的办法,
或者别的创建文件夹的办法
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-12 10:57
你先把错误信息全贴出来!!!
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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.
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-12 12:05
这就对了,信息全贴出来,一目了然。
你压根儿没有声明Directory、dirFrom(dir???)就使用,当然有错误。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-12 12:53
不太明白
详细一点可以吗
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-05-12 13:08
你要找一本C语言书,翻翻第一章了!呵呵。
你要使用Directory这个变量,必须在前面先声明,例如
CDirectory Directory;
用陈佩斯的话说:“你总得先让我亮个相吧!”
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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\'的错误
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-05-12 15:13
#using是.net里C++扩展的语法,你的VC6不认识。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-05-12 15:46
那还有什么办法
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-05-12 15:57
当然有办法,你把代码给我,我还你个EXE。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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;
}
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
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函数。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-05-12 16:52
若要在VC6下运行要做那些修改
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-05-12 17:06
用SHCreateDirectoryEx代替Directory类的静态函数CreateDirectory.
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-05-12 17:09
用CreateFile代替Directory类的静态函数Exists.
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-05-13 09:55
我用SHCreateDirectoryEx代替CreateDirectory
还是不行啊
还是有错误error C2065: \'SHCreateDirectoryEx\' : undeclared identifier
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-05-13 10:08
你要装VS2003或新的Platform SDK.

装个新Platform SDK并不费事,也有需要。
只是这个函数在98下不能用,在98下用CreateDirectory代替。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-05-13 10:11
谢谢了
上一页
游客

返回顶部