浏览代码

+ Merged from fixbranch

michael 24 年之前
父节点
当前提交
d6d2d1f676
共有 71 个文件被更改,包括 3548 次插入1071 次删除
  1. 二进制
      docs/buttons/ch_beg_r.gif
  2. 1 0
      docs/buttons/ch_beg_r.png
  3. 二进制
      docs/buttons/ch_begin.gif
  4. 1 0
      docs/buttons/ch_begin.png
  5. 二进制
      docs/buttons/ch_del_r.gif
  6. 1 0
      docs/buttons/ch_del_r.png
  7. 二进制
      docs/buttons/ch_delet.gif
  8. 1 0
      docs/buttons/ch_delet.png
  9. 二进制
      docs/buttons/ch_end.gif
  10. 1 0
      docs/buttons/ch_end.png
  11. 二进制
      docs/buttons/ch_end_r.gif
  12. 1 0
      docs/buttons/ch_end_r.png
  13. 二进制
      docs/buttons/change_begin.gif
  14. 二进制
      docs/buttons/change_delete.gif
  15. 二进制
      docs/buttons/change_end.gif
  16. 二进制
      docs/buttons/contents.gif
  17. 1 0
      docs/buttons/contents.png
  18. 二进制
      docs/buttons/contents_motif.gif
  19. 二进制
      docs/buttons/cross_ref_motif.gif
  20. 二进制
      docs/buttons/crossref.gif
  21. 1 0
      docs/buttons/crossref.png
  22. 二进制
      docs/buttons/foot_motif.gif
  23. 二进制
      docs/buttons/footnote.gif
  24. 1 0
      docs/buttons/footnote.png
  25. 二进制
      docs/buttons/image.gif
  26. 1 0
      docs/buttons/image.png
  27. 二进制
      docs/buttons/index.gif
  28. 1 0
      docs/buttons/index.png
  29. 二进制
      docs/buttons/index_motif.gif
  30. 二进制
      docs/buttons/next.gif
  31. 1 0
      docs/buttons/next.png
  32. 二进制
      docs/buttons/next_g.gif
  33. 1 0
      docs/buttons/next_g.png
  34. 二进制
      docs/buttons/next_group_motif.gif
  35. 二进制
      docs/buttons/next_group_motif_gr.gif
  36. 二进制
      docs/buttons/next_motif.gif
  37. 二进制
      docs/buttons/next_motif_gr.gif
  38. 二进制
      docs/buttons/nx_grp.gif
  39. 1 0
      docs/buttons/nx_grp.png
  40. 二进制
      docs/buttons/nx_grp_g.gif
  41. 1 0
      docs/buttons/nx_grp_g.png
  42. 二进制
      docs/buttons/prev.gif
  43. 1 0
      docs/buttons/prev.png
  44. 二进制
      docs/buttons/prev_g.gif
  45. 1 0
      docs/buttons/prev_g.png
  46. 二进制
      docs/buttons/previous_group_motif.gif
  47. 二进制
      docs/buttons/previous_group_motif_gr.gif
  48. 二进制
      docs/buttons/previous_motif.gif
  49. 二进制
      docs/buttons/previous_motif_gr.gif
  50. 二进制
      docs/buttons/pv_grp.gif
  51. 1 0
      docs/buttons/pv_grp.png
  52. 二进制
      docs/buttons/pv_grp_g.gif
  53. 1 0
      docs/buttons/pv_grp_g.png
  54. 二进制
      docs/buttons/search.gif
  55. 二进制
      docs/buttons/up.gif
  56. 1 0
      docs/buttons/up.png
  57. 二进制
      docs/buttons/up_g.gif
  58. 1 0
      docs/buttons/up_g.png
  59. 二进制
      docs/buttons/up_motif.gif
  60. 二进制
      docs/buttons/up_motif_gr.gif
  61. 9 8
      docs/fpc-html.tex
  62. 22 9
      docs/fpc.sty
  63. 0 40
      docs/help.html
  64. 二进制
      docs/help1.gif
  65. 二进制
      docs/help2.gif
  66. 2998 608
      docs/ide.tex
  67. 4 1
      docs/onechap.tex
  68. 180 175
      docs/prog.tex
  69. 36 7
      docs/ref.tex
  70. 210 174
      docs/sysutils.tex
  71. 68 49
      docs/user.tex

二进制
docs/buttons/ch_beg_r.gif


+ 1 - 0
docs/buttons/ch_beg_r.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/ch_begin.gif


+ 1 - 0
docs/buttons/ch_begin.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/ch_del_r.gif


+ 1 - 0
docs/buttons/ch_del_r.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/ch_delet.gif


+ 1 - 0
docs/buttons/ch_delet.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/ch_end.gif


+ 1 - 0
docs/buttons/ch_end.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/ch_end_r.gif


+ 1 - 0
docs/buttons/ch_end_r.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/change_begin.gif


二进制
docs/buttons/change_delete.gif


二进制
docs/buttons/change_end.gif


二进制
docs/buttons/contents.gif


+ 1 - 0
docs/buttons/contents.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/contents_motif.gif


二进制
docs/buttons/cross_ref_motif.gif


二进制
docs/buttons/crossref.gif


+ 1 - 0
docs/buttons/crossref.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/foot_motif.gif


二进制
docs/buttons/footnote.gif


+ 1 - 0
docs/buttons/footnote.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/image.gif


+ 1 - 0
docs/buttons/image.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/index.gif


+ 1 - 0
docs/buttons/index.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/index_motif.gif


二进制
docs/buttons/next.gif


+ 1 - 0
docs/buttons/next.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/next_g.gif


+ 1 - 0
docs/buttons/next_g.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/next_group_motif.gif


二进制
docs/buttons/next_group_motif_gr.gif


二进制
docs/buttons/next_motif.gif


二进制
docs/buttons/next_motif_gr.gif


二进制
docs/buttons/nx_grp.gif


+ 1 - 0
docs/buttons/nx_grp.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/nx_grp_g.gif


+ 1 - 0
docs/buttons/nx_grp_g.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/prev.gif


+ 1 - 0
docs/buttons/prev.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/prev_g.gif


+ 1 - 0
docs/buttons/prev_g.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/previous_group_motif.gif


二进制
docs/buttons/previous_group_motif_gr.gif


二进制
docs/buttons/previous_motif.gif


二进制
docs/buttons/previous_motif_gr.gif


二进制
docs/buttons/pv_grp.gif


+ 1 - 0
docs/buttons/pv_grp.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/pv_grp_g.gif


+ 1 - 0
docs/buttons/pv_grp_g.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/search.gif


二进制
docs/buttons/up.gif


+ 1 - 0
docs/buttons/up.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/up_g.gif


+ 1 - 0
docs/buttons/up_g.png

@@ -0,0 +1 @@
+‰PNG

二进制
docs/buttons/up_motif.gif


二进制
docs/buttons/up_motif_gr.gif


+ 9 - 8
docs/fpc-html.tex

@@ -1,5 +1,6 @@
 %
 %   $Id$
+%
 %   This file is part of the FPC documentation.
 %   Copyright (C) 1997, by Michael Van Canneyt
 %
@@ -19,11 +20,8 @@
 %   Boston, MA 02111-1307, USA.
 
 \usepackage{ifthen}
-
-%
-% Html navigation search button
-%
-\htmladdtonavigation{\htmladdnormallink{\htmladdimg{../buttons/search.gif}}{javascript:opensearch()}}
+\usepackage{xspace}
+\usepackage{multicol}
 
 %
 % FPC environments
@@ -35,6 +33,11 @@
 % The same, but with label in third argument (tab:#3)
 \newenvironment{FPCltable}[3]{\begin{table}\caption{#2}\label{tab:#3}\begin{center}\begin{tabular}{#1}}{\end{tabular}\end{center}\end{table}}
 
+%
+% Picture including with breaks before and after
+%
+\newcommand{\fpcaddimg}[1]{\htmlclear\htmlclear\htmladdimg{#1}\htmlclear\htmlclear}
+
 %
 % Html Refs
 %
@@ -123,8 +126,7 @@
 %
 % Some versions
 %
-\newcommand{\fpcversion}{1.00.0}
-
+\newcommand{\fpcversion}{1.0.4}
 %
 % PDF support
 %
@@ -137,7 +139,6 @@
      \pdftrue
   \fi
 }
-
 %
 % end of fpc-html.tex
 %

+ 22 - 9
docs/fpc.sty

@@ -95,12 +95,13 @@
 %
 \newenvironment{remark}{\par\makebox[0pt][r]{\bfseries{}Remark:\hspace{.25em}}}{\par}
 % For Tables.
-\newenvironment{FPCtable}[2]{\begin{table}\caption{#2}\begin{center}\begin{tabular}{#1}}{\end{tabular}\end{center}\end{table}}
+\newenvironment{FPCtable}[2]{\begin{table}[ht]\caption{#2}\begin{center}\begin{tabular}{#1}}{\end{tabular}\end{center}\end{table}}
 % The same, but with label in third argument (tab:#3)
-\newenvironment{FPCltable}[3]{\begin{table}\caption{#2}\label{tab:#3}\begin{center}\begin{tabular}{#1}}{\end{tabular}\end{center}\end{table}}
+\newenvironment{FPCltable}[3]{\begin{table}[ht]\caption{#2}\label{tab:#3}\begin{center}\begin{tabular}{#1}}{\end{tabular}\end{center}\end{table}}
 %
 % Refs
 %
+\newcommand{\seefig}[1]{figure (\ref{fig:#1})\xspace}
 \newcommand{\seefl}[2]{\textsf{#1} (\pageref{fu:#2})}
 \newcommand{\seepl}[2]{\textsf{#1} (\pageref{pro:#2})}
 \newcommand{\seetypel}[2]{\textsf{#1} (\pageref{ty:#2})}
@@ -108,13 +109,15 @@
 \newcommand{\seevarl}[2]{\textsf{#1} (\pageref{var:#2})}
 \newcommand{\seec}[1]{chapter \ref{ch:#1}, page \pageref{ch:#1}\xspace}
 \newcommand{\sees}[1]{section \ref{se:#1}, page \pageref{se:#1}\xspace}
-\newcommand{\seeo}[1]{See \ref{option:#1}\xspace}
+\newcommand{\seeo}[1]{\var{-#1}, (see page \ref{option:#1})\xspace}
 \newcommand{\seet}[1]{table (\ref{tab:#1})\xspace}
 %
 % Function/procedure environments
 %
 \newenvironment{functionl}[2]{\subsection{#1}\index{#1}\label{fu:#2}\begin{FPCList}}{\end{FPCList}}
 \newenvironment{procedurel}[2]{\subsection{#1}\index{#1}\label{pro:#2}\begin{FPCList}}{\end{FPCList}}
+\newenvironment{method}[2]{\subsection{#1}\index{#1}\label{#2}\begin{FPCList}}{\end{FPCList}}
+\newenvironment{property}[2]{\subsection{#1}\index{#1}\label{#2}\begin{FPCList}}{\end{FPCList}}
 \newenvironment{function}[1]{\begin{functionl}{#1}{#1}}{\end{functionl}}
 \newenvironment{procedure}[1]{\begin{procedurel}{#1}{#1}}{\end{procedurel}}
 \newenvironment{typel}[2]{\subsection{#1}\index{#1}\label{ty:#2}\begin{FPCList}}{\end{FPCList}}
@@ -126,6 +129,9 @@
 \newcommand{\Declaration}{\item[Declaration]\ttfamily}
 \newcommand{\Description}{\item[Description]\rmfamily}
 \newcommand{\Errors}{\item[Errors]\rmfamily}
+\newcommand{\Visibility}{\item[Visibility]\ttfamily}
+\newcommand{\Synopsis}{\item[Synopsis]\rmfamily}
+\newcommand{\Arguments}{\item[Arguments]\rmfamily}
 \newcommand{\SeeAlso}{\item[See also]\rmfamily}
 %
 % Ref without labels
@@ -144,12 +150,14 @@
 %
 \newcommand{\var}[1]{\texttt {#1}}
 \newcommand{\file}[1]{\textsf {#1}}
+\newcommand{\key}[1]{\textsc{#1}}
+\newcommand{\menu}[1]{\textbf{"#1"}}
 %
 % Useful references.
 %
-\newcommand{\progref}{\htmladdnormallink{Programmers' guide}{../prog/prog.html}\xspace}
+\newcommand{\progref}{\htmladdnormallink{Programmers guide}{../prog/prog.html}\xspace}
 \newcommand{\refref}{\htmladdnormallink{Reference guide}{../ref/ref.html}\xspace}
-\newcommand{\userref}{\htmladdnormallink{Users' guide}{../user/user.html}\xspace}
+\newcommand{\userref}{\htmladdnormallink{Users guide}{../user/user.html}\xspace}
 \newcommand{\unitsref}{\htmladdnormallink{Unit reference}{../units/units.html}\xspace}
 \newcommand{\seecrt}{\htmladdnormallink{CRT}{../crt/crt.html}\xspace}
 \newcommand{\seelinux}{\htmladdnormallink{Linux}{../linux/linux.html}\xspace}
@@ -172,7 +180,7 @@
 \newcommand{\dos}  {\textsc{dos}\xspace}
 \newcommand{\msdos}{\textsc{ms-dos}\xspace}
 \newcommand{\ostwo}{\textsc{os/2}\xspace}
-\newcommand{\windows}{\textsc{Windows 32-bit}\xspace}
+\newcommand{\windows}{\textsc{Windows}\xspace}
 \newcommand{\windowsnt}{\textsc{Windows NT}\xspace}
 \newcommand{\fpc}{Free Pascal\xspace}
 \newcommand{\gnu}{\textsc{gnu}\xspace}
@@ -200,16 +208,21 @@
 % PDF stuff
 %
 \ifpdf
-  \usepackage[pdftex,bookmarks=true]{hyperref}
+  \usepackage[pdftex,bookmarks=true,colorlinks=true,linkcolor=blue]{hyperref}
   \usepackage{times}
   \usepackage[T1]{fontenc}
   \setcounter{secnumdepth}{1}
   \pdfcompresslevel=9
   \pdfpagewidth=210mm
   \pdfpageheight=297mm
+\else
+  \usepackage[dvips,bookmarks=true,colorlinks=true,linkcolor=blue]{hyperref}
 \fi
-\usepackage{html}
-\usepackage{htmllist}
+%
+% Fake Latex2Html support, so latex2html is not required
+%
+\RequirePackage{fakehtml}
+%
 %
 % For examples
 %

+ 0 - 40
docs/help.html

@@ -1,40 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>Free Pascal Manuals: Search Help</TITLE>
-</HEAD>
-<BODY BGCOLOR="#C0C0C0">
-<H1>Searching in the Free Pascal manual pages</H1>
-
-Searching in the manuals needs two steps :
-<OL>
-<LI>
-To search for words, type the words you want to search for in the
-top edit box. You can separate words with <TT>and</TT>, <TT>or</TT>
-and <TT>not</TT>. After you typed the words, press the <TT>Search</TT>
-button.
-
-For example, you could type the following:
-<PRE>
-reset or assign
-</PRE>
-This would then look for pages that have 'assign' or 'reset' in them.
-After pressing the <TT>SEARCH</TT> button, the output would look
-something like
-<IMG SRC="help1.gif">
-<P>
-When you press the <TT>SEARCH</TT> button, the 'hit total' will be displayed.
-This is the number of times your combination of words was found.
-<P>
-It is possible that no words are found, in that case the hit total will be zero,
-and there will be a line 'No records found' in the listbox, as shown below:
-<IMG SRC="help2.gif">
-<LI> When the search is complete, the lower listbox contains a list of section titles.
-You can select one of these titles, and press the <TT>GO</TT> button. A new browser
-window will open, showing the page that contains the help you requested.
-You can repeat this as many times as you want.
-</OL>
-<HR>
-<A HREf="search.html">Back</A> to search page.
-<HR>
-</BODY>
-</HTML>

二进制
docs/help1.gif


二进制
docs/help2.gif


文件差异内容过多而无法显示
+ 2998 - 608
docs/ide.tex


+ 4 - 1
docs/onechap.tex

@@ -22,6 +22,7 @@
 %
 % Preamble
 %
+\usepackage{tabularx}
 \ifx\pdfoutput\undefined
   \usepackage{html}
   \usepackage{htmllist}
@@ -56,6 +57,7 @@
 %\input{gpm.tex}
 %\input{graph.tex}
 %\input{heaptrc.tex}
+\input{ide.tex}
 %\input{ipc.tex}
 %\input{ide.tex}
 %\input{linux.tex}
@@ -68,5 +70,6 @@
 %\input{strings.tex}
 %\input{sysutils.tex}
 %\input{makefile.tex}
-\input{classes.tex}
+%\input{classes.tex}
+%\input{excepti.tex}
 \end{document}

文件差异内容过多而无法显示
+ 180 - 175
docs/prog.tex


+ 36 - 7
docs/ref.tex

@@ -1392,7 +1392,7 @@ begin
   WriteLn (x);
 end;
 ...
-P := @printit;
+Proc := @printit;
 Func := @Pi;
 \end{verbatim}
 From this example, the difference with Turbo Pascal is clear: In Turbo
@@ -1411,7 +1411,7 @@ begin
   WriteLn (x);
 end;
 begin
-P := @printit;
+Proc := @printit;
 end.
 \end{verbatim}
 Because the \var{TOneArgCcall} type is a procedure that uses the cdecl
@@ -1758,7 +1758,7 @@ then a run-time error will occur. (run-time error 211, to be precise)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Visibility
 \section{Visibility}
-For objects, only 2 visibility specifiers exist : \var{private} and
+For objects, 3 visibility specifiers exist : \var{private}, \var{protected} and
 \var{public}. If you don't specify a visibility specifier, \var{public}
 is assumed.
 Both methods and fields can be hidden from a programmer by putting them
@@ -1769,6 +1769,9 @@ can  only be accessed in the module (i.e. unit or program) that contains
 the object definition.
 They can be accessed from inside the object's methods or from outside them
 e.g. from other objects' methods, or global functions.
+\item [Protected\ ] Is the same as \var{Private}, except that the members of
+a \var{Protected} section are also accessible to descendent types, even if
+they are implemented in other modules.
 \item [Public\ ] sections are always accessible, from everywhere.
 Fields and metods in a \var{public} section behave as though they were part
 of an ordinary \var{record} type.
@@ -2203,7 +2206,6 @@ Operator & Precedence & Category \\ \hline
 \end{FPCltable}
 When determining the precedence, the compiler uses the following rules:
 \begin{enumerate}
-\item Operators with equal precedence are executed from left to right.
 \item In operations with unequal precedences the operands belong to the
 operater with the highest precedence. For example, in \var{5*3+7}, the
 multiplication is higher in precedence than the addition, so it is
@@ -2212,6 +2214,25 @@ executed first. The result would be 22.
 first. Thus, \var {5*(3+7)} would result in 50.
 \end{enumerate}
 
+\begin{remark}
+The order in which expressions of the same precedence are evaluated is not
+guaranteed to be left-to-right. In general, no assumptions on which expression
+is evaluated first should be made in such a case.
+The compiler will decide which expression to evaluate first based on
+optimization rules. Thus, in the following expression:
+\begin{verbatim}
+  a := g(3) + f(2);
+\end{verbatim}
+\var{f(2)} may be executed before \var{g(3)}. This behaviour is distinctly
+different from \delphi or \tp.
+
+If one expression {\em must} be executed before the other, it is necessary
+to split up the statement using temporary results:
+\begin{verbatim}
+  e1 := g(3);
+  a  := e1 + f(2);
+\end{verbatim}
+\end{remark}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Expression syntax
@@ -3583,11 +3604,20 @@ The parameter list for a comparision operator or an arithmetic operator
 must always contain 2 parameters. The result type of the comparision
 operator must be \var{Boolean}.
 
+\begin{remark}
+When compiling in \var{Delphi} mode or \var{Objfpc} mode, the result
+identifier may be dropped. The result can then be accessed through
+the standard \var{Result} symbol.
+
+If the result identifier is dropped and the compiler is not in one
+of these modes, a syntax error will occur.
+\end{remark}
+
 The statement block contains the necessary statements to determine the
 result of the operation. It can contain arbitrary large pieces of code;
 it is executed whenever the operation is encountered in some expression.
 The result of the statement block must always be defined; error conditions
-are not checked bythe compiler, and the code must take care of all possible
+are not checked by the compiler, and the code must take care of all possible
 cases, throwing a run-time error if some error condition is encountered.
 
 In the following, the three types of operator definitions will be examined.
@@ -7269,7 +7299,6 @@ function are the values stored in the tables.
 \Errors
 None.
 \SeeAlso
-\seep{SetResourceStrings},
 \seef{GetResourceStringCurrentValue},
 \seef{GetResourceStringDefaultValue},
 \seef{GetResourceStringHash},
@@ -7304,4 +7333,4 @@ table \var{TableIndex} with index \var{StringIndex}.
 % The index.
 %
 \printindex
-\end{document}
+\end{document}

文件差异内容过多而无法显示
+ 210 - 174
docs/sysutils.tex


+ 68 - 49
docs/user.tex

@@ -18,8 +18,8 @@
 %   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 %   Boston, MA 02111-1307, USA.
 %
-\documentclass{book}
-%\documentclass{report}
+%\documentclass{book}
+\documentclass{report}
 %
 % Preamble
 %
@@ -30,12 +30,12 @@
 \ifx\pdfoutput\undefined
   \usepackage{html}
   \usepackage{htmllist}
-%  \latex{\usepackage{fpc}}
-  \latex{\usepackage{fpcbook}}
+  \latex{\usepackage{fpc}}
+%  \latex{\usepackage{fpcbook}}
   \html{\input{fpc-html.tex}}
 \else
-%  \usepackage{fpc}
-  \usepackage{fpcbook}
+  \usepackage{fpc}
+%  \usepackage{fpcbook}
 \fi
 \latex{%
   \usepackage{times}
@@ -171,7 +171,8 @@ Let's get on with something useful.
 The compiler needs at least the following hardware:
 \begin{enumerate}
 \item An I386 or higher processor. A coprocessor is not required, although it
-will slow down your program's performance if you do floating point calculations.
+will slow down your program's performance if you do floating point calculations
+without a coprocessor, since an emulation will be used.
 \item 4 Mb of free memory. Under \dos, if you use DPMI memory management,
 such as under Windows, you will need at least 16 Mb.
 \item At least 500 Kb. free disk space.
@@ -225,9 +226,9 @@ the compiler.
 
 \begin{htmlonly}
 The first screen of the installation program looks like this:
-\htmladdimg{../pics/install1.gif}
+\fpcaddimg{../pics/install1.png}
 And the second screen looks like
-\htmladdimg{../pics/install2.gif}
+\fpcaddimg{../pics/install2.png}
 \end{htmlonly}
 \begin{latexonly}
 The screen of the installation program looks like figure \ref{fig:install}.
@@ -235,14 +236,14 @@ The screen of the installation program looks like figure \ref{fig:install}.
 \caption{The \dos install program screen.}
 \label{fig:install}
 \ifpdf
-\epsfig{file=pics/install1.pdf,width=\textwidth}
-%\epsfig{file=pics/install.pdf,width=\textwidth}
+\epsfig{file=pics/install1.png,width=\textwidth}
+%\epsfig{file=pics/install.png,width=\textwidth}
 \end{figure}
 \begin{figure}
 \caption{The \dos install program screen.}
 \label{fig:installb}
-\epsfig{file=pics/install2.pdf,width=\textwidth}
-%\epsfig{file=pics/install2s.pdf}
+\epsfig{file=pics/install2.png,width=\textwidth}
+%\epsfig{file=pics/install2s.png}
 \else
 \epsfig{file=pics/install1.eps,width=\textwidth}
 \epsfig{file=pics/install2.eps,width=\textwidth}
@@ -290,7 +291,7 @@ The \linux distribution of \fpc comes in three forms:
 \begin{itemize}
 \item a \file{tar.gz} version, also available as seperate files.
 \item a \file{.rpm} (Red Hat Package Manager) version, and
-\item a \file{.deb} (debian) version.
+\item a \file{.deb} (Debian) version.
 \end{itemize}
 All of these packages contain a \var{ELF} version of the compiler binaries and
 units. the older \var{aout} binaries are no longer distributed, although you
@@ -302,7 +303,7 @@ rpm -i fpc-pascal-XXX.rpm
 \end{verbatim}
 (\var{XXX} is the version number of the \file{.rpm} file)
 
-If you use debian, installation is limited to
+If you use Debian, installation is limited to
 \begin{verbatim}
 dpkg -i fpc-XXX.deb
 \end{verbatim}
@@ -419,10 +420,11 @@ ppc386 -Fuc:\pp\units\go32v2\rtl hello
 \end{verbatim}
 under \dos, and under \linux you could type
 \begin{verbatim}
-ppc386 -Fu/usr/lib/fpc/0.99.14/units/linux/rtl hello
+ppc386 -Fu/usr/lib/fpc/NNN/units/linux/rtl hello
 \end{verbatim}
+(replace \var{NNN} with the version number of \fpc that you are using).
 This is, of course, assuming that you installed under \verb|C:\PP| or
-\file{/usr/lib/fpc/0.99.14}, respectively.
+\file{/usr/lib/fpc/NNN}, respectively.
 
 If you got no error messages, the compiler has generated an executable
 called \file{hello} (no extension) under \linux, and a file \file{hello.exe}
@@ -498,8 +500,8 @@ look for compiled versions of these units in the following way:
 (not under \linux)
 \item It will look in all the directories specified in the unit search path.
 \end{enumerate}
-You can add a directory to the unit search path with the \var{-Fu} option
-(\seeo{Fu}). Every occurrence of one of this options will {\em insert}
+You can add a directory to the unit search path with the (\seeo{Fu})
+option. Every occurrence of one of this options will {\em insert}
 a directory to the unit search path. i.e. last path on the command line
 will be searched first.
 
@@ -577,14 +579,13 @@ If you include files in your source with the \var{\{\$I filename\}}
 directive, the compiler will look for it in the following places:
 
 \begin{enumerate}
-\item It will look in the path specified in the incude file name.
+\item It will look in the path specified in the include file name.
 \item It will look in the directory where the current source file is.
 \item it will look in all directories specified in the include file search
 path.
 \end{enumerate}
-You can add files to the include file search
- path with the \var{-I} (\seeo{I})
-option.
+You can add files to the include file search path with the \seeo{I} or
+\seeo{Fi} options.
 
 As an example, consider the following include statement in a file
 \file{units/foo.pp}:
@@ -616,13 +617,12 @@ files:
 \item It will look in the directory where the current source file is.
 \item it will look in all directories specified in the object file search path.
 \end{enumerate}
-You can add files to the object file search path with the \var{-Fo} (\seeo{Fo})
-option.
+You can add files to the object file search path with the \seeo{Fo} option.
 
 % Configuration file
 \subsection{Configuration file}
 \label{searchconfig}
-Unless you specify the \var{-n} (\seeo{n}) option, the compiler will look
+Unless you specify the \seeo{n} option, the compiler will look
 for a configuration file \file{ppc386.cfg} in the following places:
 
 \begin{itemize}
@@ -865,14 +865,14 @@ full in the programmers guide.
 \begin{itemize}
 \item \textbf{IO-error -2 at ...} : Under \linux you can get this message at
 compiler startup. It means typically that the compiler doesn't find the
-error definitions file. You can correct this mistake with the \var{-Fr}
-option under \linux. (\seeo{Fr})
+error definitions file. You can correct this mistake with the \seeo{Fr}
+option under \linux. 
 \item \textbf {Error : File not found : xxx} or \textbf{Error: couldn't compile
 unit xxx}: This typically happens when
 your unit path isn't set correctly. Remember that the compiler looks for
 units only in the current directory, and in the directory where the compiler
 itself is. If you want it to look somewhere else too, you must explicitly
-tell it to do so using the \var{-Fu} option (\seeo{Fu}). Or you must set op
+tell it to do so using the \seeo{Fu} option. Or you must set op
 a configuration file.
 \end{itemize}
 
@@ -1015,8 +1015,8 @@ the file named \file{xxx}.
 \item [-FExxx] tells the compiler to write the executable and units in
 directory \file{xxx} instead of th current directory.
 \olabel{FE}
-\item [-FIxxx] Adds \var{xxx} to the include file search path.
-\olabel{FI}
+\item [-Fixxx] Adds \var{xxx} to the include file search path.
+\olabel{Fi}
 \item [-Flxxx] Adds \var{xxx} to the library searching path, and is passed
 to the linker.
 \olabel{Fl}
@@ -1047,6 +1047,7 @@ the compiler on \ostwo and \linux. Only with assemblers (such as \gnu
 
 % Options controlling the kind of output.
 \subsection{Options controlling the kind of output.}
+\label{se:codegen}
 for more information on these options, see also \progref
 \begin{description}
 \item [-a] \olabel{a} Tells the compiler not to delete the assembler files
@@ -1056,7 +1057,7 @@ This also counts for the (possibly) generated batch script.
 in the assembler file as comments.
 \item[-ar] \olabel{ar} tells the compiler to list register allocation and
 release info in the assembler file. This is primarily intended for debugging
-the code generated bythe compiler.
+the code generated by the compiler.
 \item[-at] \olabel{at} tells the compiler to list information about
 temporary allocations and deallocations in the assembler file.
 \item [-Axxx] \olabel{A} specifies what kind of assembler should be generated . Here
@@ -1144,23 +1145,22 @@ the following:
 \item \textbf{OS2} : OS/2 (2.x) using the \var{EMX} extender.
 \item \textbf{WIN32} : \windows 32 bit.
 \end{itemize}
-\item [-uxxx] \olabel{u} undefine the symbol \var{xxx}. This is the opposite
+\item [-uxxx] \olabel{u} Undefine the symbol \var{xxx}. This is the opposite
 of the \var{-d} option.
-\item [-uxxx] \olabel{U} Undefine symbol \var{xxx}.
-
 \item [-Xx] \olabel{X} executable options. This tells the compiler what
 kind of executable should be generated. the parameter \var{x}
 can be one of the following:
 \begin{itemize}
 % \item \textbf{e} : (\linux only) Create an \file{ELF} executable (default).
 \item \textbf{c} : (\linux only) Link with the C library. You should only use this when
-  you start to port \fpc to another operating system.
+  you start to port \fpc to another operating system. \olabel{Xe}
 \item \textbf{D} : Link with dynamic libraries (defines the
-\var{FPC\_LINK\_DYNAMIC} symbol)
-\item \textbf{s} : Strip the symbols from the executable.
+\var{FPC\_LINK\_DYNAMIC} symbol) \olabel{XD}
+\item \textbf{s} : Strip the symbols from the executable. \olabel{Xs}
 \item \textbf{S} : Link with static units (defines the \var{FPC\_LINK\_STATIC} symbol)
+\olabel{XS}
 \item \textbf{X} : Link with smartlinked units (defines the
-\var{FPC\_LINK\_SMART} symbol)
+\var{FPC\_LINK\_SMART} symbol) \olabel{XX}
 \end{itemize}
 \end{description}
 
@@ -1170,6 +1170,7 @@ can be one of the following:
 % Options concerning the sources (language options)
 
 \subsection{Options concerning the sources (language options)}
+\label{se:sourceoptions}
 for more information on these options, see also \progref
 \begin{description}
 \item [-Rxxx] \olabel{R} Specifies what kind of assembler you use in
@@ -1188,6 +1189,7 @@ from \var{-Sd} because some \fpc constructs are still available to you.
 -=}.
 \item [-Sd] Tells the compiler to be Delphi compatible. This is more strict
 than the \var{-S2} option, since some \var{fpc} extensions are switched off.
+\olabel{Sd}
 \item [-SeN] \olabel{Se} The compiler stops after the N-th error. Normally,
 the compiler tries to continue compiling after an error, until 50 errors are
 reached, or a fatal error is reached, and then it stops. With this switch,
@@ -1281,7 +1283,7 @@ Syntax:
 \begin{verbatim}
 #IFNDEF name
 \end{verbatim}
-Lines following \var{\#IFDEF} are skipped read if the keyword \var{name}
+Lines following \var{\#IFNDEF} are skipped read if the keyword \var{name}
 following it is defined.
 
 They are read until the keywords \var{\#ELSE} or \var{\#ENDIF} are
@@ -1304,7 +1306,7 @@ Syntax:
 \var{\#ELSE} can be specified after a \var{\#IFDEF} or \var{\#IFNDEF}
 directive as an alternative.
 Lines following \var{\#ELSE} are skipped read if the preceding \var{\#IFDEF}
-\var{\#IFNDEF} was accepted.
+or \var{\#IFNDEF} was accepted.
 
 They are skipped until the keyword \var{\#ENDIF} is
 encountered, after which normal processing is resumed.
@@ -1312,9 +1314,9 @@ encountered, after which normal processing is resumed.
 Example :
 \begin{verbatim}
 #IFDEF VER0_99_5
--Fu/usr/lib/fpc/0.99.6/linuxunits
-#ELSE
 -Fu/usr/lib/fpc/0.99.5/linuxunits
+#ELSE
+-Fu/usr/lib/fpc/0.99.6/linuxunits
 #ENDIF
 \end{verbatim}
 In the above example, \file{/usr/lib/fpc/0.99.5/linuxunits} will be added to
@@ -1434,6 +1436,12 @@ On the linux command-line, you must be careful to escape the \var{\$} since
 otherwise the shell will expand the variable for you, which may have
 undesired effects.
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% IDE.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\input{ide.tex}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Porting.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1467,7 +1475,7 @@ which are not supported by \fpc. Where possible, we indicate the reason.
 and will not be changed.
 \item Parameter lists of previously defined functions and procedures must
 match exactly. The reason for this is the function overloading mechanism of
-\fpc. (however, the \var{-So} switch solves this. \seeo{So})
+\fpc. (however, the \seeo{So} option solves this.)
 \item \var {(* ... *)} as comment delimiters are not allowed in versions
 older than 0.9.1. This can easily be remedied with a grown-up editor.
 \item The \var{MEM, MEMW, MEML} and \var{PORT} variables for memory and port
@@ -1505,6 +1513,16 @@ which were possible in Turbo Pascal are no longer possible in Free Pascal.
 \item A file is opened for output only (using \var{fmOutput}) when it is
 opened with \var{Rewrite}. In order to be able to read from it, it should
 be reset with \var{Reset}.
+\item Destructors cannot have parameters. This restriction can be solved by 
+using the \var{-So} switch.
+\item There can be only one destructor. This restriction can also be 
+solved by using the \var{-So} switch.
+\item The order in which expressions are evaluated is not necessarily the
+same. In the following expression:
+\begin{verbatim}
+a := g(2) + f(3);
+\end{verbatim}
+it is not guaranteed that \var{g(2)} will be evaluated before \var{f(3)}.
 \end{enumerate}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1612,9 +1630,9 @@ attempt to mimic the Turbo Pascal compiler in the following ways:
 the differences between Turbo Pascal and \fpc is that the latter requires
 you to specify an address operator when assigning a value to a procedural
 variable. In Turbo Pascal compatibility mode, this is not required.
-\item Procedure overloading is disabled. This means that function header and
-implementation can be different (i.e. the function iplementation doesn't
-need to repeat the function header).
+\item Procedure overloading is disabled. If procedure overloading is
+disabled, the function header doesn't need to repeat the function header.
+
 \item Forward defined procedures don't need the full parameter list when
 they are defined. Due to the procedure overloading feature of \fpc, you must
 always specify the parameter list of a function when you define it, even
@@ -2253,6 +2271,7 @@ which you can debug it using \gnu \var{gdb}.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Using gdb
 \section{Using \var{gdb} to debug your program}
+\label{se:usinggdb}
 
 To use gdb to debug your program, you can start the debugger, and give it as
 an option the {\em full} name of your program:
@@ -3271,7 +3290,7 @@ partition.
 \dos only. An error occurred when reading from disk. Typically when you try
 to read past the end of a file.
 \item [101  Disk write error]
-\dos only. Reported when the disk is full, and you're trying to write to it.
+Reported when the disk is full, and you're trying to write to it.
 \item [102  File not assigned]
 This is reported by Reset, Rewrite, Append, Rename and Erase, if you call
 them with an unassigne function as a parameter.
@@ -3471,4 +3490,4 @@ document pst
 end
 \end{verbatim}
 
-\end{document}
+\end{document}

部分文件因为文件数量过多而无法显示