Chương 4 Đọc và hiển thị file Text
3.4.1. Đọc và hiển thị nội dung file Bước 1 : Khai bỏo kiểu file được phộp tả
Bước 1 : Khai bỏo kiểu file được phộp tải
static char BASED_CODE szFilter[]="Kiểu File1(..)|*.Kieu1| |Kiểu File2(…)|*.Kieu2|Kiểu File3|*.Kieu3|";
biến szFilter[ ] sẽ chứa cỏc định dạng file được khai bỏo tương ứng là
*.Kieu1,*.Kieu2,*.Kieu3….
Bước 2 : dựng lớp CFileDialog để mở ra hộp thoại lựa chọn file cần tải.Sự kiện mở file này cú thể thụng qua một nỳt bấm hay một tỏc vụ trờn thanh Menu .Trước đú khai bỏo một biến CString để lưu lại đường dẫn :
CString DuongDanFile;
Khai bỏo biến thuộc lớp CFileDialog :
CFileDialog pFile(TRUE,"*.Kieu1",DuongDanFile,
Cờ 1|Cờ 2,szFilter);
Trong đú “Cờ 1,Cờ 2” là cỏc cờ( nFlags) chỉ hoạt động của biến này . VD :
CFileDialog pFile(TRUE,"*.Kieu1", DuongDanFile
,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);
một hộp thoại Open xuất hiện và “DuongDanFile” chớnh là tờn file mà ta gừ vào hoặc chọn 1 file trong hộp thoại tương ứng cú kiểu “*.nc” sau đú nếu chọn Ok trong hộp thoại thỡ cỏc thụng số về File đú sẽ được lấy :
if(pFile.DoModal( )==IDOK) {
// cỏc thao tỏc tiếp theo }
Bước 3: để hiển thị được nội dung file text ta quan niệm nú là một mảng cỏc kớ tự .Và đưa mảng kớ tự này lờn một cụng cụ hiển thị , chẳng hạn hiển thị lờn một static :
Nhưng trước tiờn cần khai bỏo một File để lưu “File” đó được mở và một mảng cỏc kớ
tự để lưu cỏc kớ tự đọc được từ “File” :
FILE * FileDuocMo; char buffer[800001]; int ch,i;
CString m_show,str;
//chỉ số của mảng này phụ thuộc vào độ dài của văn bản
if (pFile.DoModal( )==IDOK) {
DuongDanFile=pFile.GetPathName( );
//Lấy đường dẫn File để cho thao tỏc mở file sau này đồng
//Kiểm tra xem đường dẫn cú khỏc rỗng hay khụng
{
// Mở file và đọc theo dũng
if( (FileDuocMo = fopen( DuongDan, "r")) == NULL ) exit( 0 );
ch = fgetc(FileDuocMo );// Đọc cỏc kớ tự của “File” cú đường //dẫn là “DuongDanFile” và gỏn cho biến ch
//Thiết lập vũng lặp và kiểm tra điều kiện đọc hết file hay chưa
for( i=0; (i < 800001 ) && ( feof(FileDuocMo ) == 0 ); i++ ) {
buffer[i] = (char)ch; ch = fgetc(FileDuocMo); }
//Đưa dấu hiệu kết thỳc mảng kớ tự
buffer[i] = '\0';
str.Format( "%s\n", buffer );
SetDlgItemText(IDC_STATIC1,str); //Hiển thị lờn static
m_show=str; //Lưu lại nội dung file để dựng khi cần
UpdateData(FALSE); //Cập nhật dữ liệu lờn màn hỡnh
fclose(FileDuocMo ); //Đúng file lại
} }
3.4.2.Ghi nội dung lờn file
3.4.2.1.Ghi nội dung lờn file cú sẵn
Thực hiện bước 1 như mục đọc file, đến phần sử dụng lớp CFileDialog thỡ đổi giỏ trị
BOOL TRUE thành FALSE để thực hiện chức năng save file.
Dữ liệu được ghi vào cũng như khi đọc là một mảng kớ tự (hay chuỗi kớ tự ) . Chẳng hạn chuỗi được ghi vào file được định nghĩa như sau :
CString str;
Str= “ Trường Đại Học Bỏch Khoa Hà Nội” ;
Hoặc chuỗi này cú thể được lấy từ một thành phần nào đú mà ta muốn lưu giữ nội dung của nú lại.
Khai bỏo một biến kiểu FILE : FILE *FileWrite;
Đầu tiờn phải kiểm tra đường dẫn cú rỗng hay khụng sau đú mở file với đường dẫn là “DuongDanFile” :
If(DuongDanFile!= “ ”) {
FileWrite = fopen(DuongDanFile, “w”); ………….
Dựng hàm fputs để ghi chuỗi kớ tự vào file sau đú đúng file lại : fputs(str,FileWrite);
fclose(FileWrite); }