The typical things you may do with wxTextFile in order are:
\begin{itemize}\itemsep=0pt
-\item Create and open it: this is done with \helpref{Open}{wxtextfileopen}
-function which opens the file (name may be specified either as Open argument or
-in the constructor), reads its contents in memory and closes it. If all of these
-operations are successful, Open() will return TRUE and FALSE on error.
+\item Create and open it: this is done with either
+\helpref{Create}{wxtextfilecreate} or \helpref{Open}{wxtextfileopen}
+function which opens the file (name may be specified either as the argument to
+these functions or in the constructor), reads its contents in memory (in the
+case of {\tt Open()}) and closes it.
\item Work with the lines in the file: this may be done either with "direct
access" functions like \helpref{GetLineCount}{wxtextfilegetlinecount} and
\helpref{GetLine}{wxtextfilegetline} ({\it operator[]} does exactly the same
\wxheading{Data structures}
The following constants identify the line termination type:
+
\begin{verbatim}
enum wxTextFileType
{
\constfunc{}{wxTextFile}{\void}
-Default constructor, use Open(string) to initialize the object.
+Default constructor, use \helpref{Create}{wxtextfilecreate} or
+\helpref{Open}{wxtextfileopen} with a file name parameter to initialize the object.
\membersection{wxTextFile::wxTextFile}\label{wxtextfilector}
Constructor does not load the file into memory, use Open() to do it.
-\membersection{wxTextFile::Exists}\label{wxtextfileexists}
-
-\constfunc{bool}{Exists}{\void}
-
-Return TRUE if file exists - the name of the file should have been specified
-in the constructor before calling Exists().
-
-\membersection{wxTextFile::Open}\label{wxtextfileopen}
+\membersection{wxTextFile::\destruct{wxTextFile}}\label{wxtextfiledtor}
-\constfunc{bool}{Open}{\void}
+\constfunc{}{\destruct{wxTextFile}}{\void}
-Open() opens the file with the name which was given in the \helpref{constructor}{wxtextfilector}
-and also loads file in memory on success.
+Destructor does nothing.
-\membersection{wxTextFile::Open}\label{wxtextfileopenname}
+\membersection{wxTextFile::AddLine}\label{wxtextfileaddline}
-\constfunc{bool}{Open}{\param{const wxString\& }{strFile}}
+\constfunc{void}{AddLine}{\param{const wxString\& }{str}, \param{wxTextFileType }{type = typeDefault}}
-Same as \helpref{Open()}{wxtextfileopen} but allows to specify the file name
-(must be used if the default constructor was used to create the object).
+Adds a line to the end of file.
\membersection{wxTextFile::Close}\label{wxtextfileclose}
Closes the file and frees memory, {\bf losing all changes}. Use \helpref{Write()}{wxtextfilewrite}
if you want to save them.
+\membersection{wxTextFile::Create}\label{wxtextfilecreate}
+
+\constfunc{bool}{Create}{\void}
+
+\constfunc{bool}{Create}{\param{const wxString\& }{strFile}}
+
+Creates the file with the given name or the name which was given in the
+\helpref{constructor}{wxtextfilector}. The array of file lines is initially
+empty.
+
+It will fail if the file already exists, \helpref{Open}{wxtextfileopen} should
+be used in this case.
+
+\membersection{wxTextFile::Exists}\label{wxtextfileexists}
+
+\constfunc{bool}{Exists}{\void}
+
+Return TRUE if file exists - the name of the file should have been specified
+in the constructor before calling Exists().
+
\membersection{wxTextFile::IsOpened}\label{wxtextfileisopened}
\constfunc{bool}{IsOpened}{\void}
Returns TRUE if the current line is the last one.
+\membersection{wxTextFile::GetEOL}\label{wxtextfilegeteol}
+
+\constfunc{static const char*}{GetEOL}{\param{wxTextFileType }{type = typeDefault}}
+
+Get the line termination string corresponding to given constant. {\it typeDefault} is
+the value defined during the compilation and corresponds to the native format
+of the platform, i.e. it will be wxTextFileType\_Dos under Windows,
+wxTextFileType\_Unix under Unix (including Mac OS X when compiling with the
+Apple Developer Tools) and wxTextFileType\_Mac under Mac OS (including
+Mac OS X when compiling with CodeWarrior).
+
\membersection{wxTextFile::GetFirstLine}\label{wxtextfilegetfirstline}
\constfunc{wxString\&}{GetFirstLine}{\void}
write something like:
\begin{verbatim}
-for ( str = GetFirstLine(); !Eof(); str = GetNextLine() )
+wxTextFile file;
+...
+for ( str = file.GetFirstLine(); !file.Eof(); str = file.GetNextLine() )
{
// do something with the current line in str
}
+// do something with the last line in str
\end{verbatim}
\membersection{wxTextFile::GetNextLine}\label{wxtextfilegetnextline}
\func{wxString\&}{GetLastLine}{\void}
-Gets the last line of the file.
+Gets the last line of the file. Together with
+\helpref{GetPrevLine}{wxtextfilegetprevline} it allows to enumerate the lines
+in the file from the end to the beginning like this:
+
+\begin{verbatim}
+wxTextFile file;
+...
+for ( str = file.GetLastLine();
+ file.GetCurrentLine() > 0;
+ str = file.GetPrevLine() )
+{
+ // do something with the current line in str
+}
+// do something with the first line in str
+\end{verbatim}
\membersection{wxTextFile::GetLineType}\label{wxtextfilegetlinetype}
Get the name of the file.
-\membersection{wxTextFile::AddLine}\label{wxtextfileaddline}
-
-\constfunc{void}{AddLine}{\param{const wxString\& }{str}, \param{wxTextFileType }{type = typeDefault}}
-
-Adds a line to the end of file.
-
\membersection{wxTextFile::InsertLine}\label{wxtextfileinsertline}
\constfunc{void}{InsertLine}{\param{const wxString\& }{str}, \param{size\_t }{n}, \param{wxTextFileType }{type = typeDefault}}
Insert a line before the line number {\it n}.
+\membersection{wxTextFile::Open}\label{wxtextfileopen}
+
+\constfunc{bool}{Open}{\param{wxMBConv\&}{ conv = wxConvLibc}}
+
+\constfunc{bool}{Open}{\param{const wxString\& }{strFile}, \param{wxMBConv\&}{ conv = wxConvLibc}}
+
+Open() opens the file with the given name or the name which was given in the
+\helpref{constructor}{wxtextfilector} and also loads file in memory on
+success. It will fail if the file does not exist,
+\helpref{Create}{wxtextfilecreate} should be used in this case.
+
+The {\it conv} argument is only meaningful in Unicode build of wxWindows when
+it is used to convert the file to wide character representation.
+
\membersection{wxTextFile::RemoveLine}\label{wxtextfileremoveline}
\constfunc{void}{RemoveLine}{\param{size\_t }{n}}
\membersection{wxTextFile::Write}\label{wxtextfilewrite}
-\constfunc{bool}{Write}{\param{wxTextFileType }{typeNew = wxTextFileType\_None}}
+\constfunc{bool}{Write}{\param{wxTextFileType }{typeNew = wxTextFileType\_None}, \param{wxMBConv\&}{ conv = wxConvLibc}}
Change the file on disk. The {\it typeNew} parameter allows you to change the
file format (default argument means "don't change type") and may be used to
convert, for example, DOS files to Unix.
-Returns TRUE if operation succeeded, FALSE if it failed.
-
-\membersection{wxTextFile::GetEOL}\label{wxtextfilegeteol}
-
-\constfunc{static const char*}{GetEOL}{\param{wxTextFileType }{type = typeDefault}}
-
-Get the line termination string corresponding to given constant. {\it typeDefault} is
-the value defined during the compilation and corresponds to the native format of the
-platform, i.e. it will be wxTextFileType\_Dos under Windows, wxTextFileType\_Unix under
-Unix and wxTextFileType\_Mac under Mac.
-
-\membersection{wxTextFile::\destruct{wxTextFile}}\label{wxtextfiledtor}
-
-\constfunc{}{\destruct{wxTextFile}}{\void}
+The {\it conv} argument is only meaningful in Unicode build of wxWindows when
+it is used to convert all lines to multibyte representation before writing them
+them to physical file.
-Destructor does nothing.
+Returns TRUE if operation succeeded, FALSE if it failed.