12.1 TẬP TIN INI:
Tập tin INI là tập tin văn bản chứa các nội dung phục vụ cho hoạt động của ứng dụng trong môi trường windows phiên bản 3.x và 9x. Các nội dung này được chia thành các thành phần (section) phân biệt theo chức năng hoặc theo nhóm ứng dụng con. Mỗi thành phần chứa các mục với tên gọi xác định và phân biệt với các mục khác trong cùng thành phần. Mỗi mục tương ứng với một giá trị duy nhất. Giá trị của mục được viết ngay sau tên mục, và được ngăn cách với tên mục bằng dấu "=".
Xét ví dụ là tập tin WIN.INI nói trên:
- windows : Tên thành phần (section). - NullPort : Tên mục (entry).
- None : Giá trị của mục NullPort.
Việc truy xuất giá trị các mục trong tập tin INI được hỗ trợ bởi lớp đối tượng quản lý ứng dụng CWinApp thông qua các thuộc tính, hành vi sau:
const char* m_pszAppName : Lưu chuỗi tên của ứng dụng. Giá trị thuộc tính này có thể được thay đổi được như sau:
free( (void*) m_pszAppName ); // Giải phóng vùng nhớ m_pszAppName =_tcsdup( _T(“Tên_mới_của_ứng_dụng”) );
Một số vấn đề trong Windows 159
const char* m_pszProfileName : Lưu đường dẫn và tên tập tin INI sử dụng bởi ứng dụng. Có thể thay đổi giá trị này để ấn định tập tin INI: free((void*)m_pszProfileName); // Hủy bỏ vùng nhớ cấp phát m_pszProfileName=_tcsdup(_T(“ĐườngDẫn-TênTậpTin_INI”)); BOOL WriteProfileString (
LPCTSTR lpszSection, // Tên thành phần LPCTSTR lpszEntry, // Tên mục
LPCTSTR lpszValue // Giá trị của mục (kiểu chuỗi) ); Lưu giá trị kiểu chuỗi của một mục trong thành phần xác định. BOOL WriteProfileInt (
LPCTSTR lpszSection, // Tên thành phần LPCTSTR lpszEntry, // Tên mục
int nValue // Giá trị của mục (số nguyên) ); Lưu giá trị kiểu số nguyên của một mục trong thành phần xác định. BOOL WriteProfileBinary (
LPCTSTR lpszSection, // Tên thành phần LPCTSTR lpszEntry, // Tên mục
LPBYTE pData, // Vùng đệm chứa giá trị mã UINT nBytes // Kích thước vùng đệm ); Lưu khối mã nhị phân của một mục trong thành phần xác định. CString GetProfileString (
LPCTSTR lpszSection, // Tên thành phần
LPCTSTR lpszEntry, // Tên mục. Nếu mục đọc không LPCTSTR lpszDefault = NULL // có thì sử dụng giá trị này. ); Trả về giá trị kiểu chuỗi của một mục trong thành phần tương ứng. UINT GetProfileInt (
LPCTSTR lpszSection, // Tên thành phần
LPCTSTR lpszEntry, // Tên mục. Nếu mục đọc không int nDefault // có thì sử dụng giá trị này. ); Trả về giá trị kiểu số nguyên của một mục trong thành tương ứng. BOOL GetProfileBinary (
LPCTSTR lpszSection, // Tên thành phần LPCTSTR lpszEntry, // Tên mục
LPBYTE *pData, // Địa chỉ con trỏ vùng đệm UINT *nBytes // Địa chỉ biến nhận kích thước. ); Đọc khối mã nhị phân của một mục vào vùng đệm.
160 Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.comHành vi trả về giá trị TRUE nếu tác vụ đọc thành công.