bool CFileKeyedValues::LoadFromConfFile(CHTString sConfFile, CHTString& rsError) { CTextFile vFile; if (!vFile.Open(sConfFile, false, false, rsError)) { rsError = "Unable to open configuration file: "+rsError; return false; } CHTStringArray asLines; if (!vFile.SlurpFile(asLines, rsError) || !vFile.Close(rsError)) { rsError = "Unable to read configuration file: "+rsError; return false; } for (int iLine = 0; iLine < asLines.size(); iLine++) { CHTString sLine = asLines[iLine]; if (sLine == "" || sLine.StartsWith("#")) continue; int iEquals; if (!sLine.Find("=", iEquals)) { rsError = "The configuration file is in an invalid format. The correct format is 'key=setting'."; return false; } m_asKeys.Add(sLine.Left(iEquals)); m_asValues.Add(sLine.Mid(iEquals+1)); } return true; }
bool CFileKeyedValues::SaveToConfFile(CHTString sFile, CHTString& rsError) { CTextFile vFile; if (!vFile.Open(sFile, true, false, rsError)) return false; for (int iSetting = 0; iSetting < m_asKeys.size(); iSetting++) { if (!vFile.AppendLine(m_asKeys[iSetting]+"="+m_asValues[iSetting], rsError)) return false; } if (!vFile.Close(rsError)) return false; return true; }
void CompareReadLines(size_t count, const wxChar* expected[], EReadTextFile criteria) { CTextFile file; ASSERT_FALSE(file.IsOpened()); ASSERT_TRUE(file.Eof()); for (size_t j = 0; j < ArraySize(g_filesDefault); ++j) { CONTEXT(wxString(wxT("Checking file: ")) + g_filesDefault[j]); ASSERT_TRUE(file.Open(CPath(wxSTRINGIZE_T(SRCDIR)).JoinPaths(CPath(g_filesDefault[j])).GetRaw(), CTextFile::read)); wxArrayString lines = file.ReadLines(criteria); ASSERT_EQUALS(ArrToStr(count, expected), ArrToStr(lines)); ASSERT_EQUALS(count, lines.GetCount()); } ASSERT_TRUE(file.IsOpened()); ASSERT_TRUE(file.Eof()); };
void CServerList::SaveStaticServers() { CTextFile file; if (!file.Open(m_staticServersConfig, CTextFile::write)) { AddLogLineN(CFormat( _("Failed to open '%s'") ) % m_staticServersConfig ); return; } for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it) { const CServer* server = *it; if (server->IsStaticMember()) { file.WriteLine(CFormat(wxT("%s:%u,%u,%s")) % server->GetAddress() % server->GetPort() % server->GetPreferences() % server->GetListName()); } } file.Close(); }
bool CResources::Load(LPCTSTR filename, bool bAppend /* = false */) { CTextFile file; if (!bAppend) { m_Dialogs.RemoveAll(); m_Menus.RemoveAll(); m_Toolbars.RemoveAll(); m_Accels.RemoveAll(); m_Icons.RemoveAll(); m_Bitmaps.RemoveAll(); m_Cursors.RemoveAll(); } if(!file.Open(filename)) { return false; } while(!file.Eof()) { CString line; file.ReadLine(line); if (line.IsEmpty()) continue; line.TrimLeft(); if (line.GetLength() >= 2 && line[0] == _T('/') && line[1] == _T('/')) continue; if (line[0] == _T('#')) continue; CAtlArray<CString> Words; CutString(line, Words); { CString word; if (Words.GetCount() > 1) { word = Words[1]; } else { word.Empty(); } if (word == _T("DESIGNINFO")) { //skip disign info while(!file.Eof()) { file.ReadLine(line); line.Trim(); if (line == _T("BEGIN")) break; } if (file.Eof()) return false; int Level = 1; while(!file.Eof() && Level) { file.ReadLine(line); line.Trim(); if (line == _T("BEGIN")) Level++; if (line == _T("END")) Level--; } if (Level) return false; else continue; } if(word == _T("MENU")) { CResMenu newmenu; newmenu.m_ID = Words[0]; newmenu.Load(file); m_Menus.Add(newmenu); } else if( word == _T("TOOLBAR") ) { CResToolbar newtoolbar; newtoolbar.m_ID = Words[0]; newtoolbar.Load(file); m_Toolbars.Add(newtoolbar); } else if( (word == _T("DIALOG")) || word == _T("DIALOGEX") ) { CResDialog newdialog; newdialog.m_ID = Words[0]; newdialog.m_Type = word; newdialog.Load(file); m_Dialogs.Add(newdialog); } else if( word == _T("BITMAP") || word == _T("ICON") || word == _T("CURSOR") ) { ResBinary m_simple; m_simple.m_ID = Words[0]; if(word == _T("BITMAP")) m_Bitmaps.Add(m_simple); else if(word == _T("ICON")) m_Icons.Add(m_simple); else m_Cursors.Add(m_simple); } else if(word == _T("ACCELERATORS")) { CResAccelerators accels; accels.m_ID = Words[0]; accels.Load(file); m_Accels.Add(accels); } else { if(Words.GetCount() > 0 && (Words[0] == _T("STRINGTABLE"))) { LoadString(file); } } } } return true; }
virtual void run() { const wxChar* lines[] = { wxT(" # comment"), wxT("abc"), wxT("# foo bar"), wxT(" "), wxT("def ghi "), wxT(""), wxT("# xyz"), wxT(" xyz"), wxT(" "), wxT("") }; { CONTEXT(wxT("Writing lines manually")); CTextFile file; ASSERT_TRUE(file.Open(wxT("testfile.txt"), CTextFile::write)); for (size_t i = 0; i < ArraySize(lines); ++i) { CONTEXT(wxString::Format(wxT("Writing the %i'th line."), static_cast<int>(i))); ASSERT_TRUE(file.WriteLine(lines[i])); } } { CONTEXT(wxT("Reading manually written lines")); CTextFile file; ASSERT_TRUE(file.Open(wxT("testfile.txt"), CTextFile::read)); ASSERT_FALSE(file.Eof()); for (size_t i = 0; i < ArraySize(lines); ++i) { CONTEXT(wxString::Format(wxT("Reading the %i'th line."), static_cast<int>(i))); ASSERT_EQUALS(lines[i], file.GetNextLine()); } ASSERT_TRUE(file.Eof()); } { CONTEXT(wxT("Writing lines automatically")); CTextFile file; ASSERT_FALSE(file.IsOpened()); ASSERT_TRUE(file.Open(wxT("testfile.txt"), CTextFile::write)); ASSERT_TRUE(file.WriteLines(wxArrayString(ArraySize(lines), lines))); ASSERT_TRUE(file.IsOpened()); } { CONTEXT(wxT("Reading automatically written lines")); CTextFile file; ASSERT_FALSE(file.IsOpened()); ASSERT_TRUE(file.Open(wxT("testfile.txt"), CTextFile::read)); ASSERT_TRUE(file.IsOpened()); ASSERT_FALSE(file.Eof()); for (size_t i = 0; i < ArraySize(lines); ++i) { CONTEXT(wxString::Format(wxT("Reading the %i'th line."), static_cast<int>(i))); ASSERT_EQUALS(lines[i], file.GetNextLine()); } ASSERT_TRUE(file.Eof()); } }