text files and change the line termination characters from one type (say DOS) to
another (say Unix).
-One word of warning: the class is not at all optimized for big files and so it
-will load the file entirely into memory when opened. Of course, you should not
+One word of warning: the class is not at all optimized for big files and thus
+it will load the file entirely into memory when opened. Of course, you should not
work in this way with large files (as an estimation, anything over 1 Megabyte is
surely too big for this class). On the other hand, it is not a serious
-limitation for the small files like configuration files or programs sources
+limitation for small files like configuration files or program sources
which are well handled by wxTextFile.
The typical things you may do with wxTextFile in order are:
\item Add/remove lines to the file: \helpref{AddLine}{wxtextfileaddline} and
\helpref{InsertLine}{wxtextfileinsertline} add new lines while
\helpref{RemoveLine}{wxtextfileremoveline} deletes the existing ones.
+\helpref{Clear}{wxtextfileclear} resets the file to empty.
\item Save your changes: notice that the changes you make to the file will {\bf
not} be saved automatically; calling \helpref{Close}{wxtextfileclose} or doing
nothing discards them! To save the changes you must explicitly call
<wx/textfile.h>
+\wxheading{Library}
+
+\helpref{wxBase}{librarieslist}
+
\wxheading{Data structures}
The following constants identify the line termination type:
\constfunc{bool}{Exists}{\void}
-Return TRUE if file exists - the name of the file should have been specified
+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 file is currently opened.
+Returns true if the file is currently opened.
\membersection{wxTextFile::GetLineCount}\label{wxtextfilegetlinecount}
\constfunc{bool}{Eof}{\void}
-Returns TRUE if the current line is the last one.
+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 and wxTextFileType\_Mac under Mac.
+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}
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}
\membersection{wxTextFile::Open}\label{wxtextfileopen}
-\constfunc{bool}{Open}{\void}
+\constfunc{bool}{Open}{\param{const wxMBConv\&}{ conv = wxConvAuto()}}
-\constfunc{bool}{Open}{\param{const wxString\& }{strFile}}
+\constfunc{bool}{Open}{\param{const wxString\& }{strFile}, \param{const wxMBConv\&}{ conv = wxConvAuto()}}
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 wxWidgets when
+it is used to convert the file to wide character representation.
+
\membersection{wxTextFile::RemoveLine}\label{wxtextfileremoveline}
\constfunc{void}{RemoveLine}{\param{size\_t }{n}}
Delete line number {\it n} from the file.
+\membersection{wxTextFile::Clear}\label{wxtextfileclear}
+
+\constfunc{void}{Clear}{\void}
+
+Delete all lines from the file, set current line number to 0.
+
\membersection{wxTextFile::Write}\label{wxtextfilewrite}
-\constfunc{bool}{Write}{\param{wxTextFileType }{typeNew = wxTextFileType\_None}}
+\constfunc{bool}{Write}{\param{wxTextFileType }{typeNew = wxTextFileType\_None}, \param{const wxMBConv\&}{ conv = wxConvAuto()}}
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.
+The {\it conv} argument is only meaningful in Unicode build of wxWidgets when
+it is used to convert all lines to multibyte representation before writing them
+them to physical file.
+
+Returns true if operation succeeded, false if it failed.