//--------------------------------------------------------------------------- // 函数: Load // 功能: 加载一个Tab文件 // 参数: FileName 文件名 // 返回: TRUE 成功 // FALSE 失败 //--------------------------------------------------------------------------- BOOL KTabFile::Load(LPSTR FileName) { KPakFile File; DWORD dwSize; PVOID Buffer; // check file name if (FileName[0] == 0) return FALSE; if (!File.Open(FileName)) { g_DebugLog("Can't open tab file : %s", FileName); return FALSE; } dwSize = File.Size(); Buffer = m_Memory.Alloc(dwSize); File.Read(Buffer, dwSize); CreateTabOffset(); return TRUE; }
// 功能: 加载一个Tab文件 int KTabFile::LoadData(IFile* pFile) { assert(pFile); Clear(); int nResult = false; unsigned int dwSize = pFile->Size(); if (dwSize == 0) return true; m_pMemory = (unsigned char *)malloc(dwSize + 1); m_pMemory[dwSize] = 0; // 多申请一个字节的长度,以便于后面程序对换行符判断时不至于读取越界内存 if (m_pMemory) { m_uMemorySize = dwSize; if (pFile->Read(m_pMemory, dwSize) == dwSize) { if (CreateTabOffset()) nResult = true; } } if (!nResult) Clear(); return nResult; }