如何得到指定文件的大小?

catbird 2004-01-30 11:04:39
我想单击一个按钮,弹出一个对话框,然后我选择了任意一个文件,点击确定,然后所选择的文件的大小以字节数显示在我指定的编辑框中。
关键是如何得到指定文件的大小?

CString s_filename;
m_rising.ShowOpen();
s_filename=m_rising.GetFileName();
if(s_filename.GetLength()==0)
MessageBox("您没有选择文件!","通知",MB_OK);
else
{
m_filename.ReplaceSel(s_filename);
m_filesize.ReplaceSel(CString(GetFileSize(s_filename,NULL)),NULL);
}

上面的代码总是编译错误:error C2664: 'GetFileSize' : cannot convert parameter 1 from 'class CString' to 'void *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

各位大虾们,我该如何解决呢?
...全文
54 点赞 收藏 11
写回复
11 条回复
zhangcrony 2004年01月31日
請發完整的工程給我(刪掉所有Debug目錄下的文件先﹐再打包發送),我現在在公司﹐而且這几天暴忙﹐不好意思﹐已經收到你的消息了﹐有空再看看你的工程﹐請發至﹕
cronyzhang@jxfw.com
回复 点赞
纸飞机2017 2004年01月31日
CString你想怎么用就怎么用啊,你把它当函数了?
回复 点赞
jennifergiant 2004年01月31日
CString str;
str.Format("%d", dwLen);
m_filesize.ReplaceSel(&str);
回复 点赞
catbird 2004年01月31日
请问zhangcrony,我用你第一次告诉我的代码,在调试状态下,我看到程序可以正常取得我任意选择文件的大小。但是不知为什么文件大小的具体数值就是不能填入我所指定的CEdit编辑框内。代码如下:
CString s_filename;
m_rising.ShowOpen();
s_filename=m_rising.GetFileName();

if(s_filename.GetLength()==0)
MessageBox("您没有选择文件!","通知",MB_OK);
else
{
HANDLE hFile;
DWORD dwLen=0;
hFile = CreateFile(s_filename, GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, 0, NULL);
if(hFile != INVALID_HANDLE_VALUE)
{
dwLen = GetFileSize(hFile, NULL);
}
m_filename.ReplaceSel(s_filename); m_filesize.ReplaceSel(CString(dwLen));//此句好像无效
}
请指教!
回复 点赞
ross33123 2004年01月30日
CFileStatus status;
CFile::GetStatus(s_filename,status);
CString str;
str.Format("%d", status.m_size);
回复 点赞
zhangcrony 2004年01月30日
////////////////////////Revision:
FILE* fp = NULL;
fp = fopen(szFile,TEXT("r"));
int nFileSize;
if (fp == NULL)
return FALSE;


fseek(fp, 0, SEEK_SET);//set to begin
fseek(fp, 0, SEEK_END);//from the head to end
nFileSize = ftell(fp);//get the file size
回复 点赞
zhangcrony 2004年01月30日
//下面的代碼一定行﹐不行的話來找我﹕)
HANDLE hFile;
DWORD dwLen=0;
hFile = CreateFile(strFilePathName, GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, 0, NULL);
if(hFile != INVALID_HANDLE_VALUE)
{
DWORD dwLen = GetFileSize(hFile, NULL);
}
回复 点赞
ross33123 2004年01月30日
这是不行的
回复 点赞
ross33123 2004年01月30日
DWORD dw = GetFileSize(s_filename,NULL);
CString str;
str.Format("%d", dw);
回复 点赞
alfwolf 2004年01月30日
DWORD GetFileSize(
HANDLE hFile, // handle to file
LPDWORD lpFileSizeHigh // high-order word of file size
);
回复 点赞
alfwolf 2004年01月30日
I 服了 you
回复 点赞
发动态
发帖子
VC/MFC
创建于2007-09-28

7891

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告