Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Không mở được file với lớp CFile!

  1. #1
    Ngày gia nhập
    06 2007
    Bài viết
    14

    Mặc định Không mở được file với lớp CFile!

    Không hiểu sao không mở được file, nhờ các bạn giúp

    Visual C++ Code:
    1. // m_fInfo là biến kiểu CFile
    2. CString fname;
    3. char *temp;
    4.  
    5. temp = new char[100];
    6. GetSystemDirectory (temp, 100);
    7. fname = temp;
    8. fname = fname + "\\PCManager_PowerInfo.txt";
    9.    
    10. m_fInfo.SetFilePath (fname);
    11. CreateFile (fname, GENERIC_READ|GENERIC_WRITE,
    12.           FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE,
    13.           SECURITY_ANONYMOUS, CREATE_NEW,   FILE_ATTRIBUTE_NORMAL, NULL);
    14. //đã tạo file thành công
    15.  
    16. if (!m_fInfo.Open (fname, CFile::modeCreate|CFile::modeNoInherit))
    17.          MessageBox ("Unsuccessful");
    Đã được chỉnh sửa lần cuối bởi sole : 18-05-2008 lúc 06:28 PM.
    Ta là ai không quan trọng, điều ta làm sẽ khẳng định con người ta!

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Visual C++ Code:
    1. CString fname;
    2.     char *temp;
    3.    
    4.     temp = new char[100];
    5.     GetSystemDirectory (temp, 100);
    6.     fname = temp;
    7.     fname = fname + "\\PCManager_PowerInfo.txt";
    8.    
    9.     m_fInfo.SetFilePath (fname);
    10.  
    11.     HANDLE hFile =  CreateFile (fname, GENERIC_READ|GENERIC_WRITE,
    12.         FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE,
    13.         SECURITY_ANONYMOUS, CREATE_NEW,   FILE_ATTRIBUTE_NORMAL, NULL);
    14.     //đ? t?o file thành công
    15.     CloseHandle(hFile);
    16.     if (!m_fInfo.Open (fname, CFile::modeNoInherit))
    17.          MessageBox ("Unsuccessful");
    18.     else
    19.         MessageBox("Sucessful");
    20.     m_fInfo.Close();

    Cậu thử lại đi .
    Đã được chỉnh sửa lần cuối bởi Tab : 18-05-2008 lúc 06:46 PM.

  3. #3
    Ngày gia nhập
    06 2007
    Bài viết
    14

    Oh, cám ơn mod nhiều lắm. Em hiểu lý do rồi. Cho hỏi thêm nữa nhé. Dòng tiếp theo là thế này:
    m_fInfo.Write (str, strlen(str)); // str là biến kiểu char*
    hoặc là m_fInfo.Write (str, str.GetLength()); // str là biến kiểu CString
    sau đó em cũng đã close file lại
    m_fInfo.Close ();
    Sai chỗ nào nhỉ? Khi chạy thì mới thấy lỗi Runtime error, thường thì lỗi này xuất hiện khi sử dụng biến mảng vượt ra ngoài phạm vi đã khai báo phải ko ạ?
    Đã được chỉnh sửa lần cuối bởi sole : 18-05-2008 lúc 09:11 PM.
    Ta là ai không quan trọng, điều ta làm sẽ khẳng định con người ta!

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Cậu định ghi gì xuống file ? Nếu định ghi chuỗi thì dùng CStdioFile .
    Còn ở trường hợp của cậu thì thử sửa thành xem sao :
    Visual C++ Code:
    1. m_fInfo.Write (str, sizeof(str));

  5. #5
    Ngày gia nhập
    09 2006
    Bài viết
    711

    sizeof(str) = 4 ????
    Lỗi ở chỗ # chứ không phải hàm Write. Post hay up toàn bộ code/project lên.

  6. #6
    Ngày gia nhập
    06 2007
    Bài viết
    14

    Mặc định Không mở được file với lớp CFile!

    Đây! Ở file SystemPage.cpp, dòng 62
    Lúc đầu em định ghi cả dữ liệu CTime vào file nên mới sử dụng CFile đó chứ, nhưng không được nên mới thử làm text xem sao.
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi sole : 18-05-2008 lúc 11:25 PM.
    Ta là ai không quan trọng, điều ta làm sẽ khẳng định con người ta!

  7. #7
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Chỉ là lỗi ở method Open của CFile, truyền sai mode. Cậu sữa lại:
    Visual C++ Code:
    1.     if (!m_fInfo.Open(fname, CFile::modeCreate | CFile::modeWrite))
    2.         MessageBox ("Unsuccessful");
    3.  
    4.     CString str = "Hello World";
    5.     m_fInfo.Write((LPCTSTR) str, str.GetLength());
    6.     m_fInfo.Close();
    Đã được chỉnh sửa lần cuối bởi TQN : 19-05-2008 lúc 09:57 AM.

  8. #8
    Ngày gia nhập
    06 2007
    Bài viết
    14

    Oh, thì ra là vậy. Code ẩu quá! Làm phiền mấy huynh thật. Xin cảm tạ lắm lắm!
    Ta là ai không quan trọng, điều ta làm sẽ khẳng định con người ta!

  9. #9
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Cậu lấy 1 example của MFC rồi nhét code của mình vô, lung tung lên hết. Đi từng bước, từ từ thôi.

Các đề tài tương tự

  1. MFC 6.0 , CFile có mở được file có đường dẫn Unicode không ?
    Gửi bởi mfc trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 20-02-2011, 09:39 PM
  2. Tạo đối tượng CFile từ biến HDROP
    Gửi bởi mtmaster trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 15-11-2010, 07:38 PM
  3. Đọc file dạng Binary từ đối tượng CFile
    Gửi bởi mtmaster trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 15-11-2010, 04:50 PM
  4. Lập trình C++ Đọc CFile vào Byte bị lỗi với các ký tự 0 ?
    Gửi bởi spyhunter88 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 30-07-2010, 01:58 PM
  5. CFile tạo File ghi chèn thêm vào FIle cũ
    Gửi bởi trần trân trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 17-06-2009, 02:31 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn