问问题
3936 次
1 回答
5
好的,我从评论开始,但它失去了控制。
写作
这个:
WCHAR *lpszText = new WCHAR[dwTextSize];
应该:
WCHAR *lpszText = new WCHAR[dwTextSize+1];
这个:
DeleteObject(hTextFile);
根本不应该在那里。. 摆脱它。
delete [] lpszText;
当你完成它时,我假设你在某个地方。如果没有,请这样做。
阅读
第二个参数GetFileSize()
不应与您的返回值是同一个变量。对于大文件大小,它是 64 位值的 HIGH 32 位。如果您知道您的文件大小小于 4gB,则可以将其保留为 NULL,因此请更改以下内容:
DWORD dwFileSize = GetFileSize(hTextFile, &dwFileSize);
对此:
DWORD dwFileSize = GetFileSize(hTextFile, NULL);
您必须考虑文件缓冲区的空终止符,因此:
WCHAR *lpszText = new WCHAR[dwFileSize / 2];
应该改成这样:
WCHAR *lpszText = new WCHAR[dwFileSize / 2 + 1];
lpszText[dwFileSize / 2] = 0;
其余的应该像你希望的那样工作。没有错误检查,这不好,但我见过更糟的。delete [] lpszText;
和以前一样,当你完成它时,我假设你在某个地方。如果没有,请这样做。
于 2013-02-01T17:10:14.497 回答