|
@@ -1,6 +1,4 @@
|
|
|
|
|
|
- Logo
|
|
|
-
|
|
|
Free Pascal
|
|
|
[1]Introduction
|
|
|
[2]Download
|
|
@@ -17,8 +15,6 @@
|
|
|
[12]Links/Mirrors
|
|
|
[13]Bugs
|
|
|
[14]Units
|
|
|
- [shadowrt.png]
|
|
|
- [shadowlb.png] [shadowrb.png]
|
|
|
|
|
|
faq
|
|
|
|
|
@@ -361,9 +357,9 @@ gdb(pas)(w) --directory=<src dirs> myprog.exe
|
|
|
were called before the program got to the current address).
|
|
|
You can see which source code lines these present using the
|
|
|
command
|
|
|
-info line *<address>
|
|
|
- For example:
|
|
|
-info line *0x05bd8
|
|
|
+ info line *<address>
|
|
|
+ For example:
|
|
|
+ info line *0x05bd8
|
|
|
15. Increasing the heap size
|
|
|
By default Free Pascal allocates a small part of RAM for your
|
|
|
application as heap memory. If it just allocated all it could get,
|
|
@@ -422,11 +418,11 @@ info line *0x05bd8
|
|
|
When there is abnormal termination of an application generated by
|
|
|
Free Pascal, it is very probable that a runtime error will be
|
|
|
generated. These errors have the form :
|
|
|
-Runtime error 201 at 0x00010F86
|
|
|
-0x00010F86 main, line 7 of testr.pas
|
|
|
-0x0000206D
|
|
|
+ Runtime error 201 at 0x00010F86
|
|
|
+ 0x00010F86 main, line 7 of testr.pas
|
|
|
+ 0x0000206D
|
|
|
The 201 in this case indicates the runtime error number. The
|
|
|
- definition of the different runtime error numbers is described in
|
|
|
+ definition of the different runtime error numbers are described in
|
|
|
the Free Pascal user's manual, Appendix D. The hexadecimal numbers
|
|
|
represent the call stack when the error occured.
|
|
|
20. Standard units
|
|
@@ -474,7 +470,7 @@ Runtime error 201 at 0x00010F86
|
|
|
nesting, and the amount of local variables. Limiting total
|
|
|
stack space usage at a given moment to at most 256 KBytes
|
|
|
while make porting easier.
|
|
|
- + Do not hard code path to files, try to use relative paths
|
|
|
+ + Do not hard code paths to files, try to use relative paths
|
|
|
instead
|
|
|
+ Use the following constants (defined in the system unit) to
|
|
|
get information on files, line endings, and to build paths:
|
|
@@ -515,16 +511,18 @@ Runtime error 201 at 0x00010F86
|
|
|
knowledge of the RTL tree structure for that.
|
|
|
6. How does function overloading work?
|
|
|
function overloading is implemented, like in C++:
|
|
|
-procedure a(i : integer);
|
|
|
-begin
|
|
|
-end;
|
|
|
-procedure a(s : string);
|
|
|
-begin
|
|
|
-end;
|
|
|
-begin
|
|
|
-a('asdfdasf');
|
|
|
-a(1234);
|
|
|
-end.
|
|
|
+ procedure a(i : integer);
|
|
|
+ begin
|
|
|
+ end;
|
|
|
+
|
|
|
+ procedure a(s : string);
|
|
|
+ begin
|
|
|
+ end;
|
|
|
+
|
|
|
+ begin
|
|
|
+ a('asdfdasf');
|
|
|
+ a(1234);
|
|
|
+ end.
|
|
|
You must be careful. If one of your overloaded functions is in the
|
|
|
interface part of your unit, then all overloaded functions must be
|
|
|
in the interface part. If you leave one out, the compiler will
|
|
@@ -536,7 +534,9 @@ end.
|
|
|
with the GNU C compiler (GCC). Versions which have been tested are
|
|
|
version 2.7.2 through 2.95.2 of GCC. For calling the C function
|
|
|
strcmp declare the following:
|
|
|
-function strcmp(s1 : pchar;s2 : pchar) : integer;cdecl;external;
|
|
|
+
|
|
|
+ function strcmp(s1 : pchar;s2 : pchar) : integer;cdecl;external;
|
|
|
+
|
|
|
Since 0.99.5, the older [C]; won't work!
|
|
|
8. Integrated Assembler syntax
|
|
|
The default assembler syntax (AT&T style) is different from the
|
|
@@ -574,9 +574,9 @@ function strcmp(s1 : pchar;s2 : pchar) : integer;cdecl;external;
|
|
|
unit's files. You might want to pipe this through more (Dos, OS/2,
|
|
|
Windows) or less (Linux), since it can generate more than one
|
|
|
screen information:
|
|
|
-Dos, OS/2, Windows: ppc386 programname -vt |more
|
|
|
+ Dos, OS/2, Windows: ppc386 programname -vt |more
|
|
|
|
|
|
-unix, linux: ppc386 programname -vt |less
|
|
|
+ unix, linux: ppc386 programname -vt |less
|
|
|
|
|
|
|
|
|
|
|
@@ -683,8 +683,10 @@ Runtime library related information
|
|
|
3. Running Free Pascal without a math coprocessor?
|
|
|
On the Intel version the emulator is automatically loaded by the
|
|
|
compiler if you add the following commands to your autoexec.bat:
|
|
|
-SET 387=N
|
|
|
-SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
|
|
+
|
|
|
+ SET 387=N
|
|
|
+ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
|
|
+
|
|
|
(don't forget to replace the C:\PP with the directory where you
|
|
|
installed FPC)
|
|
|
4. Applications created with Free Pascal crash on 80386 systems
|
|
@@ -693,8 +695,10 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
|
|
crash unless the emu387 unit is used, as this unit loads the
|
|
|
math co-processor emulator (called wmemu387.dxe). You can add
|
|
|
the unit as follows:
|
|
|
-program myprog;
|
|
|
-uses emu387, ...
|
|
|
+
|
|
|
+ program myprog;
|
|
|
+ uses emu387, ...
|
|
|
+
|
|
|
When the application is released, the software package should
|
|
|
also include the wmemu387.dxe redistributable file to avoid
|
|
|
problems.
|
|
@@ -770,9 +774,9 @@ uses emu387, ...
|
|
|
dummy dos window is opened.
|
|
|
Solution:
|
|
|
+ Set the application type to GUI:
|
|
|
-{$apptype GUI}
|
|
|
+ {$apptype GUI}
|
|
|
and put this line before your programs InitGraph statement:
|
|
|
-ShowWindow(GetActiveWindow,0);
|
|
|
+ ShowWindow(GetActiveWindow,0);
|
|
|
This will hide the dos window window.
|
|
|
Some of the demos (like fpctris) use these techniques
|
|
|
4. Makefile problems on Win2000 (and NT)
|
|
@@ -793,10 +797,10 @@ ShowWindow(GetActiveWindow,0);
|
|
|
Alternatively, if changing the case of the "Path" variable leads
|
|
|
to problems, you could run the following bathfile in each dosbox
|
|
|
prior to working with FPC:
|
|
|
-set a=%PATH%
|
|
|
-set Path=
|
|
|
-set PATH=%A%
|
|
|
-set a=
|
|
|
+ set a=%PATH%
|
|
|
+ set Path=
|
|
|
+ set PATH=%A%
|
|
|
+ set a=
|
|
|
A lot, if not all, makefile trouble is now probably gone.
|
|
|
Note: The win32 version of make is case sensitive with respect to
|
|
|
filenames (paths?) and environment variables
|
|
@@ -821,8 +825,7 @@ set a=
|
|
|
problems with the DOS emulation layers (emulated DPMI services).
|
|
|
These problems may not occur with all software generated by FPC.
|
|
|
Either applications should be tested on these systems before being
|
|
|
- released, or Windows versions should be generated instead. The FPC
|
|
|
- development team is currently investigating the problem.
|
|
|
+ released, or Windows versions should be generated instead.
|
|
|
|
|
|
UNIX related information
|
|
|
|
|
@@ -848,15 +851,17 @@ set a=
|
|
|
and ease of building
|
|
|
3. Why can't the linker find "vga"?
|
|
|
This error typically looks like this:
|
|
|
-Free Pascal Compiler version 1.0.x [xxxx/yy/zz] for i386
|
|
|
-Copyright (c) 1993-2000 by Florian Klaempfl
|
|
|
-Target OS: Linux for i386
|
|
|
-Compiling test.pp
|
|
|
-Assembling test
|
|
|
-Linking test
|
|
|
-/usr/bin/ld: cannot find -lvga
|
|
|
-test.pp(6,4) Warning: Error while linking Closing script ppas.sh 5 Lines
|
|
|
-compiled, 0.2 sec
|
|
|
+
|
|
|
+ Free Pascal Compiler version 1.0.x [xxxx/yy/zz] for i386
|
|
|
+ Copyright (c) 1993-2000 by Florian Klaempfl
|
|
|
+ Target OS: Linux for i386
|
|
|
+ Compiling test.pp
|
|
|
+ Assembling test
|
|
|
+ Linking test
|
|
|
+ /usr/bin/ld: cannot find -lvga
|
|
|
+ test.pp(6,4) Warning: Error while linking Closing script ppas.sh 5 Lines
|
|
|
+ compiled, 0.2 sec
|
|
|
+
|
|
|
This error is not an error in the installation of FPC or FPC
|
|
|
itself, but a missing Svgalib library in your unix install. Please
|
|
|
install the required library using your favourite package manager
|