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

Đề tài: Đọc từng dòng của file văn bản trong MFC

  1. #1
    Ngày gia nhập
    03 2011
    Bài viết
    50

    Mặc định Đọc từng dòng của file văn bản trong MFC

    Mình hiện có đoạn code sau, mục đích là chương trình sẽ đọc từng dòng của 2 file văn bản và lưu trữ chúng vào 1 mảng khai báo từ trước. Chương trình debug thì ok, nhưng chạy thử thì lại báo lỗi fatal error. Ai biết chỉ giùm mình với

    Visual C++ Code:
    1. void CDialogSplitLine::OnBnClickedOk()
    2. {
    3.     // khai báo biến.
    4.     CString str,str1,str2;
    5.     CStringArray Length;
    6.     int Color[10];
    7.     Length.SetSize(10);
    8.     int count;
    9.  
    10.     // Đọc file : IDC_EDIT1/2 là 2 editbox, người dùng nhập tên 2 file cần đọc vào đây
    11.     GetDlgItemTextW(IDC_EDIT1,str1);
    12.     GetDlgItemTextW(IDC_EDIT2,str2);
    13.     CStdioFile f1,f2;
    14.     f1.Open(str1,CFile::modeRead);
    15.     f2.Open(str2,CFile::modeRead);
    16.    
    17.     // Lưu dữ liệu vào mảng
    18.     for (count=0;count<9;count++)
    19.     {
    20.         f1.ReadString(str);
    21.         Length[count]=str; // lỗi ở đây
    22.         f2.ReadString(str);
    23.         Color[count]= _tstof(str); // chuyển dữ liệu từ string thành integer
    24.     }
    25.  
    26.     // đóng file
    27.     f1.Close();
    28.     f2.Close();
    29.  
    30.     // Thêm layer mới
    31.     AcDbLayerTable* pLayerTbl = NULL;
    32.     acdbCurDwg()->getSymbolTable(pLayerTbl,AcDb::kForWrite);
    33.     AcDbLayerTableRecord* pBTR = new AcDbLayerTableRecord();
    34.     AcCmColor color;
    35.     int index;
    36.     for (count=0;count<9;count++)
    37.     {
    38.        
    39.         color.setColorIndex(Color[count]);
    40.         pBTR->setColor(color);
    41.         pBTR->close();
    42.         pBTR->setName(Length[count]);
    43.         pLayerTbl->add(pBTR);
    44.     }
    45.     pBTR->close();
    46.     pLayerTbl->close();
    47. }

  2. #2
    Ngày gia nhập
    07 2009
    Bài viết
    48

    Bạn không nên add trực tiếp phần tử giống như mảng bình thường. Ở đây, bạn đã dùng lớp của MFC thì tại sao bạn không dùng các hàm của nó luôn. Với CStringArray có các hàm như là Add, Append để thêm một phần tử vào mảng (thậm chí nó tự tăng kích thước nếu cần nên bạn không cần thiết phải setsize cho nó cũng được). Khi lấy ra bạn cũng dùng hàm của nó (GetAt)

    P/S: Mình nghĩ một khi đã dùng lớp của MFC, bạn nên đọc MSDN để xem nó có những hàm gì, có phù hợp với mục đích của mình không đã

  3. #3
    Ngày gia nhập
    03 2011
    Bài viết
    50

    Trích dẫn Nguyên bản được gửi bởi gabk Xem bài viết
    Bạn không nên add trực tiếp phần tử giống như mảng bình thường. Ở đây, bạn đã dùng lớp của MFC thì tại sao bạn không dùng các hàm của nó luôn. Với CStringArray có các hàm như là Add, Append để thêm một phần tử vào mảng (thậm chí nó tự tăng kích thước nếu cần nên bạn không cần thiết phải setsize cho nó cũng được). Khi lấy ra bạn cũng dùng hàm của nó (GetAt)

    P/S: Mình nghĩ một khi đã dùng lớp của MFC, bạn nên đọc MSDN để xem nó có những hàm gì, có phù hợp với mục đích của mình không đã
    Nhưng dùng những hàm kia cũng không sai, mà kết quả của mình vẫn vậy. Hơn nữa mình cũng đã thử dùng cách hàm add hay append đều không khác gì hết rồi

  4. #4
    Ngày gia nhập
    07 2009
    Bài viết
    48

    Trích dẫn Nguyên bản được gửi bởi Athrun Xem bài viết
    Nhưng dùng những hàm kia cũng không sai, mà kết quả của mình vẫn vậy. Hơn nữa mình cũng đã thử dùng cách hàm add hay append đều không khác gì hết rồi
    Không hiểu bạn dùng kiểu gì mà lại bảo là sai. Mình thấy chỉ đọc file text, lại dùng CStdioFile thì công việc quá đơn giản. Mình làm cái demo, chạy không thấy sai gì, ở đây mình cũng dùng CStringArr và các hàm của nó. Bạn dùng thử xem có đúng ý định đọc file như của bạn không. Mình đọc file text lấy từ đường dẫn, lưu từng dòng vào CStringArray, sau đó lấy nội dung từ mảng này ra và hiển thị lên ô edit, các phần tử cách nhau bằng dấu cách.
    Demo mình viết trên VS2010 (mình ko cài VS6 và VS2008 - thông cảm nha)
    Attached Files Attached Files

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

  1. Lấy 1 dòng ra từ file text và xóa dòng đó đi trong file cũ!!!
    Gửi bởi tranquang_hq trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 05-12-2012, 04:00 PM
  2. Bài tập C Làm thế nào để in ra dòng xuất hiện của 1 từ trong file văn bản ???
    Gửi bởi bautroicuabo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 14-03-2012, 10:06 AM
  3. Xử lý file văn bản, làm sao đọc từng dòng?
    Gửi bởi emptyhb trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 09-03-2010, 05:18 PM
  4. Làm thế nào để xuống dòng trong file văn bản?
    Gửi bởi protoss trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 31-10-2008, 05:00 PM
  5. Lập trình C xóa các dòng giống nhau trong FILE văn bản?
    Gửi bởi lenam6000na trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 26-07-2008, 11:26 AM

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