Jelajahi Sumber

--- Merging r15905 into 'tests/utils':
G tests/utils
--- Merging r15905 into '.':
U compiler/msgtxt.inc
U compiler/msgidx.inc
U compiler/msg/errorheu.msg
U compiler/msg/errord.msg
U compiler/msg/errorda.msg
U compiler/msg/errore.msg
U compiler/msg/errorpli.msg
U compiler/msg/errorues.msg
U compiler/msg/errorhe.msg
U compiler/msg/errorid.msg
U compiler/msg/errorfi.msg
U compiler/msg/errorr.msg
U compiler/msg/errorct.msg
U compiler/msg/errores.msg
U compiler/msg/errordu.msg
U compiler/msg/errorpl.msg
G .
--- Merging r15936 into 'tests/utils':
G tests/utils
Skipped 'tests/webtbs/tw17283.pp'
--- Merging r15936 into '.':
U compiler/nmem.pas
U compiler/htypechk.pas
G .
--- Merging r16036 into '.':
U rtl/linux/i386/si_dll.inc
U rtl/linux/x86_64/dllprt0.as
--- Merging r16036 into 'tests/utils':
G tests/utils
--- Merging r16036 into '.':
D tests/webtbs/uw14958.pp
D tests/webtbs/tw14958a.pp
D tests/webtbs/tw14958b.pp
G .
--- Merging r16182 into '.':
U rtl/inc/dynlibs.pas
--- Merging r16182 into 'tests/utils':
G tests/utils
--- Merging r16182 into '.':
U packages/sqlite/src/sqlite3.inc
U packages/ibase/src/ibase60.inc
U packages/ibase/src/ibase60dyn.pp
U packages/ibase/src/ibase60.pp
U packages/mysql/src/mysql40dyn.pp
U packages/mysql/src/mysql41dyn.pp
U packages/mysql/src/mysql50dyn.pp
U packages/mysql/src/mysql.inc
U packages/zorba/examples/simple/simple.lpi
G .
--- Merging r16185 into 'tests/utils':
G tests/utils
--- Merging r16185 into '.':
C packages/Makefile
U packages/Makefile.fpc
U packages/fpmake_proc.inc
G packages/zorba/examples/simple/simple.lpi
G .
--- Merging r16198 into '.':
U packages/fcl-passrc/src/pparser.pp
Summary of conflicts:
Text conflicts: 1
Skipped paths: 1

git-svn-id: tags/release_2_4_2@16239 -

marco 15 tahun lalu
induk
melakukan
f617470037

+ 0 - 3
.gitattributes

@@ -9476,8 +9476,6 @@ tests/webtbs/tw1485.pp svneol=native#text/plain
 tests/webtbs/tw1489.pp svneol=native#text/plain
 tests/webtbs/tw14941.pp svneol=native#text/plain
 tests/webtbs/tw14941a.pp svneol=native#text/plain
-tests/webtbs/tw14958a.pp svneol=native#text/plain
-tests/webtbs/tw14958b.pp svneol=native#text/plain
 tests/webtbs/tw14992a.pp svneol=native#text/pascal
 tests/webtbs/tw14992b.pp svneol=native#text/pascal
 tests/webtbs/tw14992c.pp svneol=native#text/pascal
@@ -10381,7 +10379,6 @@ tests/webtbs/uw13345c.pp svneol=native#text/plain
 tests/webtbs/uw13345y.pp svneol=native#text/plain
 tests/webtbs/uw13583.pp svneol=native#text/plain
 tests/webtbs/uw14124.pp svneol=native#text/plain
-tests/webtbs/uw14958.pp svneol=native#text/plain
 tests/webtbs/uw15909.pp svneol=native#text/plain
 tests/webtbs/uw2004.inc svneol=native#text/plain
 tests/webtbs/uw2040.pp svneol=native#text/plain

+ 13 - 6
compiler/htypechk.pas

@@ -717,15 +717,22 @@ implementation
               end;
             vecn:
               begin
-                { arrays are currently never regable and pointers indexed like }
-                { arrays do not have be made unregable, but we do need to      }
-                { propagate the ra_addr_taken info                             }
-                update_regable:=false;
-                p:=tvecnode(p).left;
+                { if there's an implicit dereference, we can stop (just like
+                  when there is an actual derefn) }
+                if ((tvecnode(p).left.resultdef.typ=arraydef) and
+                    not is_special_array(tvecnode(p).left.resultdef)) or
+                   ((tvecnode(p).left.resultdef.typ=stringdef) and
+                    (tstringdef(tvecnode(p).left.resultdef).stringtype in [st_shortstring,st_longstring])) then
+                  p:=tvecnode(p).left
+                else
+                  break;
               end;
             typeconvn :
                begin
-                 if (ttypeconvnode(p).resultdef.typ = recorddef) then
+                 { implicit dereference -> stop }
+                 if (ttypeconvnode(p).convtype=tc_pointer_2_array) then
+                   break;
+                 if (ttypeconvnode(p).resultdef.typ=recorddef) then
                    records_only:=false;
                  p:=ttypeconvnode(p).left;
                end;

+ 1 - 1
compiler/msg/errorct.msg

@@ -2100,7 +2100,7 @@ option_code_page_not_available=11039_E_La p
 #
 option_logo=11023_[
 Free Pascal Compiler versió $FPCFULLVERSION [$FPCDATE] per $FPCCPU
-Copyright (c) 1993-2009 per Florian Klaempfl
+Copyright (c) 1993-2010 per Florian Klaempfl
 ]
 
 #

+ 372 - 62
compiler/msg/errord.msg

@@ -3,10 +3,10 @@
 #   Latest updates contributed by Karl-Michael Schindler aka mischi
 #   <karl-michael.schindler at web.de>
 #
-#   Based on errore.msg of SVN revision 13334
+#   Based on errore.msg of SVN revision 15850
 #
 #   This file is part of the Free Pascal Compiler
-#   Copyright (c) 1998-2009 by the Free Pascal Development team
+#   Copyright (c) 1998-2010 by the Free Pascal Development team
 #
 #   See the file COPYING.FPC, included in this distribution,
 #   for details about the copyright.
@@ -127,12 +127,15 @@ general_i_number_of_warnings=01021_I_$1 Warnung(en) ausgegeben
 general_i_number_of_hints=01022_I_$1 Hinweis(e) ausgegeben
 % Total number of hints issued during compilation.
 general_i_number_of_notes=01023_I_$1 Anmerkung(en) ausgegeben
-% Total number of notes issued during compilation.%
+% Total number of notes issued during compilation.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Scanner
 #
-# 02086 is the last used one
+# 02087 is the last used one
 #
 % \section{Scanner messages.}
 % This section lists the messages that the scanner emits. The scanner takes
@@ -348,7 +351,7 @@ scan_w_minstacksize_not_support=02077_W_MINSTACKSIZE wird vom Zielbetriebssystem
 % The \var{\{\$IMAGEBASE\}} directive is not supported by the target OS.
 scan_w_maxstacksize_not_support=02078_W_MAXSTACKSIZE wird vom Zielbetriebssystem nicht unterst�tzt
 % The \var{\{\$MAXSTACKSIZE\}} directive is not supported by the target OS.
-scanner_e_illegal_warn_state=02079_E_Ung�ltiger Wert f�r die $WARN Direktive
+scanner_e_illegal_warn_state=02079_E_Ung�ltiger Wert "$1" f�r die $WARN Direktive
 % Only ON and OFF can be used as state with a \var{\{\$WARN\}} compiler directive.
 scan_e_only_packset=02080_E_Ung�ltiger Wert f�r das set packing
 % Only 0, 1, 2, 4, 8, DEFAULT and NORMAL are allowed as packset parameters.
@@ -366,11 +369,16 @@ scan_e_illegal_minfpconstprec=02085_E_"$1" ist eine ung
 scan_w_multiple_main_name_overrides=02086_W_Der Name der "main" Prozedur wird mehrfach �berschrieben. Es war bisher auf "$1" gesetzt
 % The name for the main entry procedure is specified more than once. Only the last
 % name will be used.
+scanner_w_illegal_warn_identifier=02087_W_Ung�ltige Bezeichner "$1" f�r die $WARN Direktive
+% Identifier is not known by a \var{\{\$WARN\}} compiler directive.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Parser
 #
-# 03252 is the last used one
+# 03295 is the last used one
 #
 % \section{Parser messages}
 % This section lists all parser messages. The parser takes care of the
@@ -518,7 +526,7 @@ parser_e_fail_only_in_constructor=03051_E_FAIL darf nur in Konstruktoren verwend
 parser_e_no_paras_for_destructor=03052_E_Destruktoren k”nnen keine Parameter haben
 % You are declaring a destructor with a parameter list. Destructor methods
 % cannot have parameters.
-parser_e_only_class_methods_via_class_ref=03053_E_Nur Klassenmethoden k”nnen �ber den Klassennamen angesprochen werden
+parser_e_only_class_members_via_class_ref=03053_E_Nur Klassenmethoden, Klasseneigenschaften und Klassenvariablen k”nnen �ber den Klassennamen angesprochen werden
 % This error occurs in a situation like the following:
 % \begin{verbatim}
 % Type :
@@ -532,7 +540,7 @@ parser_e_only_class_methods_via_class_ref=03053_E_Nur Klassenmethoden k
 % \end{verbatim}
 % \var{Free} is not a class method and hence cannot be called with a class
 % reference.
-parser_e_only_class_methods=03054_E_Nur Klassenmethoden k”nnen in einer Klassenmethode angesprochen werden
+parser_e_only_class_members=03054_E_Nur Klassenmethoden, Klasseneigenschaften und Klassenvariablen k”nnen in einer Klassenmethode angesprochen werden
 % This is related to the previous error. You cannot call a method of an object
 % from inside a class method. The following code would produce this error:
 % \begin{verbatim}
@@ -635,7 +643,7 @@ parser_e_operator_not_overloaded=03082_E_Operator besitzt kein Overload
 % You're trying to use an overloaded operator when it isn't overloaded for
 % this type.
 parser_e_no_such_assignment=03083_E_Es ist nicht m”glich, die Zuweisung f�r gleiche Typen zu �berladen
-% You can not overload assignment for types
+% You cannot overload assignment for types
 % that the compiler considers as equal.
 parser_e_overload_impossible=03084_E_Unm”gliche Operator-.berladung
 % The combination of operator, arguments and return type are
@@ -844,7 +852,7 @@ parser_e_cant_use_inittable_here=03151_E_Datentypen, die ein Initialiserung oder
 % code which is implicitly generated by the compiler. Such data types
 % can't be used in the variant part of a record.
 parser_e_resourcestring_only_sg=03152_E_Resourcestrings d�rfen nur statisch oder global sein
-% Resourcestring can not be declared local, only global or using the static
+% Resourcestring cannot be declared local, only global or using the static
 % directive.
 parser_e_exit_with_argument_not__possible=03153_E_EXIT mit Argument darf hier nicht verwendet werden
 % An exit statement with an argument for the return value can't be used here. This
@@ -916,13 +924,13 @@ parser_e_no_con_des_in_interfaces=03171_E_Kon- und Destruktoren sind in Interfac
 % Constructor and destructor declarations aren't allowed in interfaces.
 % In the most cases method \var{QueryInterface} of \var{IUnknown} can
 % be used to create a new interface.
-parser_e_no_access_specifier_in_interfaces=03172_E_Zugriffsbezeichner k”nnen in Interfaces nicht benutzt werden
+parser_e_no_access_specifier_in_interfaces=03172_E_Zugriffsbezeichner k”nnen in INTERFACEs und OBJCPROTOCOLs nicht benutzt werden
 % The access specifiers \var{public}, \var{private}, \var{protected} and
-% \var{published} can't be used in interfaces because all methods
-% of an interface must be public.
-parser_e_no_vars_in_interfaces=03173_E_Ein Interface darf keine Felder enthalten
-% Declarations of fields aren't allowed in interfaces. An interface
-% can contain only methods and properties with method read/write specifiers.
+% \var{published} can't be used in interfaces, Objective-C protocols and categories because all methods
+% of an interface/protocol/category must be public.
+parser_e_no_vars_in_interfaces=03173_E_Ein Interface, ein Objective-C Protokoll oder eine Kategorie darf keine Felder enthalten
+% Declarations of fields are not allowed in interfaces and Objective-C protocols and categories.
+% An interface/protocol/category can contain only methods and properties with method read/write specifiers.
 parser_e_no_local_proc_external=03174_E_Eine lokale Prozedur kann nicht als EXTERNAL deklariert werden
 % Declaring local procedures as external is not possible. Local procedures
 % get hidden parameters that will make the chance of errors very high.
@@ -953,10 +961,10 @@ parser_w_proc_overriding_calling=03182_W_
 % There are two directives in the procedure declaration that specify a calling
 % convention. Only the last directive will be used.
 parser_e_no_procvarobj_const=03183_E_Die Konstante des Typs "procedure of object" kann nur mit NIL initialisiert werden
-% You can't assign the address of a method to a typed constant which has a
+% You cannot assign the address of a method to a typed constant which has a
 % 'procedure of object' type, because such a constant requires two addresses:
 % that of the method (which is known at compile time) and that of the object or
-% class instance it operates on (which can not be known at compile time).
+% class instance it operates on (which cannot be known at compile time).
 parser_e_default_value_only_one_para=03184_E_Der Default Value kann nur einem Parameter zugewiesen werden
 % It is not possible to specify a default value for several parameters at once.
 % The following is invalid:
@@ -975,7 +983,7 @@ parser_h_c_arrays_are_references=03187_H_C Arrays werden "by reference" 
 % Any array passed to a C function is passed
 % by a pointer (i.e. by reference).
 parser_e_C_array_of_const_must_be_last=03188_E_C array of const muss letztes Argument sein
-% You can not add any other argument after an \var{array of const} for
+% You cannot add any other argument after an \var{array of const} for
 % \var{cdecl} functions, as the size pushed on stack for this argument is
 % not known.
 parser_h_type_redef=03189_H_Erneute Definition des Typs "$1"
@@ -987,7 +995,7 @@ parser_w_cdecl_has_no_high=03190_W_cdecl'ared Functionen haben keinen high Param
 parser_w_cdecl_no_openstring=03191_W_cdecl'ared Functionen unterst�tzen keine open strings
 % Openstring is not supported for functions that have the \var{cdecl} modifier.
 parser_e_initialized_not_for_threadvar=03192_E_Als threadvar deklarierte Variable kann nicht initialisiert werden
-% Variables declared as threadvar can not be initialized with a default value.
+% Variables declared as threadvar cannot be initialized with a default value.
 % The variables will always be filled with zero at the start of a new thread.
 parser_e_msg_only_for_classes=03193_E_Message directive ist nur in Klassen erlaubt
 % The message directive is only supported for Class types.
@@ -997,7 +1005,7 @@ parser_e_illegal_calling_convention=03195_W_Calling convention directive ignorie
 % Some calling conventions are supported only by certain CPUs. I.e. most non-i386 ports support
 % only the standard ABI calling convention of the CPU.
 parser_e_no_object_reintroduce=03196_E_REINTRODUCE kann in Objekten nicht benutzt werden
-% \var{reintroduce} is not supported for objects.
+% \var{reintroduce} is not supported for objects, Objective-C classes and Objective-C protocols.
 parser_e_paraloc_only_one_para=03197_E_Jedes Argument muss seine eigene "location" haben
 % If locations for arguments are specified explicitly as it is required by
 % some syscall conventions, each argument must have its own location. Things
@@ -1109,9 +1117,9 @@ parser_e_packed_element_no_loop=03223_E_Bit packed Array-Elemente und Record-Fel
 % (or as \var{packed} in any mode with \var{\{\$bitpacking on\}}), it will
 % be packed at the bit level. For performance reasons, they cannot be
 % used as loop variables.
-parser_e_type_and_var_only_in_generics=03224_E_VAR und TYPE sind nur innerhalb "generics" erlaubt
-% The usage of VAR and TYPE to declare new types inside an object is allowed only inside
-% generics.
+parser_e_type_var_const_only_in_generics_and_classes=03224_E_VAR, TYPE und CONST sind nur innerhalb "generics" und Klassen erlaubt
+% The usage of VAR, TYPE and CONST to declare new types inside an object is allowed only inside
+% generics and classes.
 parser_e_cant_create_generics_of_this_type=03225_E_Dieser Typ kann nicht "generic" sein
 % Only Classes, Objects, Interfaces and Records are allowed to be used as generic.
 parser_w_no_lineinfo_use_switch=03226_W_Die LINEINFO Unit nicht manuell laden. Verwende statt dessen den Compilerschalter -gl
@@ -1134,9 +1142,9 @@ parser_e_label_outside_proc=03231_E_Die Address von Labels, die ausserhalb des a
 % It isn't allowed to take the address of labels outside the
 % current procedure.
 parser_e_initialized_not_for_external=03233_E_Extern deklarierte Variablen k”nnen nicht intialisiert werden 
-% Variables declared as external can not be initialized with a default value.
+% Variables declared as external cannot be initialized with a default value.
 parser_e_illegal_function_result=03234_E_Ung�ltiger Funktionsergebnistyp
-% Some types like file types can not be used as function result.
+% Some types like file types cannot be used as function result.
 parser_e_no_common_type=03235_E_"$1" und "$2" haben keinen gemeinsamen Typ
 % To perform an operation on integers, the compiler converts both operands
 % to their common type, which appears to be an invalid type. To determine the
@@ -1176,7 +1184,7 @@ parser_e_weak_external_not_supported=03248_E_Schwache externe Symbole werden f
 % on the current cpu/OS target.
 parser_e_forward_mismatch=03249_E_Forward Typdefinition passt nicht
 % Classes and interfaces being defined forward must have the same type
-% when being implemented. A forward interface can not be changed into a class.
+% when being implemented. A forward interface cannot be changed into a class.
 parser_n_ignore_lower_visibility=03250_N_Die virtuelle Methode "$1" hat eine niedrigere Sichtbarkeit ($2) als die Elternklasse $3 ($4)
 % The virtual method overrides an method that is declared with a higher visibility. This might give
 % unexpected results. In case the new visibility is private than it might be that a call to inherited in a
@@ -1194,11 +1202,154 @@ parser_e_no_local_para_def=03252_E_Parameter k
 % refer to the same type definition in the procedure headers of the interface and implementation of a unit
 % (both procedure headers would define a separate type). Keep in mind that expressions such as
 % ``file of byte'' or ``string[50]'' also define a new type.
+parser_e_abstract_and_sealed_conflict=03253_E_Konflikt zwischen ABSTRACT und SEALED 
+% ABSTRACT and SEALED cannot be used together in one declaration
+parser_e_sealed_descendant=03254_E_Kann keinen Nachfahren der SEALED Klasse "$1" erzeugen
+% Sealed means that class cannot be derived by another class.
+parser_e_sealed_class_cannot_have_abstract_methods=03255_E_Eine SEALED Klasse kann keine ABSTRACT Methode haben
+% Sealed means that class cannot be derived. Therefore no one class is able to override an abstract method in a sealed class.
+parser_e_only_virtual_methods_final=03256_E_Nur virtuelle Methoden k”nnen final sein.
+% You are declaring a method as final, when it is not declared to be
+% virtual.
+parser_e_final_can_no_be_overridden=03257_E_Die finale Methode kann nicht �berschrieben werden: "$1"
+% You are trying to \var{override} a virtual method of a parent class that does
+% not exist.
+parser_e_multiple_messages=03258_E_Pro Methode kann nur eine Nachricht verwendet werden
+% It is not possible to associate multiple messages with a single method.
+parser_e_invalid_enumerator_identifier=03259_E_Ung�ltiger Aufz„hlungsbezeichner: "$1"
+% Only "MoveNext" and "Current" enumerator identifiers are supported.
+parser_e_enumerator_identifier_required=03260_E_Aufz„hlungsbezeichner notwendig
+% "MoveNext" or "Current" identifier must follow the \var{enumerator} modifier.
+parser_e_enumerator_movenext_is_not_valid=03261_E_Die Aufz„hlungs-pattern-Methode "MoveNext" ist ung�ltig. Die Methode muss eine Funktion mit R�ckgabetyp Boolean und ohne notwendige Argumente sein
+% "MoveNext" enumerator pattern method must be a function with Boolean return type and no required arguments
+parser_e_enumerator_current_is_not_valid=03262_E_Die Aufz„hlungs-pattern-Eigenschaft "Current" ist ung�ltig. Die Eigenschaft ben”tigt einen "Getter"
+% "Current" enumerator pattern property must have a getter
+parser_e_only_one_enumerator_movenext=03263_E_Pro Klasse/Objekt ist nur eine Aufz„hlungsmethode "MoveNext" erlaubt
+% Class or Object can have only one enumerator MoveNext declaration.
+parser_e_only_one_enumerator_current=03264_E_Pro Klasse/Objekt ist nur eine Aufz„hlungseigenschaft "Current" erlaubt
+% Class or Object can have only one enumerator Current declaration.
+parser_e_for_in_loop_cannot_be_used_for_the_type=03265_E_For in Schleife kann nicht f�r den Typ "$1" verwendet werden
+% For in loop can be used not for all types. For example it cannot be used for the enumerations with jumps.
+parser_e_objc_requires_msgstr=03266_E_Objective-C Nachrichten erfordern, dass ihr Objective-C selector-Name mit der Direktive "message" angegeben wird
+% Objective-C messages require their Objective-C name (selector name) to be specified using the \var{message `someName:'} procedure directive.
+% While bindings to other languages automatically generate such names based on the identifier you use (by replacing
+% all underscores with colons), this is unsafe since nothing prevents an Objective-C method name to contain actual
+% colons.
+parser_e_objc_no_constructor_destructor=03267_E_Objective-C hat keine formalen Konstruktoren oder Destruktoren. Verwende die Nachrichten alloc, initXXX und dealloc
+% The Objective-C language does not have any constructors or destructors. While there are some messages with a similar
+% purpose (such as \var{init} and \var{dealloc}), these cannot be identified using automatic parsers and do not
+% guarantee anything like Pascal constructors/destructors (e.g., you have to take care of only calling ``designated''
+% inherited ``constructors''). For these reasons, we have opted to follow the standard Objective-C patterns for
+% instance creation/destruction.
+parser_e_message_string_too_long=03268_E_Der Name der Nachricht ist zu lang (max. 255 Zeichen)
+% Due to compiler implementation reasons, message names are currently limited to 255 characters.
+parser_e_objc_message_name_too_long=03269_E_Der Symbolname der Objective-C-Nachricht "$1" ist zu lang
+% Due to compiler implementation reasons, mangled message names (i.e., the symbol names used in the assembler
+% code) are currently limited to 255 characters.
+parser_h_no_objc_parent=03270_H_Definieren einer neuen Objective-C root-Klasse. Um sie von einer anderen root-Klasse abzuleiten (z.B. NSObject), gib diese als Elternklasse an
+% If no parent class is specified for an Object Pascal class, then it automatically derives from TObject.
+% Objective-C classes however do not automatically derive from NSObject, because one can have multiple
+% root classes in Objective-C. For example, in the Cocoa framework both NSObject and NSProxy are root classes.
+% Therefore, you have to explicitly define a parent class (such as NSObject) if you want to derive your
+% Objective-C class from it.
+parser_e_no_objc_published=03271_E_Objective-C Klassen k”nnen keinen Abschnitt published haben
+% In Object Pascal, ``published'' determines whether or not RTTI is generated. Since the Objective-C runtime always needs
+% RTTI for everything, this specified does not make sense for Objective-C classes.
+parser_f_need_objc=03272_F_Dieses Modul erfordert, dass der Objective-C Mode-Schalter �bersetzt wird
+% This error indicates the use of Objective-C language features without an Objective-C mode switch
+% active. Enable one via the -M command line switch, or the {\$modeswitch x} directive.
+parser_e_must_use_override_objc=03273_E_Vererbte Methoden k”nnen nur in Objective-C �berschrieben werden, f�ge "override" hinzu.
+parser_h_should_use_override_objc=03274_H_Vererbte Methoden k”nnen nur in Objective-C �berschrieben werden, f�ge "override" hinzu
+% It is not possible to \var{reintroduce} methods in Objective-C like in Object Pascal. Methods with the same
+% name always map to the same virtual method entry. In order to make this clear in the source code,
+% the compiler always requires the \var{override} directive to be specified when implementing overriding
+% Objective-C methods in Pascal. If the implementation is external, this rule is relaxed because Objective-C
+% does not have any \var{override}-style keyword (since it's the default and only behaviour in that language),
+% which makes it hard for automated header conversion tools to include it everywhere.
+parser_e_objc_message_name_changed=03275_E_Der Nachrichtenname "$1" in der vererbten Klasse unterscheidet sich vom Nachrichtennamen "$2" in der aktuellen Klasse
+% An overriding Objective-C method cannot have a different message name than an inherited method. The reason
+% is that these message names uniquely define the message to the Objective-C runtime, which means that
+% giving them a different message name breaks the ``override'' semantics.
+parser_e_no_objc_unique=03276_E_Noch k”nnen eindeutige Kopien von Objective-C Typen nicht erstellt werden
+% Duplicating an Objective-C type using \var{type x = type y;} is not yet supported. You may be able to
+% obtain the desired effect using \var{type x = objcclass(y) end;} instead.
+parser_e_no_category_as_types=03277_E_Objective-C Kategorien k”nnen nicht als Typen benutzt werden
+% It is not possible to declare a variable as an instance of an Objective-C category. A
+% category adds methods to the scope of an existing class, but does not define a type by itself.
+parser_e_no_category_override=03278_E_Kategorien �berschreiben Methoden nicht, sondern ersetzen sie. "reintroduce" benutzen
+parser_e_must_use_reintroduce_objc=03279_E_Ersetzte Methoden k”nnen in Objective-C nur wieder eingef�hrt werden, f�ge "reintroduce" hinzu
+parser_h_should_use_reintroduce_objc=03280_H_Ersetzte Methoden k”nnen in Objective-C nur wieder eingef�hrt werden, f�ge "reintroduce" hinzu
+% A category replaces an existing method in an Objective-C class, rather than that it overrides it.
+% Calling an inherited method from an category method will call that method in
+% the extended class' parent, not in the extended class itself. The
+% replaced method in the original class is basically lost, and can no longer be
+% called or referred to. This behaviour corresponds somewhat more closely to
+% \var{reintroduce} than to \var{override} (although in case of \var{reintroduce}
+% in Object Pascal, hidden methods are still reachable via inherited).
+parser_e_implements_getter_not_default_cc=03281_E_Getter f�r das Interface implements m�ssen die voreingestellte calling convention des Ziels benutzen
+% Interface getters are called via a helper in the run time library, and hence
+% have to use the default calling convention for the target (\var{register} on
+% i386 and x86\_64, \var{stdcall} on other architectures).
+parser_e_no_refcounted_typed_file=03282_E_Typisierte Dateien k”nnen keine reference-counted Typen enthalten
+% The data in a typed file cannot be of a reference counted type (such as
+% \var{ansistring} or a record containing a field that is reference counted).
+parser_e_operator_not_overloaded_2=03283_E_šberladenener Operator nicht vorhanden: $2 "$1"
+% You are trying to use an overloaded operator when it is not overloaded for
+% this type.
+parser_e_operator_not_overloaded_3=03284_E_šberladenener Operator nicht vorhanden: "$1" $2 "$3"
+% You are trying to use an overloaded operator when it is not overloaded for
+% this type.
+parser_e_more_array_elements_expected=03285_E_Erwarte ein weiteres Element f�r Array $1 
+% When declaring a typed constant array, you provided to few elements to initialize the array
+parser_e_string_const_too_long=03286_E_Stringkonstante zu lang, so lange ansistrings ausgeschaltet sind
+% Only when a piece of code is compiled with ansistrings enabled (\var{\{\$H+\}}), string constants
+% longer than 255 characters are allowed.
+parser_e_invalid_univ_para=03287_E_Typ kann nicht als "univ" Parameter verwendet werden, weil seine Gr”áe zur Zeit der šbersetzung unbekannt ist: "$1"
+% \var{univ} parameters are compatible with all values of the same size, but this
+% cannot be checked in case a parameter's size is unknown at compile time.
+parser_e_only_one_class_constructor_allowed=03288_E_In der Klasse "$1" darf nur ein Klassenkonstruktor deklariert werden
+% You are trying to declare more than one class constructor but only one class constructor can be declared.
+parser_e_only_one_class_destructor_allowed=03289_E_In der Klasse "$1" darf nur ein Klassendestruktor deklariert werden
+% You are trying to declare more than one class destructor but only one class destructor can be declared.
+parser_e_no_paras_for_class_constructor=03290_E_Ein Klassenkonstruktur darf keine Parameter haben
+% You are declaring a class constructor with a parameter list. Class constructor methods
+% cannot have parameters.
+parser_e_no_paras_for_class_destructor=03291_E_Ein Klassendestruktur darf keine Parameter haben
+% You are declaring a class destructor with a parameter list. Class destructor methods
+% cannot have parameters.
+parser_f_modeswitch_objc_required=03292_F_Dieses Konstrukt erfordert, dass der Modenschalter \{\$modeswitch objectivec1\} aktiv ist
+% Objective-Pascal constructs are not supported when \{\$modeswitch ObjectiveC1\}
+% is not active.
+parser_e_widestring_to_ansi_compile_time=03293_E_Eine Unicodechar/string Konstante zur Zeit der šbersetzung nicht in eine ansi/shortstring Konstante konvertiert werden
+% It is not possible to use unicodechar and unicodestring constants in
+% constant expressions that have to be converted into an ansistring or shortstring
+% at compile time, for example inside typed constants. The reason is that the
+% compiler cannot know what the actual ansi encoding will be at run time.
+parser_e_objc_enumerator_2_0=03294_E_Objective-Pascal For-in Schleifen erfordern, dass der Modenschalter \{\$modeswitch ObjectiveC1\} aktiv ist
+% Objective-C ``fast enumeration'' support was added in Objective-C 2.0, and
+% hence the appropriate modeswitch has to be activated to expose this feature.
+% Note that Objective-C 2.0 programs require Mac OS X 10.5 or later.
+parser_e_objc_missing_enumeration_defs=03295_E_Der Kompiler findet die Typen NSFastEnumerationProtocol oder NSFastEnumerationState nicht in der Unit CocoaAll
+% Objective-C for-in loops (fast enumeration) require that the compiler can
+% find a unit called CocoaAll that contains definitions for the
+% NSFastEnumerationProtocol and NSFastEnumerationState types. If you get this
+% error, most likely the compiler is finding and loading an alternate CocoaAll
+% unit.
+parser_e_no_procvarnested_const=03296_E_Typisierte Konstanten des Typs 'procedure is nested' k”nnen nur mit NIL und globalen Prozeduren/Funktionen initialisiert werden
+% A nested procedural variable consists of two components: the address of the
+% procedure/function to call (which is always known at compile time), and also
+% a parent frame pointer (which is never known at compile time) in case the
+% procedural variable contains a reference to a nested procedure/function.
+% Therefore such typed constants can only be initialized with global
+% functions/procedures since these do not require a parent frame pointer.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Type Checking
 #
-# 04087 is the last used one
+# 04095 is the last used one
 #
 % \section{Type checking errors}
 % This section lists all errors that can occur when type checking is
@@ -1273,7 +1424,7 @@ type_w_convert_real_2_comp=04014_W_Automatische Typumwandlung von Fliesskommatyp
 type_h_use_div_for_int=04015_H_Verwenden sie DIV um ein Integer-Ergebnis zu erhalten
 % When hints are on, then an integer division with the '/' operator will
 % produce this message, because the result will then be of type real.
-type_e_strict_var_string_violation=04016_E_Stringtypen passen nicht zueinander, da in "$V+"-Modus
+type_e_strict_var_string_violation=04016_E_Stringtypen m�ssen im "$V+"-Modus exakt �bereinstimmen
 % When compiling in \var{\{\$V+\}} mode, the string you pass as a parameter
 % should be of the exact same type as the declared parameter of the procedure.
 type_e_succ_and_pred_enums_with_assign_not_possible=04017_E_Succ oder Pred kann nicht auf Aufz„hlungen mit Zuweisungen angewendet werden
@@ -1482,7 +1633,7 @@ type_w_pointer_to_signed=04082_W_Die Konvertierung von Pointern in einen Integer
 type_interface_has_no_guid=04083_E_Interface Typ $1 hat keine g�ltige GUID
 % When applying the as-operator to an interface or class, the desired interface (i.e. the right operand of the
 % as-operator) must have a valid GUID.
-type_e_invalid_objc_selector_name=04084_E_Ung�ltiger Objective-C-Selector-Name
+type_e_invalid_objc_selector_name=04084_E_Ung�ltiger Objective-C-Selector-Name "$1"
 % An Objective-C selector cannot be empty, must be a valid identifier or a single colon,
 % and if it contains at least one colon it must also end in one.
 type_e_expected_objc_method_but_got=04085_E_Erwartete eine Objective-C-Methode, erhielt aber $1
@@ -1496,11 +1647,60 @@ type_e_no_type_info=04087_E_F
 % Type information is not generated for some types, such as enumerations with gaps
 % in their value range (this includes enumerations whose lower bound is different
 % from zero).
+type_e_ordinal_or_string_expr_expected=04088_E_Ausdruck mit ordinalem Typ oder Zeichenkette erwartet
+% The expression must be an ordinal or string type.
+type_e_string_expr_expected=04089_E_Ausdruck mit Zeichenkette erwartet
+% The expression must be a string type.
+type_w_zero_to_nil=04090_W_Konvertiere 0 zu NIL
+% Use NIL rather than 0 when initialising a pointer. 
+type_e_protocol_type_expected=04091_E_Objective-C Protokolltyp erwartet, erhielt aber "$1"
+% The compiler expected a protocol type name, but found something else.
+type_e_objc_type_unsupported=04092_E_Der Typ "$1" wird nicht f�r die Verwendung mit der Objective-C Laufzeitumgebung unterst�tzt.
+% Objective-C makes extensive use of run time type information (RTTI). This format
+% is defined by the maintainers of the run time and can therefore not be adapted
+% to all possible Object Pascal types. In particular, types that depend on
+% reference counting by the compiler (such as ansistrings and certain kinds of
+% interfaces) cannot be used as fields of Objective-C classes, cannot be
+% directly passed to Objective-C methods, and cannot be encoded using \var{objc\_encode}.
+type_e_class_or_objcclass_type_expected=04093_E_Klasse oder Objective-C Klasse als Typ erwartet, erhielt aber "$1"
+% It is only possible to create class reference types of \var{class} and \var{objcclass}
+type_e_objcclass_type_expected=04094_E_Objective-C Klasse als Typ erwartet
+% The compiler expected an \var{objcclass} type
+type_w_procvar_univ_conflicting_para=04095_W_Erzwungener univ Parameter Typ in einer prozeduralen Variablen kann einen Absturz oder SpeicherKorruption verursachen: $1 auf $2
+% \var{univ} parameters are implicitly compatible with all types of the same size,
+% also in procedural variable definitions. That means that the following code is
+% legal, because \var{single} and \var{longint} have the same size:
+% \begin{verbatim}
+% {$mode macpas}
+% Type
+%   TIntProc = procedure (l: univ longint);
+%
+%   procedure test(s: single);
+%     begin
+%       writeln(s);
+%     end;
+%
+%   var
+%     p: TIntProc;
+%   begin
+%     p:=test;
+%     p(4);
+%   end.
+% \end{verbatim}
+% This code may however crash on platforms that pass integers in registers and
+% floating point values on the stack, because then the stack will be unbalanced.
+% Note that this warning will not flagg all potentially dangerous situations.
+% when \var{test} returns.
+type_e_generics_cannot_reference_itself=04096_E_Typ-Parameter bei der Spezialisation von Generics k”nnen den aktuel spezialisierten Typ nicht referenzieren
+% Recursive specializations of generics like \var{Type MyType = specialize MyGeneric<MyType>;} are not possible.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Symtable
 #
-# 05064 is the last used one
+# 05080 is the last used one
 #
 % \section{Symbol handling}
 % This section lists all the messages that concern the handling of symbols.
@@ -1671,11 +1871,82 @@ sym_w_experimental_symbol=05063_W_Symbol "$1" ist experimentell
 sym_w_forward_not_resolved=05064_W_Forward Deklaration "$1" wird nicht aufgel”st und deshalb als extern angenommen
 % This happens if you declare a function in the \var{interface} of a unit in macpas mode,
 % but do not implement it.
+sym_w_library_symbol=05065_W_Symbol "$1" geh”rt zu einer Bibliothek
+% This means that a symbol (a variable, routine, etc...) which is
+% declared as \var{library} is used. Library symbols may not be
+% available in other libraries.
+sym_w_deprecated_symbol_with_msg=05066_W_Symbol "$1" ist veraltet: "$2"
+% This means that a symbol (a variable, routine, etc...) which is
+% declared as \var{deprecated} is used. Deprecated symbols may no longer
+% be available in newer versions of the unit / library. Use of this symbol
+% should be avoided as much as possible.
+sym_e_no_enumerator=05067_E_Kann keinen Z„hler f�r den Typ "$1" finden
+% This means that compiler cannot find an apropriate enumerator to use in the for-in loop.
+% To create an enumerator you need to defind an operator enumerator or add a public or published
+% GetEnumerator method to the class or object definition.
+sym_e_no_enumerator_move=05068_E_Kann keine Methode "MoveNext" in der Aufz„hlung "$1" finden
+% This means that compiler cannot find a public MoveNext method with the Boolean return type in
+% the enumerator class or object definition.
+sym_e_no_enumerator_current=05069_E_Kann keine Eigenschaft "Current" in der Aufz„hlung "$1" finden
+% This means that compiler cannot find a public Current property in  the enumerator class or object
+% definition.
+sym_e_objc_para_mismatch=05070_E_Die Anzahl der deklarierten Parameter und die Anzahl der Doppelpunkte in der Nachrichtenzeichenkette stimmen nicht �berein
+% In Objective-C, a message name automatically contains as many colons as parameters.
+% In order to prevent mistakes when specifying the message name in FPC, the compiler
+% checks whether this is also the case here. Note that in case of messages taking a
+% variable number of arguments translated to FPC via an \var{array of const} parameter,
+% this final \var{array of const} parameter is not counted. Neither are the hidden
+% \var{self} and \var{\_cmd} parameters.
+sym_n_private_type_not_used=05071_N_Privater Typ "$1.$2" wird nie benutzt
+% The indicated private type is declared but is never used in the code.
+sym_n_private_const_not_used=05072_N_Private Konstante "$1.$2" wird nie benutzt
+% The indicated private const is declared but is never used in the code.
+sym_n_private_property_not_used=05073_N_Private Eigenschaft "$1.$2" wird nie benutzt
+% The indicated private property is declared but is never used in the code.
+sym_w_deprecated_unit=05074_W_Unit "$1" ist veraltet
+% This means that a unit which is
+% declared as \var{deprecated} is used. Deprecated units may no longer
+% be available in newer versions of the library. Use of this unit
+% should be avoided as much as possible.
+sym_w_deprecated_unit_with_msg=05075_W_Unit "$1" ist veraltet: "$2"
+% This means that a unit which is
+% declared as \var{deprecated} is used. Deprecated units may no longer
+% be available in newer versions of the library. Use of this unit
+% should be avoided as much as possible.
+sym_w_non_portable_unit=05076_W_Unit "$1" ist plattformabh„ngig
+% This means that a unit which is
+% declared as \var{platform} is used. This unit use
+% and availability is platform specific and should not be used
+% if the source code must be portable.
+sym_w_library_unit=05077_W_Unit "$1" geh”rt zu einer Bibliothek
+% This means that a unit which is
+% declared as \var{library} is used. Library units may not be
+% available in other libraries.
+sym_w_non_implemented_unit=05078_W_Unit "$1" ist nicht implementiert
+% This means that a unit which is
+% declared as \var{unimplemented} is used. This unit is defined,
+% but is not yet implemented on this specific platform.
+sym_w_experimental_unit=05079_W_Unit "$1" ist experimentell
+% This means that a unit which is
+% declared as \var{experimental} is used. Experimental units
+% might disappear or change semantics in future versions. Usage of this unit
+% should be avoided as much as possible.
+sym_e_objc_formal_class_not_resolved=05080_E_Die vollst„ndige Definition der formal deklarierten ObjC-Klasse "$1" fehlt in diesem Geltungsbereich
+% Objecive-C classes can be imported formally, without using the the unit in which it is fully declared.
+% This enables making forward references to such classes and breaking circular dependencies amongst units.
+% However, as soon as you wish to actually do something with an entity of this class type (such as
+% access one of its fields, send a message to it, or use it to inherit from), the compiler requires the full definition
+% of the class to be in scope.
+sym_e_interprocgoto_into_init_final_code_not_allowed=05081_E_Gotos in die 'initialization'- oder 'finalization'-Bl”cke einer Unit sind nicht erlaubt
+% Gotos into initialization or finalization blockse of units are not allowed.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Codegenerator
 #
-# 06049 is the last used one
+# 06050 is the last used one
 #
 % \section{Code generator messages}
 % This section lists all messages that can be displayed if the code
@@ -1786,12 +2057,12 @@ cg_e_break_not_allowed=06044_E_BREAK nicht zul
 % You're trying to use \var{break} outside a loop construction.
 cg_e_continue_not_allowed=06045_E_CONTINUE nicht zul„ssig
 % You're trying to use \var{continue} outside a loop construction.
-cg_f_unknown_compilerproc=06046_F_Unbekannte Compiler-Prozedur "$1". šberpr�fe, ob die korrekte Laufzeit-Bibliothek verwendet wird.
+cg_f_unknown_compilerproc=06046_F_Unbekannte Compiler-Prozedur "$1". šberpr�fe, ob die korrekte Laufzeit-Bibliothek verwendet wird
 % The compiler expects that the runtime library contains certain subroutines. If you see this error
 % and you didn't change the runtime library code, it's very likely that the runtime library
 % you're using doesn't match the compiler in use. If you changed the runtime library this error means
 % that you removed a subroutine which the compiler needs for internal use.
-cg_f_unknown_system_type=06047_F_Systemtyp "$1" konnte nicht gefunden werden. šberpr�fe ob die korrekte Laufzeit-Bibliothek verwendet wird.
+cg_f_unknown_system_type=06047_F_Systemtyp "$1" konnte nicht gefunden werden. šberpr�fe, ob die korrekte Laufzeit-Bibliothek verwendet wird
 % The compiler expects that the runtime library contains certain type definitions. If you see this error
 % and you didn't change the runtime library code, it's very likely that the runtime library
 % you're using doesn't match the compiler in use. If you changed the runtime library this error means
@@ -1802,13 +2073,24 @@ cg_h_inherited_ignored=06048_H_Geerbter Aufruf einer abstrakten Methode ignorier
 cg_e_goto_label_not_found=06049_E_Goto Label "$1": Das Label ist nicht definiert oder wurde bei der Optimierung entfernt
 % The label used in the goto definition is not defined or optimized away by the
 % unreachable code elemination.
+cg_f_unknown_type_in_unit=06050_F_Kann den Typ "$1" nicht in der Unit "$2" finden. šberpr�fe, ob die korrekte Laufzeit-Bibliothek verwendet wird
+% The compiler expects that the runtime library contains certain type definitions. If you see this error
+% and you didn't change the runtime library code, it's very likely that the runtime library
+% you're using doesn't match the compiler in use. If you changed the runtime library this error means
+% that you removed a type which the compiler needs for internal use.
+cg_e_interprocedural_goto_only_to_outer_scope_allowed=06051_E_Interprozedurale gotos sind nur in „uáere Subroutines erlaubt
+% Gotos between subroutines are only allowed if the goto jumps from an inner to an outer subroutine or
+% from a subroutine to the main program
+cg_e_labels_cannot_defined_outside_declaration_scope=06052_E_ Label m�ssen im selben Bereich definiert werden, in dem sie deklariert werden
+% In ISO mode, labels must be defined in the same scope as they are declared.
+%
 % \end{description}
 # EndOfTeX
 
 #
 # Assembler reader
 #
-# 07107 is the last used one
+# 07109 is the last used one
 #
 asmr_d_start_reading=07000_DL_Starte $1 Stil Assembler Parsen
 % This informs you that an assembler block is being parsed
@@ -1847,7 +2129,7 @@ asmr_e_relocatable_symbol_not_allowed=07013_E_Verschiebbares Symbol ist nicht zu
 asmr_e_invalid_reference_syntax=07014_E_Ung�ltige Verweis-Syntax
 % There is an error in the reference.
 asmr_e_local_para_unreachable=07015_E_Sie k”nnen "$1" von diesem Code aus nicht erreichen
-% You can not read directly the value of a local variable or parameter
+% You cannot read directly the value of a local variable or parameter
 % of a higher level procedure in assembler code (except for
 % local assembler code without parameter nor locals).
 asmr_e_local_label_not_allowed_as_ref=07016_E_Lokale Symbole/Labels sind nicht als Referenz zul„ssig
@@ -2054,10 +2336,17 @@ asmr_e_need_pic_ref=07107_E_Erzeuge eigentlich PIC, aber die Referenz ist nicht
 % The compiler has been configured to generate position-independent code
 % (PIC), but there are position-dependent references in the current
 % handwritten assembler instruction.
+asmr_e_mixing_regtypes=07108_E_Alle Register in einem Registerset m�ssen in T und Breite �bereinstimmen
+% Instructions on the ARM architecture that take a register set as argument require that all registers
+% in this set are of the same kind (e.g., integer, vfp) and width (e.g., single precision, double precision).
+asmr_e_empty_regset=07109_E_Ein Registerset kann nicht leer sein
+% Instructions on the ARM architecture that take a register set as argument require that such a set
+% contains at least one register.
+
 #
 # Assembler/binary writers
 #
-# 08020 is the last used one
+# 08021 is the last used one
 #
 asmw_f_too_many_asm_files=08000_F_Zu viele Assembler-Dateien
 % With smartlinking enabled, there are too many assembler
@@ -2175,10 +2464,11 @@ exec_e_cant_call_resource_compiler=09030_E_Der Resource-Compiler "$1" kann nicht
 % a script that can be used to assemble, compile resources and link or
 % postprocess the program.
 exec_e_cant_open_resource_file=09031_E_Kann die Resourcedatei "$1" nicht ”ffnen
-% An error occurred resource file can not be opened.
+% An error occurred resource file cannot be opened.
 exec_e_cant_write_resource_file=09032_E_Kann die Resourcedatei "$1" nicht schreiben
-% An error occurred resource file can not be written.
-%\end{description}
+% An error occurred resource file cannot be written.
+%
+% \end{description}
 # EndOfTeX
 
 #
@@ -2205,13 +2495,14 @@ execinfo_x_stackreserve=09133_X_Stack Bereich "reserved": $1 Bytes
 % Informational message showing the stack size that the compiler reserved for the executable.
 execinfo_x_stackcommit=09134_X_Stack Bereich "committed": $1 Bytes
 % Informational message showing the stack size that the compiler committed for the executable.
-%\end{description}
+%
+% \end{description}
 # EndOfTeX
 
 #
 # Internal linker messages
 #
-# 09200 is the last used one
+# 09201 is the last used one
 #
 # BeginOfTeX
 % \section{Linker messages}
@@ -2223,13 +2514,14 @@ link_w_32bit_absolute_reloc=09201_W_Object Daei "$1" enth
 % Warning when 64-bit object file contains 32-bit absolute relocations.
 % In such case an executable image can be loaded into lower 4Gb of
 % address space only.
-%\end{description}
+%
+% \end{description}
 # EndOfTeX
 
 #
 # Unit loading
 #
-# 10061 is the last used one
+# 10062 is the last used one
 #
 # BeginOfTeX
 % \section{Unit loading messages.}
@@ -2318,7 +2610,7 @@ unit_u_recompile_crc_change=10028_U_
 unit_u_recompile_source_found_alone=10029_U_šbersetze "$1", nur Quellcode gefunden
 % When you use the \var{-vu} flag, these messages tell you why the current
 % unit is recompiled.
-unit_u_recompile_staticlib_is_older=10030_U_šbersetze Unit erneut, statische Biblothek ist „lter als PPU-Datei
+unit_u_recompile_staticlib_is_older=10030_U_šbersetze Unit erneut, statische Bibliothek ist „lter als PPU-Datei
 % When you use the \var{-vu} flag, the compiler warns if the static library
 % of the unit is older than the unit file itself.
 unit_u_recompile_sharedlib_is_older=10031_U_šbersetze Unit erneut, gemeinsame Bibliothek ist „lter als PPU-Datei
@@ -2357,7 +2649,7 @@ unit_u_check_time=10037_U_PPU pr
 unit_w_cant_compile_unit_with_changed_incfile=10040_W_Kann Unit $1 nicht erneut �bersetzen, aber ge„nderte Include-Datei gefunden
 % A unit was found to have modified include files, but
 % some source files were not found, so recompilation is impossible.
-unit_u_source_modified=10041_U_Datei $1 ist neuer als die PPU Datei $2
+unit_u_source_modified=10041_U_Datei $1 ist neuer als die, aus der die PPU Datei $2 erzeugt wird
 % A modified source file for a compiler unit was found.
 unit_u_ppu_invalid_fpumode=10042_U_Versuch eine Unit zu verwenden, die in einem anderen FPU Mode �bersetzt wurde
 % Trying to compile code while using units which were not compiled with
@@ -2380,7 +2672,7 @@ unit_u_implementation_crc_changed=10046_U_Ge
 unit_u_finished_compiling=10047_U_šbersetzen der Unit $1 beendet
 % When you use the \var{-vu} flag, the compiler warns that it
 % has finished compiling the unit.
-unit_u_add_depend_to=10048_U_F�ge die Abh„ngigkeit von $1 von $2 dazu
+unit_u_add_depend_to=10048_U_Abh„ngigkeit hinzuf�gen: $1 h„ngt von $2 ab
 % When you use the \var{-vu} flag, the compiler warns that it
 % has added a dependency between the two units.
 unit_u_no_reload_is_caller=10049_U_Kein erneutes Laden, Unit $1 ist die Aufrufende
@@ -2426,13 +2718,19 @@ unit_e_different_wpo_file=10061_E_Unit $1 wurde mit einer anderen Feedback-Einga
 % When a unit has been compiled using a particular whole program optimization (wpo) feedback file (\var{-FW<x>} \var{-OW<x>}),
 % this compiled version of the unit is specialised for that particular compilation scenario and cannot be used in
 % any other context. It has to be recompiled before you can use it in another program or with another wpo feedback input file.
+unit_u_indirect_crc_changed=10062_U_Die CRC des indirekten Interface (Objekte/Klassen) f�r die unit $1 hat sich ge„ndert
+% When you use the \var{-vu} flag, the compiler warns that the
+% indirect CRC calculated for the unit (this is the CRC of all classes/objects/interfaces/$\ldots$
+% in the interfaces of units directly or indirectly used by this unit in the interface) has been changed after the
+% implementation has been parsed.
+%
 % \end{description}
 # EndOfTeX
 
 #
-#  Options
+# Options
 #
-# 11046 is the last used one
+# 11048 is the last used one
 #
 option_usage=11000_O_$1 [Optionen] <Eingabedatei> [Optionen]
 # BeginOfTeX
@@ -2448,7 +2746,7 @@ option_only_one_source_support=11001_W_Es wird nur eine Quelldatei unterst
 option_def_only_for_os2=11002_W_DEF-Datei kann nur f�r OS/2 erzeugt werden
 % This option can only be specified when you're compiling for OS/2.
 option_no_nested_response_file=11003_E_Verschachtelte Response-Dateien werden nicht unterst�tzt
-% You can not nest response files with the \var{@file} command line option.
+% You cannot nest response files with the \var{@file} command line option.
 option_no_source_found=11004_F_Kein Name f�r Quelldatei auf der Kommandzeile
 % The compiler expects a source file name on the command line.
 option_no_option_found=11005_N_Keine Angaben in Konfigurationsdatei "$1" gefunden
@@ -2500,7 +2798,7 @@ option_switch_bin_to_src_assembler=11020_N_Schalte Assembler auf den Standard-As
 % -a switch, which can't be used with a binary assembler writer.
 option_incompatible_asm=11021_W_Das gew„hlte Assembler-Ausgabeformat "$1" ist nicht mit "$2" kompatibel
 option_asm_forced=11022_W_Verwendung des Assemblers "$1" erzwungen
-% The assembler output selected can not generate
+% The assembler output selected cannot generate
 % object files with the correct format. Therefore, the
 % default assembler for this target is used instead.
 option_using_file=11026_T_Optionen werden aus der Datei $1 gelesen
@@ -2534,7 +2832,7 @@ option_code_page_not_available=11039_E_Unbekannte code page
 % The requested code page is not in that list. You will need to recompile
 % the compiler with support for the codepage you need.
 option_config_is_dir=11040_F_Konfigurationsdatei $1 ist ein Verzeichnis
-% Directories can not be used as configuration files.
+% Directories cannot be used as configuration files.
 option_confict_asm_debug=11041_W_Die gew„hlte Assembler-Ausgabe "$1" kann kein Debug-Info erzeugen, Debugging ist ausgeschaltet
 % The selected assembler output cannot generate
 % debugging information, debugging option is therefore disabled.
@@ -2546,18 +2844,24 @@ option_else_without_if=11043_F_Zur \var{\#ELSE} Direktive in Zeile $2 der Option
 option_unsupported_target=11044_F_Die Option "$1" wird auf der Zielplattform nicht oder noch nicht unterst�tzt
 % Not all options are supported or implemented for all target platforms. This message informs you that a chosen
 % option is incompatible with the currently selected target platform.
-%\end{description}
 option_unsupported_target_for_feature=11045_F_Das Feature "$1" wird f�r die ausgew„hlte Zielplattform nicht oder noch nicht unterst�tzt
 % Not all features are supported or implemented for all target platforms. This message informs you that a chosen
 % feature is incompatible with the currently selected target platform.
 option_dwarf_smart_linking=11046_N_DWARF Debug-Information kann auf dieser Zielplattform nicht zusammen mit Smartlinking benutzt werden, es wird auf statisches Linken umgeschaltet
 % Smart linking is currently incompatble with DWARF debug information on most
 % platforms, so smart linking is disabled in such cases.
-
+option_ignored_target=11047_W_Option "$1" wird f�r die ausgew„hlte Zielplattform ignoriert
+% Not all options are supported or implemented for all target platforms. This message informs you that a chosen
+% option is ignored for the currently selected target platform.
+option_debug_external_unsupported=11048_W_Schalte externe Debuginformation aus, weil es f�r die gew„hlte Kombination Ziel/Debugformat nicht unterst�tzt wird
+% Not all debug formats can be stored in an external file on all platforms. In particular, on
+% Mac OS X only DWARF debug information can be stored externally.
+%
+% \end{description}
 # EndOfTeX
 
 #
-#  Whole program optimization
+# Whole program optimization
 #
 # 12019 is the last used one
 #
@@ -2629,16 +2933,16 @@ wpo_symbol_live_info_needs_smart_linking=12018_E_Die Sammlung der "symbol livene
 % actually used or not. So in that case all symbols will be seen as live, which makes this optimization ineffective.
 wpo_cant_create_feedback_file=12019_E_Die angegebene Feedback-Eingabe-Datei "$1" f�r die Gesamtprogramm-Optimierung kann nicht erzeugt werden
 % The compiler is unable to create the file specified using the -FW parameter to store the whole program optimisation information.
-%\end{description}
+%
+% \end{description}
 # EndOfTeX
 
-
 #
 # Logo (option -l)
 #
 option_logo=11023_[
 Free Pascal Compiler Version $FPCFULLVERSION [$FPCDATE] f�r $FPCTARGET
-Copyright (c) 1993-2009 Florian Kl„mpfl
+Copyright (c) 1993-2010 Florian Kl„mpfl
 ]
 
 #
@@ -2688,7 +2992,9 @@ oder
 # line, the current possibilities are :
 #    * = every target
 #    3 = 80x86 targets
+#    4 = x86_64
 #    6 = 680x0 targets
+#    A = ARM
 #    e = in extended debug mode only
 #    P = PowerPC targets
 #    S = Sparc targets
@@ -2712,6 +3018,7 @@ option_help_pages=11025_[
 **1A<x>_Ausgabe Format:
 **2Adefault_Benutze den "default" Assembler
 3*2Aas_Assembliere mit Hilfe von GNU AS
+3*2Amacho_Mach-O (Darwin, Intel 32 bit) mit Hilfe des internen Schreibers
 3*2Anasmcoff_COFF (Go32v2) Datei mit Hilfe von Nasm
 3*2Anasmelf_ELF32 (Linux) Datei mit Hilfe von Nasm
 3*2Anasmwin32_Win32 Object Datei mit Hilfe von Nasm
@@ -2720,9 +3027,9 @@ option_help_pages=11025_[
 3*2Anasmobj_Obj Datei mit Hilfe von Nasm
 3*2Amasm_Obj Datei mit Hilfe von Masm (Microsoft)
 3*2Atasm_Obj Datei mit Hilfe von Tasm (Borland)
-3*2Aelf_ELF32 (Linux) mit Hilfe vom internen Schreiber
-3*2Acoff_COFF (Go32v2) mit Hilfe vom internen Schreiber
-3*2Apecoff_PE_COFF (Win32) mit Hilfe vom internen Schreiber
+3*2Aelf_ELF32 (Linux) mit Hilfe des internen Schreibers
+3*2Acoff_COFF (Go32v2) mit Hilfe des internen Schreibers
+3*2Apecoff_PE_COFF (Win32) mit Hilfe des internen Schreibers
 4*2Aas_Assembliere mit Hilfe von GNU AS
 6*2Aas_Unix o-file mit Hilfe von GNU AS
 6*2Agas_GNU Motorola Assembler
@@ -2735,6 +3042,7 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 **2bl_Erzeuge Info zu lokalen Symbolen
 **1B_Erzeuge alle Module (Build)
 **1C<x>_Optionen f�r Code-Erzeugung:
+**2C3<x>_Schalte ieee-Pr�fung von Konstanten ein
 **2Ca<x>_W„hle ABI aus; fpc -i gibt die m”glichen Werte aus
 **2Cb_Erzeuge "big-endian" Code
 **2Cc<x>_Setze "default calling convention" zu <x>
@@ -2791,6 +3099,7 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 *g2go<x>_Setze Optionen f�r die Debug Informationen
 *g3godwarfsets_Schalte DWARF Debug Informationen f�r Mengen (sets) ein (verhindert debugging mit gdb < 6.5)
 *g3gostabsabsincludes_ Absolute/volle Include-Datei-Pfade in Stabs speichern
+*g3godwarfmethodclassprefix_ Stelle Methodennamen in DWARF den Namen der Klasse voran
 *g2gp_Erhalte Gross/Kleinschreibung in Stabs-Symbolnamen
 *g2gs_Erzeuge Stabs-Debug-Informationen
 *g2gt_L”sche lokale Variablen (um eine Verwendung ohne Initialisierung zu finden)
@@ -2855,7 +3164,6 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 **3SIcorba_CORBA kompatibles Interface
 **2Sm_Unterst�tze Makros wie in C (global)
 **2So_Sei TP/BP 7.0 kompatibel (wie -Mtp)
-**2Sp_Sei gpc-kompatibel (wie -Mgpc)
 **2Ss_Konstruktor- und Destruktorname m�ssen "Init" und "Done" sein
 **2St_Erlaube Schl�sselwort static in Objekten
 **2Sx_Exception Schl�sselw”rter einschalten (Voreinstellung in Delphi/ObjFPC Moden)
@@ -2926,6 +3234,8 @@ P*2WC_Spezifiziere "console type application" (Classic Mac OS)
 3*2WD_Benutze DEFFILE um Funktionen der DLL oder EXE zu exportieren (Windows)
 A*2WD_Benutze DEFFILE um Funktionen der DLL oder EXE zu exportieren (Windows)
 3*2We_Benutze externe Resourcen (Darwin)
+4*2We_Benutze externe Resourcen (Darwin)
+A*2We_Benutze externe Resourcen (Darwin)
 P*2We_Benutze externe Resourcen (Darwin)
 p*2We_Benutze externe resoResourcenurces (Darwin)
 3*2WF_Spezifiziere "full-screen type application" (EMX, OS/2)

+ 1 - 1
compiler/msg/errorda.msg

@@ -2207,7 +2207,7 @@ option_config_is_dir=11040_F_Konfigurationsfilen $1 er et directory
 #
 option_logo=11023_[
 Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] til $FPCTARGET
-Copyright (c) 1993-2009 Florian Klaempfl
+Copyright (c) 1993-2010 Florian Klaempfl
 ]
 
 #

+ 371 - 61
compiler/msg/errordu.msg

@@ -3,10 +3,10 @@
 #   Latest updates contributed by Karl-Michael Schindler aka mischi
 #   <karl-michael.schindler at web.de>
 #
-#   Based on errore.msg of SVN revision 13334
+#   Based on errore.msg of SVN revision 15850
 #
 #   This file is part of the Free Pascal Compiler
-#   Copyright (c) 1998-2009 by the Free Pascal Development team
+#   Copyright (c) 1998-2010 by the Free Pascal Development team
 #
 #   See the file COPYING.FPC, included in this distribution,
 #   for details about the copyright.
@@ -127,12 +127,15 @@ general_i_number_of_warnings=01021_I_$1 Warnung(en) ausgegeben
 general_i_number_of_hints=01022_I_$1 Hinweis(e) ausgegeben
 % Total number of hints issued during compilation.
 general_i_number_of_notes=01023_I_$1 Anmerkung(en) ausgegeben
-% Total number of notes issued during compilation.%
+% Total number of notes issued during compilation.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Scanner
 #
-# 02085 is the last used one
+# 02087 is the last used one
 #
 % \section{Scanner messages.}
 % This section lists the messages that the scanner emits. The scanner takes
@@ -348,7 +351,7 @@ scan_w_minstacksize_not_support=02077_W_MINSTACKSIZE wird vom Zielbetriebssystem
 % The \var{\{\$IMAGEBASE\}} directive is not supported by the target OS.
 scan_w_maxstacksize_not_support=02078_W_MAXSTACKSIZE wird vom Zielbetriebssystem nicht unterstützt
 % The \var{\{\$MAXSTACKSIZE\}} directive is not supported by the target OS.
-scanner_e_illegal_warn_state=02079_E_Ungültiger Wert für die $WARN Direktive
+scanner_e_illegal_warn_state=02079_E_Ungültiger Wert "$1" für die $WARN Direktive
 % Only ON and OFF can be used as state with a \var{\{\$WARN\}} compiler directive.
 scan_e_only_packset=02080_E_Ungültiger Wert für das set packing
 % Only 0, 1, 2, 4, 8, DEFAULT and NORMAL are allowed as packset parameters.
@@ -366,11 +369,16 @@ scan_e_illegal_minfpconstprec=02085_E_"$1" ist eine ungültige minimale Präzisi
 scan_w_multiple_main_name_overrides=02086_W_Der Name der "main" Prozedur wird mehrfach überschrieben. Es war bisher auf "$1" gesetzt
 % The name for the main entry procedure is specified more than once. Only the last
 % name will be used.
+scanner_w_illegal_warn_identifier=02087_W_Ungültige Bezeichner "$1" für die $WARN Direktive
+% Identifier is not known by a \var{\{\$WARN\}} compiler directive.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Parser
 #
-# 03252 is the last used one
+# 03295 is the last used one
 #
 % \section{Parser messages}
 % This section lists all parser messages. The parser takes care of the
@@ -518,7 +526,7 @@ parser_e_fail_only_in_constructor=03051_E_FAIL darf nur in Konstruktoren verwend
 parser_e_no_paras_for_destructor=03052_E_Destruktoren können keine Parameter haben
 % You are declaring a destructor with a parameter list. Destructor methods
 % cannot have parameters.
-parser_e_only_class_methods_via_class_ref=03053_E_Nur Klassenmethoden können über den Klassennamen angesprochen werden
+parser_e_only_class_members_via_class_ref=03053_E_Nur Klassenmethoden, Klasseneigenschaften und Klassenvariablen können über den Klassennamen angesprochen werden
 % This error occurs in a situation like the following:
 % \begin{verbatim}
 % Type :
@@ -532,7 +540,7 @@ parser_e_only_class_methods_via_class_ref=03053_E_Nur Klassenmethoden können ü
 % \end{verbatim}
 % \var{Free} is not a class method and hence cannot be called with a class
 % reference.
-parser_e_only_class_methods=03054_E_Nur Klassenmethoden können in einer Klassenmethode angesprochen werden
+parser_e_only_class_members=03054_E_Nur Klassenmethoden, Klasseneigenschaften und Klassenvariablen können in einer Klassenmethode angesprochen werden
 % This is related to the previous error. You cannot call a method of an object
 % from inside a class method. The following code would produce this error:
 % \begin{verbatim}
@@ -635,7 +643,7 @@ parser_e_operator_not_overloaded=03082_E_Operator besitzt kein Overload
 % You're trying to use an overloaded operator when it isn't overloaded for
 % this type.
 parser_e_no_such_assignment=03083_E_Es ist nicht möglich, die Zuweisung für gleiche Typen zu überladen
-% You can not overload assignment for types
+% You cannot overload assignment for types
 % that the compiler considers as equal.
 parser_e_overload_impossible=03084_E_Unmögliche Operator-.berladung
 % The combination of operator, arguments and return type are
@@ -844,7 +852,7 @@ parser_e_cant_use_inittable_here=03151_E_Datentypen, die ein Initialiserung oder
 % code which is implicitly generated by the compiler. Such data types
 % can't be used in the variant part of a record.
 parser_e_resourcestring_only_sg=03152_E_Resourcestrings dürfen nur statisch oder global sein
-% Resourcestring can not be declared local, only global or using the static
+% Resourcestring cannot be declared local, only global or using the static
 % directive.
 parser_e_exit_with_argument_not__possible=03153_E_EXIT mit Argument darf hier nicht verwendet werden
 % An exit statement with an argument for the return value can't be used here. This
@@ -916,13 +924,13 @@ parser_e_no_con_des_in_interfaces=03171_E_Kon- und Destruktoren sind in Interfac
 % Constructor and destructor declarations aren't allowed in interfaces.
 % In the most cases method \var{QueryInterface} of \var{IUnknown} can
 % be used to create a new interface.
-parser_e_no_access_specifier_in_interfaces=03172_E_Zugriffsbezeichner können in Interfaces nicht benutzt werden
+parser_e_no_access_specifier_in_interfaces=03172_E_Zugriffsbezeichner können in INTERFACEs und OBJCPROTOCOLs nicht benutzt werden
 % The access specifiers \var{public}, \var{private}, \var{protected} and
-% \var{published} can't be used in interfaces because all methods
-% of an interface must be public.
-parser_e_no_vars_in_interfaces=03173_E_Ein Interface darf keine Felder enthalten
-% Declarations of fields aren't allowed in interfaces. An interface
-% can contain only methods and properties with method read/write specifiers.
+% \var{published} can't be used in interfaces, Objective-C protocols and categories because all methods
+% of an interface/protocol/category must be public.
+parser_e_no_vars_in_interfaces=03173_E_Ein Interface, ein Objective-C Protokoll oder eine Kategorie darf keine Felder enthalten
+% Declarations of fields are not allowed in interfaces and Objective-C protocols and categories.
+% An interface/protocol/category can contain only methods and properties with method read/write specifiers.
 parser_e_no_local_proc_external=03174_E_Eine lokale Prozedur kann nicht als EXTERNAL deklariert werden
 % Declaring local procedures as external is not possible. Local procedures
 % get hidden parameters that will make the chance of errors very high.
@@ -953,10 +961,10 @@ parser_w_proc_overriding_calling=03182_W_Überschreibe die Calling Convention "$
 % There are two directives in the procedure declaration that specify a calling
 % convention. Only the last directive will be used.
 parser_e_no_procvarobj_const=03183_E_Die Konstante des Typs "procedure of object" kann nur mit NIL initialisiert werden
-% You can't assign the address of a method to a typed constant which has a
+% You cannot assign the address of a method to a typed constant which has a
 % 'procedure of object' type, because such a constant requires two addresses:
 % that of the method (which is known at compile time) and that of the object or
-% class instance it operates on (which can not be known at compile time).
+% class instance it operates on (which cannot be known at compile time).
 parser_e_default_value_only_one_para=03184_E_Der Default Value kann nur einem Parameter zugewiesen werden
 % It is not possible to specify a default value for several parameters at once.
 % The following is invalid:
@@ -975,7 +983,7 @@ parser_h_c_arrays_are_references=03187_H_C Arrays werden "by reference" übergeb
 % Any array passed to a C function is passed
 % by a pointer (i.e. by reference).
 parser_e_C_array_of_const_must_be_last=03188_E_C array of const muss letztes Argument sein
-% You can not add any other argument after an \var{array of const} for
+% You cannot add any other argument after an \var{array of const} for
 % \var{cdecl} functions, as the size pushed on stack for this argument is
 % not known.
 parser_h_type_redef=03189_H_Erneute Definition des Typs "$1"
@@ -987,7 +995,7 @@ parser_w_cdecl_has_no_high=03190_W_cdecl'ared Functionen haben keinen high Param
 parser_w_cdecl_no_openstring=03191_W_cdecl'ared Functionen unterstützen keine open strings
 % Openstring is not supported for functions that have the \var{cdecl} modifier.
 parser_e_initialized_not_for_threadvar=03192_E_Als threadvar deklarierte Variable kann nicht initialisiert werden
-% Variables declared as threadvar can not be initialized with a default value.
+% Variables declared as threadvar cannot be initialized with a default value.
 % The variables will always be filled with zero at the start of a new thread.
 parser_e_msg_only_for_classes=03193_E_Message directive ist nur in Klassen erlaubt
 % The message directive is only supported for Class types.
@@ -997,7 +1005,7 @@ parser_e_illegal_calling_convention=03195_W_Calling convention directive ignorie
 % Some calling conventions are supported only by certain CPUs. I.e. most non-i386 ports support
 % only the standard ABI calling convention of the CPU.
 parser_e_no_object_reintroduce=03196_E_REINTRODUCE kann in Objekten nicht benutzt werden
-% \var{reintroduce} is not supported for objects.
+% \var{reintroduce} is not supported for objects, Objective-C classes and Objective-C protocols.
 parser_e_paraloc_only_one_para=03197_E_Jedes Argument muss seine eigene "location" haben
 % If locations for arguments are specified explicitly as it is required by
 % some syscall conventions, each argument must have its own location. Things
@@ -1109,9 +1117,9 @@ parser_e_packed_element_no_loop=03223_E_Bit packed Array-Elemente und Record-Fel
 % (or as \var{packed} in any mode with \var{\{\$bitpacking on\}}), it will
 % be packed at the bit level. For performance reasons, they cannot be
 % used as loop variables.
-parser_e_type_and_var_only_in_generics=03224_E_VAR und TYPE sind nur innerhalb "generics" erlaubt
-% The usage of VAR and TYPE to declare new types inside an object is allowed only inside
-% generics.
+parser_e_type_var_const_only_in_generics_and_classes=03224_E_VAR, TYPE und CONST sind nur innerhalb "generics" und Klassen erlaubt
+% The usage of VAR, TYPE and CONST to declare new types inside an object is allowed only inside
+% generics and classes.
 parser_e_cant_create_generics_of_this_type=03225_E_Dieser Typ kann nicht "generic" sein
 % Only Classes, Objects, Interfaces and Records are allowed to be used as generic.
 parser_w_no_lineinfo_use_switch=03226_W_Die LINEINFO Unit nicht manuell laden. Verwende statt dessen den Compilerschalter -gl
@@ -1134,9 +1142,9 @@ parser_e_label_outside_proc=03231_E_Die Address von Labels, die ausserhalb des a
 % It isn't allowed to take the address of labels outside the
 % current procedure.
 parser_e_initialized_not_for_external=03233_E_Extern deklarierte Variablen können nicht intialisiert werden 
-% Variables declared as external can not be initialized with a default value.
+% Variables declared as external cannot be initialized with a default value.
 parser_e_illegal_function_result=03234_E_Ungültiger Funktionsergebnistyp
-% Some types like file types can not be used as function result.
+% Some types like file types cannot be used as function result.
 parser_e_no_common_type=03235_E_"$1" und "$2" haben keinen gemeinsamen Typ
 % To perform an operation on integers, the compiler converts both operands
 % to their common type, which appears to be an invalid type. To determine the
@@ -1176,7 +1184,7 @@ parser_e_weak_external_not_supported=03248_E_Schwache externe Symbole werden fü
 % on the current cpu/OS target.
 parser_e_forward_mismatch=03249_E_Forward Typdefinition passt nicht
 % Classes and interfaces being defined forward must have the same type
-% when being implemented. A forward interface can not be changed into a class.
+% when being implemented. A forward interface cannot be changed into a class.
 parser_n_ignore_lower_visibility=03250_N_Die virtuelle Methode "$1" hat eine niedrigere Sichtbarkeit ($2) als die Elternklasse $3 ($4)
 % The virtual method overrides an method that is declared with a higher visibility. This might give
 % unexpected results. In case the new visibility is private than it might be that a call to inherited in a
@@ -1194,11 +1202,154 @@ parser_e_no_local_para_def=03252_E_Parameter können keine lokalen Typdeklaratio
 % refer to the same type definition in the procedure headers of the interface and implementation of a unit
 % (both procedure headers would define a separate type). Keep in mind that expressions such as
 % ``file of byte'' or ``string[50]'' also define a new type.
+parser_e_abstract_and_sealed_conflict=03253_E_Konflikt zwischen ABSTRACT und SEALED 
+% ABSTRACT and SEALED cannot be used together in one declaration
+parser_e_sealed_descendant=03254_E_Kann keinen Nachfahren der SEALED Klasse "$1" erzeugen
+% Sealed means that class cannot be derived by another class.
+parser_e_sealed_class_cannot_have_abstract_methods=03255_E_Eine SEALED Klasse kann keine ABSTRACT Methode haben
+% Sealed means that class cannot be derived. Therefore no one class is able to override an abstract method in a sealed class.
+parser_e_only_virtual_methods_final=03256_E_Nur virtuelle Methoden können final sein.
+% You are declaring a method as final, when it is not declared to be
+% virtual.
+parser_e_final_can_no_be_overridden=03257_E_Die finale Methode kann nicht überschrieben werden: "$1"
+% You are trying to \var{override} a virtual method of a parent class that does
+% not exist.
+parser_e_multiple_messages=03258_E_Pro Methode kann nur eine Nachricht verwendet werden.
+% It is not possible to associate multiple messages with a single method.
+parser_e_invalid_enumerator_identifier=03259_E_Ungültiger Aufzählungsbezeichner: "$1"
+% Only "MoveNext" and "Current" enumerator identifiers are supported.
+parser_e_enumerator_identifier_required=03260_E_Aufzählungsbezeichner notwendig
+% "MoveNext" or "Current" identifier must follow the \var{enumerator} modifier.
+parser_e_enumerator_movenext_is_not_valid=03261_E_Die Aufzählungs-pattern-methode MoveNext ist ungültig. Die Methode muss eine Funktion mit Rückgabetyp Boolean und ohne notwendige Argumente sein.
+% "MoveNext" enumerator pattern method must be a function with Boolean return type and no required arguments
+parser_e_enumerator_current_is_not_valid=03262_E_Die Aufzählungs-pattern-Eigenschaft "Current" ist ungültig. Die Eigenschaft benötigt einen "Getter"
+% "Current" enumerator pattern property must have a getter
+parser_e_only_one_enumerator_movenext=03263_E_Pro Klasse/Objekt ist nur eine Aufzählungsmethode "MoveNext" erlaubt
+% Class or Object can have only one enumerator MoveNext declaration.
+parser_e_only_one_enumerator_current=03264_E_Pro Klasse/Objekt ist nur eine Aufzählungseigenschaft "Current" erlaubt
+% Class or Object can have only one enumerator Current declaration.
+parser_e_for_in_loop_cannot_be_used_for_the_type=03265_E_For in Schleife kann nicht für den Typ "$1" verwendet werden
+% For in loop can be used not for all types. For example it cannot be used for the enumerations with jumps.
+parser_e_objc_requires_msgstr=03266_E_Objective-C Nachrichten erfordern, dass ihr Objective-C selector-Name mit der Direktive "message" angegeben wird
+% Objective-C messages require their Objective-C name (selector name) to be specified using the \var{message `someName:'} procedure directive.
+% While bindings to other languages automatically generate such names based on the identifier you use (by replacing
+% all underscores with colons), this is unsafe since nothing prevents an Objective-C method name to contain actual
+% colons.
+parser_e_objc_no_constructor_destructor=03267_E_Objective-C hat keine formalen Konstruktoren oder Destruktoren. Verwende die Nachrichten alloc, initXXX und dealloc
+% The Objective-C language does not have any constructors or destructors. While there are some messages with a similar
+% purpose (such as \var{init} and \var{dealloc}), these cannot be identified using automatic parsers and do not
+% guarantee anything like Pascal constructors/destructors (e.g., you have to take care of only calling ``designated''
+% inherited ``constructors''). For these reasons, we have opted to follow the standard Objective-C patterns for
+% instance creation/destruction.
+parser_e_message_string_too_long=03268_E_Der Name der Nachricht ist zu lang (max. 255 Zeichen)
+% Due to compiler implementation reasons, message names are currently limited to 255 characters.
+parser_e_objc_message_name_too_long=03269_E_Der Symbolname der Objective-C-Nachricht "$1" ist zu lang
+% Due to compiler implementation reasons, mangled message names (i.e., the symbol names used in the assembler
+% code) are currently limited to 255 characters.
+parser_h_no_objc_parent=03270_H_Definieren einer neuen Objective-C root-Klasse. Um sie von einer anderen root-Klasse abzuleiten (z.B. NSObject), gib diese als Elternklasse an
+% If no parent class is specified for an Object Pascal class, then it automatically derives from TObject.
+% Objective-C classes however do not automatically derive from NSObject, because one can have multiple
+% root classes in Objective-C. For example, in the Cocoa framework both NSObject and NSProxy are root classes.
+% Therefore, you have to explicitly define a parent class (such as NSObject) if you want to derive your
+% Objective-C class from it.
+parser_e_no_objc_published=03271_E_Objective-C Klassen können keinen Abschnitt published haben
+% In Object Pascal, ``published'' determines whether or not RTTI is generated. Since the Objective-C runtime always needs
+% RTTI for everything, this specified does not make sense for Objective-C classes.
+parser_f_need_objc=03272_F_Dieses Modul erfordert, dass der Objective-C Mode-Schalter übersetzt wird
+% This error indicates the use of Objective-C language features without an Objective-C mode switch
+% active. Enable one via the -M command line switch, or the {\$modeswitch x} directive.
+parser_e_must_use_override_objc=03273_E_Vererbte Methoden können nur in Objective-C überschrieben werden, füge "override" hinzu.
+parser_h_should_use_override_objc=03274_H_Vererbte Methoden können nur in Objective-C überschrieben werden, füge "override" hinzu
+% It is not possible to \var{reintroduce} methods in Objective-C like in Object Pascal. Methods with the same
+% name always map to the same virtual method entry. In order to make this clear in the source code,
+% the compiler always requires the \var{override} directive to be specified when implementing overriding
+% Objective-C methods in Pascal. If the implementation is external, this rule is relaxed because Objective-C
+% does not have any \var{override}-style keyword (since it's the default and only behaviour in that language),
+% which makes it hard for automated header conversion tools to include it everywhere.
+parser_e_objc_message_name_changed=03275_E_Der Nachrichtenname "$1" in der vererbten Klasse unterscheidet sich vom Nachrichtennamen "$2" in der aktuellen Klasse
+% An overriding Objective-C method cannot have a different message name than an inherited method. The reason
+% is that these message names uniquely define the message to the Objective-C runtime, which means that
+% giving them a different message name breaks the ``override'' semantics.
+parser_e_no_objc_unique=03276_E_Noch können eindeutige Kopien von Objective-C Typen nicht erstellt werden
+% Duplicating an Objective-C type using \var{type x = type y;} is not yet supported. You may be able to
+% obtain the desired effect using \var{type x = objcclass(y) end;} instead.
+parser_e_no_category_as_types=03277_E_Objective-C Kategorien können nicht als Typen benutzt werden
+% It is not possible to declare a variable as an instance of an Objective-C category. A
+% category adds methods to the scope of an existing class, but does not define a type by itself.
+parser_e_no_category_override=03278_E_Kategorien überschreiben Methoden nicht, sondern ersetzen sie. "reintroduce" benutzen
+parser_e_must_use_reintroduce_objc=03279_E_Ersetzte Methoden können in Objective-C nur wieder eingeführt werden, füge "reintroduce" hinzu
+parser_h_should_use_reintroduce_objc=03280_H_Ersetzte Methoden können in Objective-C nur wieder eingeführt werden, füge "reintroduce" hinzu
+% A category replaces an existing method in an Objective-C class, rather than that it overrides it.
+% Calling an inherited method from an category method will call that method in
+% the extended class' parent, not in the extended class itself. The
+% replaced method in the original class is basically lost, and can no longer be
+% called or referred to. This behaviour corresponds somewhat more closely to
+% \var{reintroduce} than to \var{override} (although in case of \var{reintroduce}
+% in Object Pascal, hidden methods are still reachable via inherited).
+parser_e_implements_getter_not_default_cc=03281_E_Getter für das Interface implements müssen die voreingestellte calling convention des Ziels benutzen
+% Interface getters are called via a helper in the run time library, and hence
+% have to use the default calling convention for the target (\var{register} on
+% i386 and x86\_64, \var{stdcall} on other architectures).
+parser_e_no_refcounted_typed_file=03282_E_Typisierte Dateien können keine reference-counted Typen enthalten
+% The data in a typed file cannot be of a reference counted type (such as
+% \var{ansistring} or a record containing a field that is reference counted).
+parser_e_operator_not_overloaded_2=03283_E_Überladenener Operator nicht vorhanden: $2 "$1"
+% You are trying to use an overloaded operator when it is not overloaded for
+% this type.
+parser_e_operator_not_overloaded_3=03284_E_Überladenener Operator nicht vorhanden: "$1" $2 "$3"
+% You are trying to use an overloaded operator when it is not overloaded for
+% this type.
+parser_e_more_array_elements_expected=03285_E_Erwarte ein weiteres Element für Array $1 
+% When declaring a typed constant array, you provided to few elements to initialize the array
+parser_e_string_const_too_long=03286_E_Stringkonstante zu lang, so lange ansistrings ausgeschaltet sind
+% Only when a piece of code is compiled with ansistrings enabled (\var{\{\$H+\}}), string constants
+% longer than 255 characters are allowed.
+parser_e_invalid_univ_para=03287_E_Typ kann nicht als "univ" Parameter verwendet werden, weil seine Größe zur Zeit der Übersetzung unbekannt ist: "$1"
+% \var{univ} parameters are compatible with all values of the same size, but this
+% cannot be checked in case a parameter's size is unknown at compile time.
+parser_e_only_one_class_constructor_allowed=03288_E_In der Klasse "$1" darf nur ein Klassenkonstruktor deklariert werden
+% You are trying to declare more than one class constructor but only one class constructor can be declared.
+parser_e_only_one_class_destructor_allowed=03289_E_In der Klasse "$1" darf nur ein Klassendestruktor deklariert werden
+% You are trying to declare more than one class destructor but only one class destructor can be declared.
+parser_e_no_paras_for_class_constructor=03290_E_Ein Klassenkonstruktur darf keine Parameter haben
+% You are declaring a class constructor with a parameter list. Class constructor methods
+% cannot have parameters.
+parser_e_no_paras_for_class_destructor=03291_E_Ein Klassendestruktur darf keine Parameter haben
+% You are declaring a class destructor with a parameter list. Class destructor methods
+% cannot have parameters.
+parser_f_modeswitch_objc_required=03292_F_Dieses Konstrukt erfordert, dass der Modenschalter \{\$modeswitch objectivec1\} aktiv ist
+% Objective-Pascal constructs are not supported when \{\$modeswitch ObjectiveC1\}
+% is not active.
+parser_e_widestring_to_ansi_compile_time=03293_E_Eine Unicodechar/string Konstante zur Zeit der Übersetzung nicht in eine ansi/shortstring Konstante konvertiert werden
+% It is not possible to use unicodechar and unicodestring constants in
+% constant expressions that have to be converted into an ansistring or shortstring
+% at compile time, for example inside typed constants. The reason is that the
+% compiler cannot know what the actual ansi encoding will be at run time.
+parser_e_objc_enumerator_2_0=03294_E_Objective-Pascal For-in Schleifen erfordern, dass der Modenschalter \{\$modeswitch ObjectiveC1\} aktiv ist
+% Objective-C ``fast enumeration'' support was added in Objective-C 2.0, and
+% hence the appropriate modeswitch has to be activated to expose this feature.
+% Note that Objective-C 2.0 programs require Mac OS X 10.5 or later.
+parser_e_objc_missing_enumeration_defs=03295_E_Der Kompiler findet die Typen NSFastEnumerationProtocol oder NSFastEnumerationState nicht in der Unit CocoaAll
+% Objective-C for-in loops (fast enumeration) require that the compiler can
+% find a unit called CocoaAll that contains definitions for the
+% NSFastEnumerationProtocol and NSFastEnumerationState types. If you get this
+% error, most likely the compiler is finding and loading an alternate CocoaAll
+% unit.
+parser_e_no_procvarnested_const=03296_E_Typisierte Konstanten des Typs 'procedure is nested' können nur mit NIL und globalen Prozeduren/Funktionen initialisiert werden
+% A nested procedural variable consists of two components: the address of the
+% procedure/function to call (which is always known at compile time), and also
+% a parent frame pointer (which is never known at compile time) in case the
+% procedural variable contains a reference to a nested procedure/function.
+% Therefore such typed constants can only be initialized with global
+% functions/procedures since these do not require a parent frame pointer.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Type Checking
 #
-# 04087 is the last used one
+# 04095 is the last used one
 #
 % \section{Type checking errors}
 % This section lists all errors that can occur when type checking is
@@ -1273,7 +1424,7 @@ type_w_convert_real_2_comp=04014_W_Automatische Typumwandlung von Fliesskommatyp
 type_h_use_div_for_int=04015_H_Verwenden sie DIV um ein Integer-Ergebnis zu erhalten
 % When hints are on, then an integer division with the '/' operator will
 % produce this message, because the result will then be of type real.
-type_e_strict_var_string_violation=04016_E_Stringtypen passen nicht zueinander, da in "$V+"-Modus
+type_e_strict_var_string_violation=04016_E_Stringtypen müssen im "$V+"-Modus exakt übereinstimmen
 % When compiling in \var{\{\$V+\}} mode, the string you pass as a parameter
 % should be of the exact same type as the declared parameter of the procedure.
 type_e_succ_and_pred_enums_with_assign_not_possible=04017_E_Succ oder Pred kann nicht auf Aufzählungen mit Zuweisungen angewendet werden
@@ -1482,7 +1633,7 @@ type_w_pointer_to_signed=04082_W_Die Konvertierung von Pointern in einen Integer
 type_interface_has_no_guid=04083_E_Interface Typ $1 hat keine gültige GUID
 % When applying the as-operator to an interface or class, the desired interface (i.e. the right operand of the
 % as-operator) must have a valid GUID.
-type_e_invalid_objc_selector_name=04084_E_Ungültiger Objective-C-Selector-Name
+type_e_invalid_objc_selector_name=04084_E_Ungültiger Objective-C-Selector-Name "$1"
 % An Objective-C selector cannot be empty, must be a valid identifier or a single colon,
 % and if it contains at least one colon it must also end in one.
 type_e_expected_objc_method_but_got=04085_E_Erwartete eine Objective-C-Methode, erhielt aber $1
@@ -1496,11 +1647,60 @@ type_e_no_type_info=04087_E_Für diesen Typ steht keine Typ-Information zu Verf
 % Type information is not generated for some types, such as enumerations with gaps
 % in their value range (this includes enumerations whose lower bound is different
 % from zero).
+type_e_ordinal_or_string_expr_expected=04088_E_Ausdruck mit ordinalem Typ oder Zeichenkette erwartet
+% The expression must be an ordinal or string type.
+type_e_string_expr_expected=04089_E_Ausdruck mit Zeichenkette erwartet
+% The expression must be a string type.
+type_w_zero_to_nil=04090_W_Konvertiere 0 zu NIL
+% Use NIL rather than 0 when initialising a pointer. 
+type_e_protocol_type_expected=04091_E_Objective-C Protokolltyp erwartet, erhielt aber "$1"
+% The compiler expected a protocol type name, but found something else.
+type_e_objc_type_unsupported=04092_E_Der Typ "$1" wird nicht für die Verwendung mit der Objective-C Laufzeitumgebung unterstützt.
+% Objective-C makes extensive use of run time type information (RTTI). This format
+% is defined by the maintainers of the run time and can therefore not be adapted
+% to all possible Object Pascal types. In particular, types that depend on
+% reference counting by the compiler (such as ansistrings and certain kinds of
+% interfaces) cannot be used as fields of Objective-C classes, cannot be
+% directly passed to Objective-C methods, and cannot be encoded using \var{objc\_encode}.
+type_e_class_or_objcclass_type_expected=04093_E_Klasse oder Objective-C Klasse als Typ erwartet, erhielt aber "$1"
+% It is only possible to create class reference types of \var{class} and \var{objcclass}
+type_e_objcclass_type_expected=04094_E_Objective-C Klasse als Typ erwartet
+% The compiler expected an \var{objcclass} type
+type_w_procvar_univ_conflicting_para=04095_W_Erzwungener univ Parameter Typ in einer prozeduralen Variablen kann einen Absturz oder SpeicherKorruption verursachen: $1 auf $2
+% \var{univ} parameters are implicitly compatible with all types of the same size,
+% also in procedural variable definitions. That means that the following code is
+% legal, because \var{single} and \var{longint} have the same size:
+% \begin{verbatim}
+% {$mode macpas}
+% Type
+%   TIntProc = procedure (l: univ longint);
+%
+%   procedure test(s: single);
+%     begin
+%       writeln(s);
+%     end;
+%
+%   var
+%     p: TIntProc;
+%   begin
+%     p:=test;
+%     p(4);
+%   end.
+% \end{verbatim}
+% This code may however crash on platforms that pass integers in registers and
+% floating point values on the stack, because then the stack will be unbalanced.
+% Note that this warning will not flagg all potentially dangerous situations.
+% when \var{test} returns.
+type_e_generics_cannot_reference_itself=04096_E_Typ-Parameter bei der Spezialisation von Generics können den aktuel spezialisierten Typ nicht referenzieren
+% Recursive specializations of generics like \var{Type MyType = specialize MyGeneric<MyType>;} are not possible.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Symtable
 #
-# 05064 is the last used one
+# 05080 is the last used one
 #
 % \section{Symbol handling}
 % This section lists all the messages that concern the handling of symbols.
@@ -1671,11 +1871,82 @@ sym_w_experimental_symbol=05063_W_Symbol "$1" ist experimentell
 sym_w_forward_not_resolved=05064_W_Forward Deklaration "$1" wird nicht aufgelöst und deshalb als extern angenommen
 % This happens if you declare a function in the \var{interface} of a unit in macpas mode,
 % but do not implement it.
+sym_w_library_symbol=05065_W_Symbol "$1" gehört zu einer Bibliothek
+% This means that a symbol (a variable, routine, etc...) which is
+% declared as \var{library} is used. Library symbols may not be
+% available in other libraries.
+sym_w_deprecated_symbol_with_msg=05066_W_Symbol "$1" ist veraltet: "$2"
+% This means that a symbol (a variable, routine, etc...) which is
+% declared as \var{deprecated} is used. Deprecated symbols may no longer
+% be available in newer versions of the unit / library. Use of this symbol
+% should be avoided as much as possible.
+sym_e_no_enumerator=05067_E_Kann keinen Zähler für den Typ "$1" finden
+% This means that compiler cannot find an apropriate enumerator to use in the for-in loop.
+% To create an enumerator you need to defind an operator enumerator or add a public or published
+% GetEnumerator method to the class or object definition.
+sym_e_no_enumerator_move=05068_E_Kann keine Methode "MoveNext" in der Aufzählung "$1" finden
+% This means that compiler cannot find a public MoveNext method with the Boolean return type in
+% the enumerator class or object definition.
+sym_e_no_enumerator_current=05069_E_Kann keine Eigenschaft "Current" in der Aufzählung "$1" finden
+% This means that compiler cannot find a public Current property in  the enumerator class or object
+% definition.
+sym_e_objc_para_mismatch=05070_E_Die Anzahl der deklarierten Parameter und die Anzahl der Doppelpunkte in der Nachrichtenzeichenkette stimmen nicht überein
+% In Objective-C, a message name automatically contains as many colons as parameters.
+% In order to prevent mistakes when specifying the message name in FPC, the compiler
+% checks whether this is also the case here. Note that in case of messages taking a
+% variable number of arguments translated to FPC via an \var{array of const} parameter,
+% this final \var{array of const} parameter is not counted. Neither are the hidden
+% \var{self} and \var{\_cmd} parameters.
+sym_n_private_type_not_used=05071_N_Privater Typ "$1.$2" wird nie benutzt
+% The indicated private type is declared but is never used in the code.
+sym_n_private_const_not_used=05072_N_Private Konstante "$1.$2" wird nie benutzt
+% The indicated private const is declared but is never used in the code.
+sym_n_private_property_not_used=05073_N_Private Eigenschaft "$1.$2" wird nie benutzt
+% The indicated private property is declared but is never used in the code.
+sym_w_deprecated_unit=05074_W_Unit "$1" ist veraltet
+% This means that a unit which is
+% declared as \var{deprecated} is used. Deprecated units may no longer
+% be available in newer versions of the library. Use of this unit
+% should be avoided as much as possible.
+sym_w_deprecated_unit_with_msg=05075_W_Unit "$1" ist veraltet: "$2"
+% This means that a unit which is
+% declared as \var{deprecated} is used. Deprecated units may no longer
+% be available in newer versions of the library. Use of this unit
+% should be avoided as much as possible.
+sym_w_non_portable_unit=05076_W_Unit "$1" ist plattformabhängig
+% This means that a unit which is
+% declared as \var{platform} is used. This unit use
+% and availability is platform specific and should not be used
+% if the source code must be portable.
+sym_w_library_unit=05077_W_Unit "$1" gehört zu einer Bibliothek
+% This means that a unit which is
+% declared as \var{library} is used. Library units may not be
+% available in other libraries.
+sym_w_non_implemented_unit=05078_W_Unit "$1" ist nicht implementiert
+% This means that a unit which is
+% declared as \var{unimplemented} is used. This unit is defined,
+% but is not yet implemented on this specific platform.
+sym_w_experimental_unit=05079_W_Unit "$1" ist experimentell
+% This means that a unit which is
+% declared as \var{experimental} is used. Experimental units
+% might disappear or change semantics in future versions. Usage of this unit
+% should be avoided as much as possible.
+sym_e_objc_formal_class_not_resolved=05080_E_Die vollständige Definition der formal deklarierten ObjC-Klasse "$1" fehlt in diesem Geltungsbereich
+% Objecive-C classes can be imported formally, without using the the unit in which it is fully declared.
+% This enables making forward references to such classes and breaking circular dependencies amongst units.
+% However, as soon as you wish to actually do something with an entity of this class type (such as
+% access one of its fields, send a message to it, or use it to inherit from), the compiler requires the full definition
+% of the class to be in scope.
+sym_e_interprocgoto_into_init_final_code_not_allowed=05081_E_Gotos in die 'initialization'- oder 'finalization'-Blöcke einer Unit sind nicht erlaubt
+% Gotos into initialization or finalization blockse of units are not allowed.
+%
 % \end{description}
+# EndOfTeX
+
 #
 # Codegenerator
 #
-# 06049 is the last used one
+# 06050 is the last used one
 #
 % \section{Code generator messages}
 % This section lists all messages that can be displayed if the code
@@ -1802,13 +2073,24 @@ cg_h_inherited_ignored=06048_H_Geerbter Aufruf einer abstrakten Methode ignorier
 cg_e_goto_label_not_found=06049_E_Goto Label "$1": Das Label ist nicht definiert oder wurde bei der Optimierung entfernt
 % The label used in the goto definition is not defined or optimized away by the
 % unreachable code elemination.
+cg_f_unknown_type_in_unit=06050_F_Kann den Typ "$1" nicht in der Unit "$2" finden. Überprüfe, ob die korrekte Laufzeit-Bibliothek verwendet wird
+% The compiler expects that the runtime library contains certain type definitions. If you see this error
+% and you didn't change the runtime library code, it's very likely that the runtime library
+% you're using doesn't match the compiler in use. If you changed the runtime library this error means
+% that you removed a type which the compiler needs for internal use.
+cg_e_interprocedural_goto_only_to_outer_scope_allowed=06051_E_Interprozedurale gotos sind nur in äußere Subroutines erlaubt
+% Gotos between subroutines are only allowed if the goto jumps from an inner to an outer subroutine or
+% from a subroutine to the main program
+cg_e_labels_cannot_defined_outside_declaration_scope=06052_E_ Label müssen im selben Bereich definiert werden, in dem sie deklariert werden
+% In ISO mode, labels must be defined in the same scope as they are declared.
+%
 % \end{description}
 # EndOfTeX
 
 #
 # Assembler reader
 #
-# 07107 is the last used one
+# 07109 is the last used one
 #
 asmr_d_start_reading=07000_DL_Starte $1 Stil Assembler Parsen
 % This informs you that an assembler block is being parsed
@@ -1847,7 +2129,7 @@ asmr_e_relocatable_symbol_not_allowed=07013_E_Verschiebbares Symbol ist nicht zu
 asmr_e_invalid_reference_syntax=07014_E_Ungültige Verweis-Syntax
 % There is an error in the reference.
 asmr_e_local_para_unreachable=07015_E_Sie können "$1" von diesem Code aus nicht erreichen
-% You can not read directly the value of a local variable or parameter
+% You cannot read directly the value of a local variable or parameter
 % of a higher level procedure in assembler code (except for
 % local assembler code without parameter nor locals).
 asmr_e_local_label_not_allowed_as_ref=07016_E_Lokale Symbole/Labels sind nicht als Referenz zulässig
@@ -2054,10 +2336,17 @@ asmr_e_need_pic_ref=07107_E_Erzeuge eigentlich PIC, aber die Referenz ist nicht
 % The compiler has been configured to generate position-independent code
 % (PIC), but there are position-dependent references in the current
 % handwritten assembler instruction.
+asmr_e_mixing_regtypes=07108_E_Alle Register in einem Registerset müssen in T und Breite übereinstimmen
+% Instructions on the ARM architecture that take a register set as argument require that all registers
+% in this set are of the same kind (e.g., integer, vfp) and width (e.g., single precision, double precision).
+asmr_e_empty_regset=07109_E_Ein Registerset kann nicht leer sein
+% Instructions on the ARM architecture that take a register set as argument require that such a set
+% contains at least one register.
+
 #
 # Assembler/binary writers
 #
-# 08020 is the last used one
+# 08021 is the last used one
 #
 asmw_f_too_many_asm_files=08000_F_Zu viele Assembler-Dateien
 % With smartlinking enabled, there are too many assembler
@@ -2175,10 +2464,11 @@ exec_e_cant_call_resource_compiler=09030_E_Der Resource-Compiler "$1" kann nicht
 % a script that can be used to assemble, compile resources and link or
 % postprocess the program.
 exec_e_cant_open_resource_file=09031_E_Kann die Resourcedatei "$1" nicht öffnen
-% An error occurred resource file can not be opened.
+% An error occurred resource file cannot be opened.
 exec_e_cant_write_resource_file=09032_E_Kann die Resourcedatei "$1" nicht schreiben
-% An error occurred resource file can not be written.
-%\end{description}
+% An error occurred resource file cannot be written.
+%
+% \end{description}
 # EndOfTeX
 
 #
@@ -2205,13 +2495,14 @@ execinfo_x_stackreserve=09133_X_Stack Bereich "reserved": $1 Bytes
 % Informational message showing the stack size that the compiler reserved for the executable.
 execinfo_x_stackcommit=09134_X_Stack Bereich "committed": $1 Bytes
 % Informational message showing the stack size that the compiler committed for the executable.
-%\end{description}
+%
+% \end{description}
 # EndOfTeX
 
 #
 # Internal linker messages
 #
-# 09200 is the last used one
+# 09201 is the last used one
 #
 # BeginOfTeX
 % \section{Linker messages}
@@ -2223,13 +2514,14 @@ link_w_32bit_absolute_reloc=09201_W_Object Daei "$1" enthält eine 32-bit absolu
 % Warning when 64-bit object file contains 32-bit absolute relocations.
 % In such case an executable image can be loaded into lower 4Gb of
 % address space only.
-%\end{description}
+%
+% \end{description}
 # EndOfTeX
 
 #
 # Unit loading
 #
-# 10061 is the last used one
+# 10062 is the last used one
 #
 # BeginOfTeX
 % \section{Unit loading messages.}
@@ -2318,7 +2610,7 @@ unit_u_recompile_crc_change=10028_U_Übersetze $1 erneut, Prüfsumme für $2 hat
 unit_u_recompile_source_found_alone=10029_U_Übersetze "$1", nur Quellcode gefunden
 % When you use the \var{-vu} flag, these messages tell you why the current
 % unit is recompiled.
-unit_u_recompile_staticlib_is_older=10030_U_Übersetze Unit erneut, statische Biblothek ist älter als PPU-Datei
+unit_u_recompile_staticlib_is_older=10030_U_Übersetze Unit erneut, statische Bibliothek ist älter als PPU-Datei
 % When you use the \var{-vu} flag, the compiler warns if the static library
 % of the unit is older than the unit file itself.
 unit_u_recompile_sharedlib_is_older=10031_U_Übersetze Unit erneut, gemeinsame Bibliothek ist älter als PPU-Datei
@@ -2357,7 +2649,7 @@ unit_u_check_time=10037_U_PPU prüfe Datei $1 Zeit $2
 unit_w_cant_compile_unit_with_changed_incfile=10040_W_Kann Unit $1 nicht erneut übersetzen, aber geänderte Include-Datei gefunden
 % A unit was found to have modified include files, but
 % some source files were not found, so recompilation is impossible.
-unit_u_source_modified=10041_U_Datei $1 ist neuer als die PPU Datei $2
+unit_u_source_modified=10041_U_Datei $1 ist neuer als die, aus der die PPU Datei $2 erzeugt wird
 % A modified source file for a compiler unit was found.
 unit_u_ppu_invalid_fpumode=10042_U_Versuch eine Unit zu verwenden, die in einem anderen FPU Mode übersetzt wurde
 % Trying to compile code while using units which were not compiled with
@@ -2380,7 +2672,7 @@ unit_u_implementation_crc_changed=10046_U_Geänderte Implementation CRC für Uni
 unit_u_finished_compiling=10047_U_Übersetzen der Unit $1 beendet
 % When you use the \var{-vu} flag, the compiler warns that it
 % has finished compiling the unit.
-unit_u_add_depend_to=10048_U_Füge die Abhängigkeit von $1 von $2 dazu
+unit_u_add_depend_to=10048_U_Abhängigkeit hinzufügen: $1 hängt von $2 ab
 % When you use the \var{-vu} flag, the compiler warns that it
 % has added a dependency between the two units.
 unit_u_no_reload_is_caller=10049_U_Kein erneutes Laden, Unit $1 ist die Aufrufende
@@ -2422,17 +2714,23 @@ unit_u_skipping_reresolving_unit=10059_U_Erneutes Resolving der Unit $1 wird üb
 unit_u_unload_resunit=10060_U_Entlade die Resource-Unit $1 (wird nicht benötigt) 
 % When you use the \var{-vu} flag, the compiler warns that it is unloading the 
 % resource handling unit, since no resources are used.
-% \end{description}
 unit_e_different_wpo_file=10061_E_Unit $1 wurde mit einer anderen Feedback-Eingabe ($2, $3) für die Gesamtprogramm-Optimierung (wpo) übersetzt. Bitte erneut ohne wpo oder mit der gleichen wpo-Feedback-Eingabe-Datei übersetzen
 % When a unit has been compiled using a particular whole program optimization (wpo) feedback file (\var{-FW<x>} \var{-OW<x>}),
 % this compiled version of the unit is specialised for that particular compilation scenario and cannot be used in
 % any other context. It has to be recompiled before you can use it in another program or with another wpo feedback input file.
+unit_u_indirect_crc_changed=10062_U_Die CRC des indirekten Interface (Objekte/Klassen) für die unit $1 hat sich geändert
+% When you use the \var{-vu} flag, the compiler warns that the
+% indirect CRC calculated for the unit (this is the CRC of all classes/objects/interfaces/$\ldots$
+% in the interfaces of units directly or indirectly used by this unit in the interface) has been changed after the
+% implementation has been parsed.
+%
+% \end{description}
 # EndOfTeX
 
 #
-#  Options
+# Options
 #
-# 11046 is the last used one
+# 11048 is the last used one
 #
 option_usage=11000_O_$1 [Optionen] <Eingabedatei> [Optionen]
 # BeginOfTeX
@@ -2448,7 +2746,7 @@ option_only_one_source_support=11001_W_Es wird nur eine Quelldatei unterstützt.
 option_def_only_for_os2=11002_W_DEF-Datei kann nur für OS/2 erzeugt werden
 % This option can only be specified when you're compiling for OS/2.
 option_no_nested_response_file=11003_E_Verschachtelte Response-Dateien werden nicht unterstützt
-% You can not nest response files with the \var{@file} command line option.
+% You cannot nest response files with the \var{@file} command line option.
 option_no_source_found=11004_F_Kein Name für Quelldatei auf der Kommandzeile
 % The compiler expects a source file name on the command line.
 option_no_option_found=11005_N_Keine Angaben in Konfigurationsdatei "$1" gefunden
@@ -2500,7 +2798,7 @@ option_switch_bin_to_src_assembler=11020_N_Schalte Assembler auf den Standard-As
 % -a switch, which can't be used with a binary assembler writer.
 option_incompatible_asm=11021_W_Das gewählte Assembler-Ausgabeformat "$1" ist nicht mit "$2" kompatibel
 option_asm_forced=11022_W_Verwendung des Assemblers "$1" erzwungen
-% The assembler output selected can not generate
+% The assembler output selected cannot generate
 % object files with the correct format. Therefore, the
 % default assembler for this target is used instead.
 option_using_file=11026_T_Optionen werden aus der Datei $1 gelesen
@@ -2534,7 +2832,7 @@ option_code_page_not_available=11039_E_Unbekannte code page
 % The requested code page is not in that list. You will need to recompile
 % the compiler with support for the codepage you need.
 option_config_is_dir=11040_F_Konfigurationsdatei $1 ist ein Verzeichnis
-% Directories can not be used as configuration files.
+% Directories cannot be used as configuration files.
 option_confict_asm_debug=11041_W_Die gewählte Assembler-Ausgabe "$1" kann kein Debug-Info erzeugen, Debugging ist ausgeschaltet
 % The selected assembler output cannot generate
 % debugging information, debugging option is therefore disabled.
@@ -2552,12 +2850,18 @@ option_unsupported_target_for_feature=11045_F_Das Feature "$1" wird für die aus
 option_dwarf_smart_linking=11046_N_DWARF Debug-Information kann auf dieser Zielplattform nicht zusammen mit Smartlinking benutzt werden, es wird auf statisches Linken umgeschaltet
 % Smart linking is currently incompatble with DWARF debug information on most
 % platforms, so smart linking is disabled in such cases.
-
-%\end{description}
+option_ignored_target=11047_W_Option "$1" wird für die ausgewählte Zielplattform ignoriert
+% Not all options are supported or implemented for all target platforms. This message informs you that a chosen
+% option is ignored for the currently selected target platform.
+option_debug_external_unsupported=11048_W_Schalte externe Debuginformation aus, weil es für die gewählte Kombination Ziel/Debugformat nicht unterstützt wird
+% Not all debug formats can be stored in an external file on all platforms. In particular, on
+% Mac OS X only DWARF debug information can be stored externally.
+%
+% \end{description}
 # EndOfTeX
 
 #
-#  Whole program optimization
+# Whole program optimization
 #
 # 12019 is the last used one
 #
@@ -2629,16 +2933,16 @@ wpo_symbol_live_info_needs_smart_linking=12018_E_Die Sammlung der "symbol livene
 % actually used or not. So in that case all symbols will be seen as live, which makes this optimization ineffective.
 wpo_cant_create_feedback_file=12019_E_Die angegebene Feedback-Eingabe-Datei "$1" für die Gesamtprogramm-Optimierung kann nicht erzeugt werden
 % The compiler is unable to create the file specified using the -FW parameter to store the whole program optimisation information.
-%\end{description}
+%
+% \end{description}
 # EndOfTeX
 
-
 #
 # Logo (option -l)
 #
 option_logo=11023_[
 Free Pascal Compiler Version $FPCFULLVERSION [$FPCDATE] für $FPCTARGET
-Copyright (c) 1993-2009 Florian Klämpfl
+Copyright (c) 1993-2010 Florian Klämpfl
 ]
 
 #
@@ -2688,7 +2992,9 @@ oder
 # line, the current possibilities are :
 #    * = every target
 #    3 = 80x86 targets
+#    4 = x86_64
 #    6 = 680x0 targets
+#    A = ARM
 #    e = in extended debug mode only
 #    P = PowerPC targets
 #    S = Sparc targets
@@ -2712,6 +3018,7 @@ option_help_pages=11025_[
 **1A<x>_Ausgabe Format:
 **2Adefault_Benutze den "default" Assembler
 3*2Aas_Assembliere mit Hilfe von GNU AS
+3*2Amacho_Mach-O (Darwin, Intel 32 bit) mit Hilfe des internen Schreibers
 3*2Anasmcoff_COFF (Go32v2) Datei mit Hilfe von Nasm
 3*2Anasmelf_ELF32 (Linux) Datei mit Hilfe von Nasm
 3*2Anasmwin32_Win32 Object Datei mit Hilfe von Nasm
@@ -2720,9 +3027,9 @@ option_help_pages=11025_[
 3*2Anasmobj_Obj Datei mit Hilfe von Nasm
 3*2Amasm_Obj Datei mit Hilfe von Masm (Microsoft)
 3*2Atasm_Obj Datei mit Hilfe von Tasm (Borland)
-3*2Aelf_ELF32 (Linux) mit Hilfe vom internen Schreiber
-3*2Acoff_COFF (Go32v2) mit Hilfe vom internen Schreiber
-3*2Apecoff_PE_COFF (Win32) mit Hilfe vom internen Schreiber
+3*2Aelf_ELF32 (Linux) mit Hilfe des internen Schreibers
+3*2Acoff_COFF (Go32v2) mit Hilfe des internen Schreibers
+3*2Apecoff_PE_COFF (Win32) mit Hilfe des internen Schreibers
 4*2Aas_Assembliere mit Hilfe von GNU AS
 6*2Aas_Unix o-file mit Hilfe von GNU AS
 6*2Agas_GNU Motorola Assembler
@@ -2735,6 +3042,7 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 **2bl_Erzeuge Info zu lokalen Symbolen
 **1B_Erzeuge alle Module (Build)
 **1C<x>_Optionen für Code-Erzeugung:
+**2C3<x>_Schalte ieee-Prüfung von Konstanten ein
 **2Ca<x>_Wähle ABI aus; fpc -i gibt die möglichen Werte aus
 **2Cb_Erzeuge "big-endian" Code
 **2Cc<x>_Setze "default calling convention" zu <x>
@@ -2791,6 +3099,7 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 *g2go<x>_Setze Optionen für die Debug Informationen
 *g3godwarfsets_Schalte DWARF Debug Informationen für Mengen (sets) ein (verhindert debugging mit gdb < 6.5)
 *g3gostabsabsincludes_ Absolute/volle Include-Datei-Pfade in Stabs speichern
+*g3godwarfmethodclassprefix_ Stelle Methodennamen in DWARF den Namen der Klasse voran
 *g2gp_Erhalte Gross/Kleinschreibung in Stabs-Symbolnamen
 *g2gs_Erzeuge Stabs-Debug-Informationen
 *g2gt_Lösche lokale Variablen (um eine Verwendung ohne Initialisierung zu finden)
@@ -2855,7 +3164,6 @@ S*2Aas_Assembliere mit Hilfe von GNU AS
 **3SIcorba_CORBA kompatibles Interface
 **2Sm_Unterstütze Makros wie in C (global)
 **2So_Sei TP/BP 7.0 kompatibel (wie -Mtp)
-**2Sp_Sei gpc-kompatibel (wie -Mgpc)
 **2Ss_Konstruktor- und Destruktorname müssen "Init" und "Done" sein
 **2St_Erlaube Schlüsselwort static in Objekten
 **2Sx_Exception Schlüsselwörter einschalten (Voreinstellung in Delphi/ObjFPC Moden)
@@ -2926,6 +3234,8 @@ P*2WC_Spezifiziere "console type application" (Classic Mac OS)
 3*2WD_Benutze DEFFILE um Funktionen der DLL oder EXE zu exportieren (Windows)
 A*2WD_Benutze DEFFILE um Funktionen der DLL oder EXE zu exportieren (Windows)
 3*2We_Benutze externe Resourcen (Darwin)
+4*2We_Benutze externe Resourcen (Darwin)
+A*2We_Benutze externe Resourcen (Darwin)
 P*2We_Benutze externe Resourcen (Darwin)
 p*2We_Benutze externe resoResourcenurces (Darwin)
 3*2WF_Spezifiziere "full-screen type application" (EMX, OS/2)

+ 31 - 31
compiler/msg/errore.msg

@@ -454,7 +454,7 @@ parser_n_duplicate_enum=03031_N_Values in enumeration types have to be ascending
 % \end{verbatim}
 % The second declaration would produce an error. \var{A\_UAS} needs to have a
 % value higher than \var{A\_E}, i.e. at least 7.
-parser_e_no_with_for_variable_in_other_segments=03033_E_With can not be used for variables in a different segment
+parser_e_no_with_for_variable_in_other_segments=03033_E_With cannot be used for variables in a different segment
 % With stores a variable locally on the stack,
 % but this is not possible if the variable belongs to another segment.
 parser_e_too_much_lexlevel=03034_E_function nesting > 31
@@ -631,7 +631,7 @@ parser_e_operator_not_overloaded=03082_E_Operator is not overloaded
 % You're trying to use an overloaded operator when it is not overloaded for
 % this type.
 parser_e_no_such_assignment=03083_E_Impossible to overload assignment for equal types
-% You can not overload assignment for types
+% You cannot overload assignment for types
 % that the compiler considers as equal.
 parser_e_overload_impossible=03084_E_Impossible operator overload
 % The combination of operator, arguments and return type are
@@ -839,7 +839,7 @@ parser_e_cant_use_inittable_here=03151_E_Data types which require initialization
 % code which is implicitly generated by the compiler. Such data types
 % can't be used in the variant part of a record.
 parser_e_resourcestring_only_sg=03152_E_Resourcestrings can be only static or global
-% Resourcestring can not be declared local, only global or using the static
+% Resourcestring cannot be declared local, only global or using the static
 % directive.
 parser_e_exit_with_argument_not__possible=03153_E_Exit with argument can't be used here
 % An exit statement with an argument for the return value can't be used here. This
@@ -951,7 +951,7 @@ parser_e_no_procvarobj_const=03183_E_Typed constants of the type "procedure of o
 % You can't assign the address of a method to a typed constant which has a
 % 'procedure of object' type, because such a constant requires two addresses:
 % that of the method (which is known at compile time) and that of the object or
-% class instance it operates on (which can not be known at compile time).
+% class instance it operates on (which cannot be known at compile time).
 parser_e_default_value_only_one_para=03184_E_Default value can only be assigned to one parameter
 % It is not possible to specify a default value for several parameters at once.
 % The following is invalid:
@@ -970,7 +970,7 @@ parser_h_c_arrays_are_references=03187_H_C arrays are passed by reference
 % Any array passed to a C function is passed
 % by a pointer (i.e. by reference).
 parser_e_C_array_of_const_must_be_last=03188_E_C array of const must be the last argument
-% You can not add any other argument after an \var{array of const} for
+% You cannot add any other argument after an \var{array of const} for
 % \var{cdecl} functions, as the size pushed on stack for this argument is
 % not known.
 parser_h_type_redef=03189_H_Type "$1" redefinition
@@ -982,7 +982,7 @@ parser_w_cdecl_has_no_high=03190_W_cdecl'ared functions have no high parameter
 parser_w_cdecl_no_openstring=03191_W_cdecl'ared functions do not support open strings
 % Openstring is not supported for functions that have the \var{cdecl} modifier.
 parser_e_initialized_not_for_threadvar=03192_E_Cannot initialize variables declared as threadvar
-% Variables declared as threadvar can not be initialized with a default value.
+% Variables declared as threadvar cannot be initialized with a default value.
 % The variables will always be filled with zero at the start of a new thread.
 parser_e_msg_only_for_classes=03193_E_Message directive is only allowed in Classes
 % The message directive is only supported for Class types.
@@ -1129,16 +1129,16 @@ parser_e_label_outside_proc=03231_E_Taking the address of labels defined outside
 % It isn't allowed to take the address of labels outside the
 % current procedure.
 parser_e_initialized_not_for_external=03233_E_Cannot initialize variables declared as external
-% Variables declared as external can not be initialized with a default value.
+% Variables declared as external cannot be initialized with a default value.
 parser_e_illegal_function_result=03234_E_Illegal function result type
-% Some types like file types can not be used as function result.
+% Some types like file types cannot be used as function result.
 parser_e_no_common_type=03235_E_No common type possible between "$1" and "$2"
 % To perform an operation on integers, the compiler converts both operands
 % to their common type, which appears to be an invalid type. To determine the
 % common type of the operands, the compiler takes the minimum of the minimal values
 % of both types, and the maximum of the maximal values of both types. The common
 % type is then minimum..maximum.
-parser_e_no_generics_as_types=03236_E_Generics without specialization can not be used as a type for a variable
+parser_e_no_generics_as_types=03236_E_Generics without specialization cannot be used as a type for a variable
 % Generics must be always specialized before being used as variable type.
 parser_w_register_list_ignored=03237_W_Register list is ignored for pure assembler routines
 % When using pure assembler routines, the list with modified registers is ignored.
@@ -1171,7 +1171,7 @@ parser_e_weak_external_not_supported=03248_E_Weak external symbols are not suppo
 % on the current cpu/OS target.
 parser_e_forward_mismatch=03249_E_Forward type definition does not match
 % Classes and interfaces being defined forward must have the same type
-% when being implemented. A forward interface can not be changed into a class.
+% when being implemented. A forward interface cannot be changed into a class.
 parser_n_ignore_lower_visibility=03250_N_Virtual method "$1" has a lower visibility ($2) than parent class $3 ($4)
 % The virtual method overrides an method that is declared with a higher visibility. This might give
 % unexpected results. In case the new visibility is private than it might be that a call to inherited in a
@@ -1190,15 +1190,15 @@ parser_e_no_local_para_def=03252_E_Parameters cannot contain local type definiti
 % (both procedure headers would define a separate type). Keep in mind that expressions such as
 % ``file of byte'' or ``string[50]'' also define a new type.
 parser_e_abstract_and_sealed_conflict=03253_E_ABSTRACT and SEALED conflict
-% ABSTRACT and SEALED can not be used together in one declaration
-parser_e_sealed_descendant=03254_E_Can not create a descendant of the sealed class "$1"
-% Sealed means that class can not be derived by another class.
-parser_e_sealed_class_cannot_have_abstract_methods=03255_E_SEALED class can not have an ABSTRACT method
+% ABSTRACT and SEALED cannot be used together in one declaration
+parser_e_sealed_descendant=03254_E_Cannot create a descendant of the sealed class "$1"
+% Sealed means that class cannot be derived by another class.
+parser_e_sealed_class_cannot_have_abstract_methods=03255_E_SEALED class cannot have an ABSTRACT method
 % Sealed means that class cannot be derived. Therefore no one class is able to override an abstract method in a sealed class.
 parser_e_only_virtual_methods_final=03256_E_Only virtual methods can be final
 % You are declaring a method as final, when it is not declared to be
 % virtual.
-parser_e_final_can_no_be_overridden=03257_E_Final method can not be overridden: "$1"
+parser_e_final_can_no_be_overridden=03257_E_Final method cannot be overridden: "$1"
 % You are trying to \var{override} a virtual method of a parent class that does
 % not exist.
 parser_e_invalid_enumerator_identifier=03259_E_Invalid enumerator identifier: "$1"
@@ -1213,8 +1213,8 @@ parser_e_only_one_enumerator_movenext=03263_E_Only one enumerator MoveNext metho
 % Class or Object can have only one enumerator MoveNext declaration.
 parser_e_only_one_enumerator_current=03264_E_Only one enumerator Current property is allowed per class/object
 % Class or Object can have only one enumerator Current declaration.
-parser_e_for_in_loop_cannot_be_used_for_the_type=03265_E_For in loop can not be used for the type "$1"
-% For in loop can be used not for all types. For example it can not be used for the enumerations with jumps.
+parser_e_for_in_loop_cannot_be_used_for_the_type=03265_E_For in loop cannot be used for the type "$1"
+% For in loop can be used not for all types. For example it cannot be used for the enumerations with jumps.
 % \end{description}
 #
 # Type Checking
@@ -1701,15 +1701,15 @@ sym_w_deprecated_symbol_with_msg=05066_W_Symbol "$1" is deprecated: "$2"
 % declared as \var{deprecated} is used. Deprecated symbols may no longer
 % be available in newer versions of the unit / library. Use of this symbol
 % should be avoided as much as possible.
-sym_e_no_enumerator=05067_E_Can not find an enumerator for the type "$1"
-% This means that compiler can not find an apropriate enumerator to use in the for-in loop.
+sym_e_no_enumerator=05067_E_Cannot find an enumerator for the type "$1"
+% This means that compiler cannot find an apropriate enumerator to use in the for-in loop.
 % To create an enumerator you need to defind an operator enumerator or add a public or published 
 % GetEnumerator method to the class or object definition.
-sym_e_no_enumerator_move=05068_E_Can not find a "MoveNext" method in enumerator "$1"
-% This means that compiler can not find a public MoveNext method with the Boolean return type in
+sym_e_no_enumerator_move=05068_E_Cannot find a "MoveNext" method in enumerator "$1"
+% This means that compiler cannot find a public MoveNext method with the Boolean return type in
 % the enumerator class or object definition.
-sym_e_no_enumerator_current=05069_E_Can not find a "Current" property in enumerator "$1"
-% This means that compiler can not find a public Current property in  the enumerator class or object 
+sym_e_no_enumerator_current=05069_E_Cannot find a "Current" property in enumerator "$1"
+% This means that compiler cannot find a public Current property in  the enumerator class or object
 % definition.
 % \end{description}
 #
@@ -1771,7 +1771,7 @@ cg_e_no_code_for_inline_stored=06033_E_No code for inline procedure stored
 cg_e_can_access_element_zero=06035_E_Element zero of an ansi/wide- or longstring can't be accessed, use (set)length instead
 % You should use \var{setlength} to set the length of an ansi/wide/longstring
 % and \var{length} to get the length of such string type.
-cg_e_cannot_call_cons_dest_inside_with=06037_E_Constructors or destructors can not be called inside a 'with' clause
+cg_e_cannot_call_cons_dest_inside_with=06037_E_Constructors or destructors cannot be called inside a 'with' clause
 % Inside a \var{with} clause you cannot call a constructor or destructor for the
 % object you have in the \var{with} clause.
 cg_e_cannot_call_message_direct=06038_E_Cannot call message handler methods directly
@@ -1886,8 +1886,8 @@ asmr_e_relocatable_symbol_not_allowed=07013_E_Relocatable symbol is not allowed
 % You can't use a relocatable symbol (variable/typed constant) here.
 asmr_e_invalid_reference_syntax=07014_E_Invalid reference syntax
 % There is an error in the reference.
-asmr_e_local_para_unreachable=07015_E_You can not reach $1 from that code
-% You can not read directly the value of a local variable or parameter
+asmr_e_local_para_unreachable=07015_E_You cannot reach $1 from that code
+% You cannot read directly the value of a local variable or parameter
 % of a higher level procedure in assembler code (except for
 % local assembler code without parameter nor locals).
 asmr_e_local_label_not_allowed_as_ref=07016_E_Local symbols/labels aren't allowed as references
@@ -2215,9 +2215,9 @@ exec_e_cant_call_resource_compiler=09030_E_Can't call the resource compiler "$1"
 % a script that can be used to assemble, compile resources and link or
 % postprocess the program.
 exec_e_cant_open_resource_file=09031_E_Can't open resource file "$1"
-% An error occurred resource file can not be opened.
+% An error occurred resource file cannot be opened.
 exec_e_cant_write_resource_file=09032_E_Can't write resource file "$1"
-% An error occurred resource file can not be written.
+% An error occurred resource file cannot be written.
 %\end{description}
 # EndOfTeX
 
@@ -2488,7 +2488,7 @@ option_only_one_source_support=11001_W_Only one source file supported, changing
 option_def_only_for_os2=11002_W_DEF file can be created only for OS/2
 % This option can only be specified when you're compiling for OS/2.
 option_no_nested_response_file=11003_E_nested response files are not supported
-% You can not nest response files with the \var{@file} command line option.
+% You cannot nest response files with the \var{@file} command line option.
 option_no_source_found=11004_F_No source file name in command line
 % The compiler expects a source file name on the command line.
 option_no_option_found=11005_N_No option inside $1 config file
@@ -2540,7 +2540,7 @@ option_switch_bin_to_src_assembler=11020_N_Switching assembler to default source
 % -a switch, which can't be used with a binary assembler writer.
 option_incompatible_asm=11021_W_Assembler output selected "$1" is not compatible with "$2"
 option_asm_forced=11022_W_"$1" assembler use forced
-% The assembler output selected can not generate
+% The assembler output selected cannot generate
 % object files with the correct format. Therefore, the
 % default assembler for this target is used instead.
 option_using_file=11026_T_Reading options from file $1
@@ -2680,7 +2680,7 @@ wpo_cant_create_feedback_file=12019_E_Cannot create specified whole program opti
 #
 option_logo=11023_[
 Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPCCPU
-Copyright (c) 1993-2009 by Florian Klaempfl
+Copyright (c) 1993-2010 by Florian Klaempfl
 ]
 
 #

+ 1 - 1
compiler/msg/errores.msg

@@ -2111,7 +2111,7 @@ option_code_page_not_available=11039_E_C
 #
 option_logo=11023_[
 Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPCCPU
-Copyright (c) 1993-2009 by Florian Klaempfl
+Copyright (c) 1993-2010 by Florian Klaempfl
 ]
 
 #

+ 1 - 1
compiler/msg/errorfi.msg

@@ -2258,7 +2258,7 @@ option_config_is_dir=11040_F_Le fichier de configuration $1 est un r
 # Logo (option -l)
 #
 option_logo=11023_[ Compilateur Free Pascal version $FPCFULLVERSION [$FPCDATE] for $FPCCPU
-Copyright (c) 1993-2009, Florian Klaempfl ]
+Copyright (c) 1993-2010, Florian Klaempfl ]
 #
 # Info (option -i)
 #

+ 1 - 1
compiler/msg/errorhe.msg

@@ -2404,7 +2404,7 @@ option_confict_asm_debug=11041_W_
 #
 option_logo=11023_[
 Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPCCPU
-Copyright (c) 1993-2009 by Florian Klaempfl
+Copyright (c) 1993-2010 by Florian Klaempfl
 ]
 
 #

+ 1 - 1
compiler/msg/errorheu.msg

@@ -2404,7 +2404,7 @@ option_confict_asm_debug=11041_W_סוג הפלט של המאסף שנבחר "$1"
 #
 option_logo=11023_[
 Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPCCPU
-Copyright (c) 1993-2009 by Florian Klaempfl
+Copyright (c) 1993-2010 by Florian Klaempfl
 ]
 
 #

+ 1 - 1
compiler/msg/errorid.msg

@@ -2421,7 +2421,7 @@ option_confict_asm_debug=11041_W_Output assembler yang dipilih "$1" tidak bisa m
 #
 option_logo=11023_[
 Free Pascal Compiler versi $FPCFULLVERSION [$FPCDATE] untuk $FPCCPU
-Hak Cipta (c) 1993-2009 oleh Florian Klaempfl
+Hak Cipta (c) 1993-2010 oleh Florian Klaempfl
 ]
 
 #

+ 1 - 1
compiler/msg/errorpl.msg

@@ -2116,7 +2116,7 @@ option_code_page_not_available=11039_E_Nieznana strona kodowa
 #
 option_logo=11023_[
 Free Pascal Compiler wersja $FPCFULLVERSION [$FPCDATE] dla $FPCCPU
-Copyright (c) 1993-2009 by Florian Klaempfl
+Copyright (c) 1993-2010 by Florian Klaempfl
 ]
 
 #

+ 1 - 1
compiler/msg/errorpli.msg

@@ -2116,7 +2116,7 @@ option_code_page_not_available=11039_E_Nieznana strona kodowa
 #
 option_logo=11023_[
 Free Pascal Compiler wersja $FPCFULLVERSION [$FPCDATE] dla $FPCCPU
-Copyright (c) 1993-2009 by Florian Klaempfl
+Copyright (c) 1993-2010 by Florian Klaempfl
 ]
 
 #

+ 2 - 2
compiler/msg/errorr.msg

@@ -1834,8 +1834,8 @@ option_help_press_enter=11029__*** 
 # ‹®£® (®¯æ¨ï -l)
 #
 option_logo=11023_[
-Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPCTARGET [Russian Edition]
-Copyright (c) 1993-2006 by Florian Klaempfl
+Š®¬¯¨«ïâ®à Free Pascal ¢¥àᨨ $FPCFULLVERSION [$FPCDATE] ¤«ï $FPCCPU
+Copyright (c) 1993-2010 by Florian Klaempfl
 ]
 
 #

+ 1 - 1
compiler/msg/errorues.msg

@@ -2105,7 +2105,7 @@ option_code_page_not_available=11039_E_Código de página desconocido
 #
 option_logo=11023_[
 Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPCCPU
-Copyright (c) 1993-2009 by Florian Klaempfl
+Copyright (c) 1993-2010 by Florian Klaempfl
 ]
 
 #

+ 1 - 1
compiler/msgidx.inc

@@ -807,7 +807,7 @@ const
   option_info=11024;
   option_help_pages=11025;
 
-  MsgTxtSize = 52741;
+  MsgTxtSize = 52730;
 
   MsgIdxMax : array[1..20] of longint=(
     24,87,266,88,70,50,108,22,202,62,

File diff ditekan karena terlalu besar
+ 205 - 205
compiler/msgtxt.inc


+ 10 - 0
compiler/nmem.pas

@@ -749,6 +749,16 @@ implementation
                inserttypeconv(right,sinttype);
            end;
 
+         { although we never put regular arrays or shortstrings in registers,
+           it's possible that another type was typecasted to a small record
+           that has a field of one of these types -> in that case the record
+           can't be a regvar either }
+         if ((left.resultdef.typ=arraydef) and
+             not is_special_array(left.resultdef)) or
+            ((left.resultdef.typ=stringdef) and
+             (tstringdef(left.resultdef).stringtype in [st_shortstring,st_longstring])) then
+           make_not_regable(left,[ra_addr_regable]);
+
          case left.resultdef.typ of
            arraydef :
              begin

+ 70 - 69
packages/Makefile

@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/10/28]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/09/29]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx haiku
 LIMIT83fs = go32v2 os2 emx watcom
@@ -245,7 +245,7 @@ endif
 ifndef CROSSBINDIR
 CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
 endif
-ifeq ($(OS_TARGET),darwin)
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
 ifeq ($(OS_SOURCE),darwin)
 DARWIN2DARWIN=1
 endif
@@ -265,13 +265,13 @@ UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
 endif
 PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph libc unixutil graph pxlib
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph libc unixutil graph pxlib
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv graph unzip gdbint
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra zorba oggvorbis sdl openssl graph pcap httpd13 httpd20 httpd22 pxlib numlib  cairo libxml gmp opencl
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra oggvorbis sdl openssl graph pcap httpd13 httpd20 httpd22 pxlib numlib  cairo libxml gmp opencl
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv zlib libpng x11 tcl fpgtk rexx os2units gtk1 imlib
@@ -324,8 +324,14 @@ endif
 ifeq ($(FULL_TARGET),i386-symbian)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
 endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
+endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg httpd13 httpd20 httpd22 pxlib numlib users iconvenc gmp fcl-extra libxml
@@ -349,7 +355,7 @@ ifeq ($(FULL_TARGET),m68k-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
@@ -370,7 +376,7 @@ ifeq ($(FULL_TARGET),powerpc-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
@@ -382,7 +388,7 @@ ifeq ($(FULL_TARGET),sparc-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg httpd13 httpd20 httpd22 pxlib numlib users iconvenc gmp fcl-extra libxml
@@ -400,7 +406,7 @@ ifeq ($(FULL_TARGET),x86_64-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  palmunits
@@ -424,7 +430,7 @@ ifeq ($(FULL_TARGET),arm-symbian)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp graph
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc gmp fcl-extra univint opengl x11 cairo gtk1 gtk2 librsvg fpgtk xforms gnome1 httpd13 httpd20 httpd22 imlib
@@ -436,13 +442,13 @@ ifeq ($(FULL_TARGET),avr-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic bzip2  fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp
 endif
 override INSTALL_FPCPACKAGE=y
 override INSTALL_FPCSUBDIR=packages
@@ -773,7 +779,7 @@ DEBUGSYMEXT=.xcoff
 SHORTSUFFIX=mac
 IMPORTLIBPREFIX=imp
 endif
-ifeq ($(OS_TARGET),darwin)
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
 BATCHEXT=.sh
 EXEEXT=
 HASSHAREDLIB=1
@@ -788,6 +794,10 @@ ifeq ($(OS_TARGET),symbian)
 SHAREDLIBEXT=.dll
 SHORTSUFFIX=symbian
 endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
 else
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
@@ -1614,7 +1624,6 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_PROJ4=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -1717,7 +1726,6 @@ TARGET_DIRS_OPENAL=1
 TARGET_DIRS_FFTW=1
 TARGET_DIRS_LUA=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_OGGVORBIS=1
 TARGET_DIRS_SDL=1
 TARGET_DIRS_OPENSSL=1
@@ -2485,6 +2493,52 @@ TARGET_DIRS_LIBGD=1
 TARGET_DIRS_SYMBOLIC=1
 TARGET_DIRS_BZIP2=1
 endif
+ifeq ($(FULL_TARGET),i386-nativent)
+TARGET_DIRS_HASH=1
+TARGET_DIRS_PASJPEG=1
+TARGET_DIRS_PASZLIB=1
+TARGET_DIRS_FPMKUNIT=1
+TARGET_DIRS_FCL-XML=1
+TARGET_DIRS_FCL-BASE=1
+TARGET_DIRS_FCL-DB=1
+TARGET_DIRS_FCL-IMAGE=1
+TARGET_DIRS_FCL-NET=1
+TARGET_DIRS_FCL-PASSRC=1
+TARGET_DIRS_FCL-REGISTRY=1
+TARGET_DIRS_FCL-FPCUNIT=1
+TARGET_DIRS_FCL-JSON=1
+TARGET_DIRS_FCL-PROCESS=1
+TARGET_DIRS_UNZIP=1
+TARGET_DIRS_REGEXPR=1
+TARGET_DIRS_CHM=1
+TARGET_DIRS_FCL-RES=1
+TARGET_DIRS_LIBGD=1
+TARGET_DIRS_SYMBOLIC=1
+TARGET_DIRS_BZIP2=1
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+TARGET_DIRS_HASH=1
+TARGET_DIRS_PASJPEG=1
+TARGET_DIRS_PASZLIB=1
+TARGET_DIRS_FPMKUNIT=1
+TARGET_DIRS_FCL-XML=1
+TARGET_DIRS_FCL-BASE=1
+TARGET_DIRS_FCL-DB=1
+TARGET_DIRS_FCL-IMAGE=1
+TARGET_DIRS_FCL-NET=1
+TARGET_DIRS_FCL-PASSRC=1
+TARGET_DIRS_FCL-REGISTRY=1
+TARGET_DIRS_FCL-FPCUNIT=1
+TARGET_DIRS_FCL-JSON=1
+TARGET_DIRS_FCL-PROCESS=1
+TARGET_DIRS_UNZIP=1
+TARGET_DIRS_REGEXPR=1
+TARGET_DIRS_CHM=1
+TARGET_DIRS_FCL-RES=1
+TARGET_DIRS_LIBGD=1
+TARGET_DIRS_SYMBOLIC=1
+TARGET_DIRS_BZIP2=1
+endif
 ifeq ($(FULL_TARGET),m68k-linux)
 TARGET_DIRS_HASH=1
 TARGET_DIRS_PASJPEG=1
@@ -2551,7 +2605,6 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_PROJ4=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -2940,7 +2993,6 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_PROJ4=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -3259,7 +3311,6 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_PROJ4=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -3499,7 +3550,6 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_PROJ4=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -3861,7 +3911,6 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_PROJ4=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -4164,7 +4213,6 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_PROJ4=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -4364,7 +4412,6 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_PROJ4=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -4474,7 +4521,6 @@ TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
 TARGET_DIRS_PROJ4=1
 TARGET_DIRS_FCL-EXTRA=1
-TARGET_DIRS_ZORBA=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -7375,51 +7421,6 @@ fcl-extra:
 	$(MAKE) -C fcl-extra all
 .PHONY: fcl-extra_all fcl-extra_debug fcl-extra_smart fcl-extra_release fcl-extra_units fcl-extra_examples fcl-extra_shared fcl-extra_install fcl-extra_sourceinstall fcl-extra_exampleinstall fcl-extra_distinstall fcl-extra_zipinstall fcl-extra_zipsourceinstall fcl-extra_zipexampleinstall fcl-extra_zipdistinstall fcl-extra_clean fcl-extra_distclean fcl-extra_cleanall fcl-extra_info fcl-extra_makefiles fcl-extra
 endif
-ifdef TARGET_DIRS_ZORBA
-zorba_all:
-	$(MAKE) -C zorba all
-zorba_debug:
-	$(MAKE) -C zorba debug
-zorba_smart:
-	$(MAKE) -C zorba smart
-zorba_release:
-	$(MAKE) -C zorba release
-zorba_units:
-	$(MAKE) -C zorba units
-zorba_examples:
-	$(MAKE) -C zorba examples
-zorba_shared:
-	$(MAKE) -C zorba shared
-zorba_install:
-	$(MAKE) -C zorba install
-zorba_sourceinstall:
-	$(MAKE) -C zorba sourceinstall
-zorba_exampleinstall:
-	$(MAKE) -C zorba exampleinstall
-zorba_distinstall:
-	$(MAKE) -C zorba distinstall
-zorba_zipinstall:
-	$(MAKE) -C zorba zipinstall
-zorba_zipsourceinstall:
-	$(MAKE) -C zorba zipsourceinstall
-zorba_zipexampleinstall:
-	$(MAKE) -C zorba zipexampleinstall
-zorba_zipdistinstall:
-	$(MAKE) -C zorba zipdistinstall
-zorba_clean:
-	$(MAKE) -C zorba clean
-zorba_distclean:
-	$(MAKE) -C zorba distclean
-zorba_cleanall:
-	$(MAKE) -C zorba cleanall
-zorba_info:
-	$(MAKE) -C zorba info
-zorba_makefiles:
-	$(MAKE) -C zorba makefiles
-zorba:
-	$(MAKE) -C zorba all
-.PHONY: zorba_all zorba_debug zorba_smart zorba_release zorba_units zorba_examples zorba_shared zorba_install zorba_sourceinstall zorba_exampleinstall zorba_distinstall zorba_zipinstall zorba_zipsourceinstall zorba_zipexampleinstall zorba_zipdistinstall zorba_clean zorba_distclean zorba_cleanall zorba_info zorba_makefiles zorba
-endif
 ifdef TARGET_DIRS_IMLIB
 imlib_all:
 	$(MAKE) -C imlib all

+ 2 - 2
packages/Makefile.fpc

@@ -43,10 +43,10 @@ dirs_openbsd=fv fcl-web fastcgi fcl-async ibase mysql ncurses zlib oracle odbc
                imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
 dirs_linux=fv fcl-web fastcgi fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick \
                gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg \
-               a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra zorba \
+               a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 fcl-extra \
                imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib gmp
 dirs_win32=fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick \
-               gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra zorba \
+               gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua fcl-extra \
                oggvorbis sdl openssl graph pcap httpd13 httpd20 httpd22 pxlib numlib  cairo libxml gmp opencl
 dirs_win64=fv winunits-base winunits-jedi fcl-web fastcgi ibase mysql zlib oracle odbc postgres sqlite imagemagick \
                 tcl opengl gtk1 fpgtk fftw sdl openssl cdrom httpd13 httpd20 httpd22 numlib fcl-extra opencl

+ 2 - 2
packages/fcl-passrc/src/pparser.pp

@@ -119,7 +119,7 @@ type
       AParent: TPasElement): TPasElement;overload;
     function CreateElement(AClass: TPTreeElement; const AName: String;
       AParent: TPasElement; AVisibility: TPasMemberVisibility): TPasElement;overload;
-    Function IsHint(Const S : String; AHint : TPasMemberHint) : Boolean;
+    Function IsHint(Const S : String; var AHint : TPasMemberHint) : Boolean;
     Function CheckHint(Element : TPasElement; ExpectSemiColon : Boolean) : TPasMemberHints;
   public
     Options : set of TPOptions;
@@ -334,7 +334,7 @@ begin
   Result:=ParseType(Parent,'');
 end;
 
-Function TPasParser.IsHint(Const S : String; AHint : TPasMemberHint) : Boolean;
+Function TPasParser.IsHint(Const S : String; var AHint : TPasMemberHint) : Boolean;
 
 Var
   T : string;

+ 0 - 6
packages/fpmake_proc.inc

@@ -598,9 +598,3 @@ begin
 {$include zlib/fpmake.pp}
 end;
 
-procedure add_zorba;
-begin
-  with Installer do
-{$include zorba/fpmake.pp}
-end;
-

+ 404 - 357
packages/ibase/src/ibase60.inc

@@ -1,11 +1,20 @@
+{
+}
+
 {$MODE objfpc}
 {$MACRO on}
-{$PACKRECORDS C}
 
 interface
 
-uses
-  Dynlibs, ctypes;
+{$IFDEF LinkDynamically}
+uses Dynlibs, sysutils,ctypes;
+
+Var
+  UseEmbeddedFirebird : Boolean = False;
+
+{$ELSE}
+uses Dynlibs,ctypes;
+{$ENDIF}
 
 {$IFDEF Unix}
   {$DEFINE extdecl:=cdecl}
@@ -22,41 +31,58 @@ uses
     fbembedlib = 'fbembed.dll';
 {$ENDIF}
 
-const
-   ISC_TRUE      = 1;
-   ISC_FALSE     = 0;
-   ISC__TRUE     = ISC_TRUE;
-   ISC__FALSE    = ISC_FALSE;
+type
+  {  Unsigned types }
+
+  UChar                = Byte;
+  UShort               = Word;
+  UInt                 = DWord;
+  ULong                = DWord;
+
+  { Signed types }
+
+  Int                  = LongInt;
+  Long                 = LongInt;
+  Short                = SmallInt;
+  Float                = Single;
+
+  { Pointers to basic types }
+
+  PInt                 = ^Int;
+  PShort               = ^Short;
+  PUShort              = ^UShort;
+  PLong                = ^Long;
+  PULong               = ^ULong;
+  PFloat               = ^Float;
+  PUChar               = ^UChar;
+  PVoid                = ^Pointer;
+
+{$PACKRECORDS C}
+
+  const
+     ISC_TRUE = 1;
+     ISC_FALSE = 0;
+  const
+     ISC__TRUE = ISC_TRUE;
+     ISC__FALSE = ISC_FALSE;
 
 Type
-   ISC_SCHAR     = char;
-   ISC_UCHAR     = cuchar;
-   ISC_SHORT     = cshort;
-   ISC_USHORT    = cushort;
+   ISC_USHORT    = word;
    ISC_STATUS    = clong;
-   ISC_INT64     = clonglong;
-   ISC_UINT64    = culonglong;
-{$IFDEF CPU64}
-   ISC_LONG      = cint;
-   ISC_ULONG     = cuint;
-{$ELSE}
-   ISC_LONG      = clong;
-   ISC_ULONG     = culong;
-{$ENDIF}
+   ISC_INT64     = int64;
+   ISC_UINT64    = qword;
+   ISC_LONG      = Longint;
 
-   PISC_SCHAR    = pchar;
-   PISC_UCHAR    = ^ISC_UCHAR;
-   PISC_SHORT    = ^ISC_SHORT;
-   PISC_USHORT   = ^ISC_USHORT;
-   PISC_STATUS   = ^ISC_STATUS;
-   PPISC_STATUS  = ^PISC_STATUS;
-   PISC_INT64    = ^ISC_INT64;
-   PISC_UINT64   = ^ISC_UINT64;
-   PISC_LONG     = ^ISC_LONG;
+   PISC_USHORT = ^ISC_USHORT;
+   PISC_STATUS = ^ISC_STATUS;
+   PPISC_STATUS = ^PISC_STATUS;
+   PISC_INT64 = ^ISC_INT64;
+   PISC_UINT64 = ^ISC_UINT64;
+   PISC_LONG = ^ISC_LONG;
 
-const
-   DSQL_close    = 1;
-   DSQL_drop     = 2;
+  const
+     DSQL_close = 1;
+     DSQL_drop = 2;
 
   {!!MVC
     Removed all ISC_FAR, ISC_EXPORT_VARARG and ISC_EXPORT
@@ -70,8 +96,8 @@ const
 
   type
 
-     ISC_DATE = cint;
-     ISC_TIME = cuint;
+     ISC_DATE = longint;
+     ISC_TIME = dword;
      ISC_TIMESTAMP = record
           timestamp_date : ISC_DATE;
           timestamp_time : ISC_TIME;
@@ -93,57 +119,19 @@ const
   { Blob id structure                                                }
   {                                                                  }
 
-type
-  PGDS_QUAD = ^GDS_QUAD;
-  GDS_QUAD = record
-    gds_quad_high : ISC_LONG;
-    gds_quad_low : ISC_LONG;
-  end;
-  TGDS_QUAD = GDS_QUAD;
-
-  ISC_QUAD = GDS_QUAD;
-  TISC_QUAD = ISC_QUAD;
-  PISC_QUAD = ^ISC_QUAD;
-
-  {                               }
-  { InterBase Handle Definitions  }
-  {                               }
+Type
 
-  type
-     isc_att_handle = pointer;
-     isc_blob_handle = pointer;
-     isc_db_handle = pointer;
-     isc_form_handle = pointer;
-     isc_req_handle = pointer;
-     isc_stmt_handle = pointer;
-     isc_svc_handle = pointer;
-     isc_tr_handle = pointer;
-     isc_win_handle = pointer;
-     isc_callback = procedure ;extdecl;
-     isc_resv_handle = ISC_LONG;
-     tisc_att_handle = isc_att_handle;
-     tisc_blob_handle = isc_blob_handle;
-     tisc_db_handle = isc_db_handle;
-     tisc_form_handle = isc_form_handle;
-     tisc_req_handle = isc_req_handle;
-     tisc_stmt_handle = isc_stmt_handle;
-     tisc_svc_handle = isc_svc_handle;
-     tisc_tr_handle = isc_tr_handle;
-     tisc_win_handle = isc_win_handle;
-     tisc_callback = isc_callback;
-     tisc_resv_handle = isc_resv_handle;
-     pisc_att_handle  =^isc_att_handle ;
-     pisc_blob_handle  =^isc_blob_handle ;
-     pisc_db_handle  =^isc_db_handle ;
-     pisc_form_handle  =^isc_form_handle ;
-     pisc_req_handle  =^isc_req_handle ;
-     pisc_stmt_handle  =^isc_stmt_handle ;
-     pisc_svc_handle  =^isc_svc_handle ;
-     pisc_tr_handle  =^isc_tr_handle ;
-     pisc_win_handle  =^isc_win_handle ;
-     pisc_callback  = ^isc_callback;
-     pisc_resv_handle  =^isc_resv_handle ;
+   GDS_QUAD = record
+      gds_quad_high : ISC_LONG;
+      gds_quad_low : ISC_LONG;
+   end;
+   TGDS_QUAD = GDS_QUAD;
+   PGDS_QUAD = ^GDS_QUAD;
 
+Type
+     ISC_QUAD = GDS_QUAD;
+     TISC_QUAD = ISC_QUAD;
+     PISC_QUAD = ^ISC_QUAD;
 
 { !!field redefinitions !!
      isc_quad_high = gds_quad_high;
@@ -153,31 +141,31 @@ type
 type
 
      ISC_ARRAY_BOUND = record
-          array_bound_lower : cshort;
-          array_bound_upper : cshort;
+          array_bound_lower : smallint;
+          array_bound_upper : smallint;
        end;
      TISC_ARRAY_BOUND = ISC_ARRAY_BOUND;
      PISC_ARRAY_BOUND = ^ISC_ARRAY_BOUND;
 
      ISC_ARRAY_DESC = record
-          array_desc_dtype : ISC_UCHAR;
-          array_desc_scale : ISC_SCHAR;
-          array_desc_length : cushort;
-          array_desc_field_name : array[0..31] of ISC_SCHAR;
-          array_desc_relation_name : array[0..31] of ISC_SCHAR;
-          array_desc_dimensions : cushort;
-          array_desc_flags : cushort;
+          array_desc_dtype : byte;
+          array_desc_scale : char;
+          array_desc_length : word;
+          array_desc_field_name : array[0..31] of char;
+          array_desc_relation_name : array[0..31] of char;
+          array_desc_dimensions : smallint;
+          array_desc_flags : smallint;
           array_desc_bounds : array[0..15] of ISC_ARRAY_BOUND;
        end;
      TISC_ARRAY_DESC = ISC_ARRAY_DESC;
      PISC_ARRAY_DESC = ^ISC_ARRAY_DESC;
 
      ISC_BLOB_DESC = record
-          blob_desc_subtype : cushort;
-          blob_desc_charset : cushort;
-          blob_desc_segment_size : cushort;
-          blob_desc_field_name : array[0..31] of ISC_UCHAR;
-          blob_desc_relation_name : array[0..31] of ISC_UCHAR;
+          blob_desc_subtype : smallint;
+          blob_desc_charset : smallint;
+          blob_desc_segment_size : smallint;
+          blob_desc_field_name : array[0..31] of byte;
+          blob_desc_relation_name : array[0..31] of byte;
        end;
      TISC_BLOB_DESC = ISC_BLOB_DESC;
      PISC_BLOB_DESC = ^ISC_BLOB_DESC ;
@@ -205,24 +193,24 @@ type
   { Total length of blob  }
   { Address of status vector  }
   { Application specific data  }
-  TCTLSourceFunction  = function : ISC_STATUS;
+  TCTLSourceFunction  = function : isc_long;
 
      PISC_BLOB_CTL = ^ISC_BLOB_CTL ;
      ISC_BLOB_CTL = record
           ctl_source : TCTLSourceFunction;     //  was ISC_STATUS ( *ctl_source)();
           ctl_source_handle : pisc_blob_ctl  ; // was struct isc_blob_ctl  * ctl_source_handle;
-          ctl_to_sub_type : cshort;
-          ctl_from_sub_type : cshort;
-          ctl_buffer_length : cushort;
-          ctl_segment_length : cushort;
-          ctl_bpb_length : cushort;
-          ctl_bpb : PISC_SCHAR;
-          ctl_buffer : PISC_UCHAR;
+          ctl_to_sub_type : smallint;
+          ctl_from_sub_type : smallint;
+          ctl_buffer_length : word;
+          ctl_segment_length : word;
+          ctl_bpb_length : word;
+          ctl_bpb : Pchar;
+          ctl_buffer : Pbyte;
           ctl_max_segment : ISC_LONG;
           ctl_number_segments : ISC_LONG;
           ctl_total_length : ISC_LONG;
           ctl_status : PISC_STATUS;
-          ctl_data : array[0..7] of clong;
+          ctl_data : array[0..7] of longint;
        end;
      TISC_BLOB_CTL = ISC_BLOB_CTL;
 
@@ -237,12 +225,12 @@ type
   { (mode) ? OUTPUT : INPUT  }
 
      BSTREAM = record
-          bstr_blob : isc_blob_handle;
-          bstr_buffer : PISC_SCHAR;
-          bstr_ptr : PISC_SCHAR;
-          bstr_length : cshort;
-          bstr_cnt : cshort;
-          bstr_mode : cchar;
+          bstr_blob : pointer;
+          bstr_buffer : Pchar;
+          bstr_ptr : Pchar;
+          bstr_length : smallint;
+          bstr_cnt : smallint;
+          bstr_mode : char;
        end;
      TBSTREAM = BSTREAM;
      PBstream = ^BSTREAM;
@@ -280,20 +268,20 @@ type
   { NULL  }
 
      XSQLVAR = record
-          sqltype : ISC_SHORT;
-          sqlscale : ISC_SHORT;
-          sqlsubtype : ISC_SHORT;
-          sqllen : ISC_SHORT;
-          sqldata : PISC_SCHAR;
-          sqlind : PISC_SHORT;
-          sqlname_length : ISC_SHORT;
-          sqlname : array[0..31] of ISC_SCHAR;
-          relname_length : ISC_SHORT;
-          relname : array[0..31] of ISC_SCHAR;
-          ownname_length : ISC_SHORT;
-          ownname : array[0..31] of ISC_SCHAR;
-          aliasname_length : ISC_SHORT;
-          aliasname : array[0..31] of ISC_SCHAR;
+          sqltype : smallint;
+          sqlscale : smallint;
+          sqlsubtype : smallint;
+          sqllen : smallint;
+          sqldata : Pchar;
+          sqlind : Psmallint;
+          sqlname_length : smallint;
+          sqlname : array[0..31] of char;
+          relname_length : smallint;
+          relname : array[0..31] of char;
+          ownname_length : smallint;
+          ownname : array[0..31] of char;
+          aliasname_length : smallint;
+          aliasname : array[0..31] of char;
        end;
      TXSQLVAR = XSQLVAR;
      PXSQLVAR =^XSQLVAR;
@@ -305,11 +293,11 @@ type
   { first field address  }
 
      XSQLDA = record
-          version : ISC_SHORT;
-          sqldaid : array[0..7] of ISC_SCHAR;
+          version : smallint;
+          sqldaid : array[0..7] of char;
           sqldabc : ISC_LONG;
-          sqln : ISC_SHORT;
-          sqld : ISC_SHORT;
+          sqln : smallint;
+          sqld : smallint;
           sqlvar : array[0..0] of XSQLVAR;
        end;
      TXSQLDA = XSQLDA;
@@ -334,6 +322,44 @@ type
      SQL_DIALECT_V6 = 3;
   { latest IB DIALECT  }
      SQL_DIALECT_CURRENT = SQL_DIALECT_V6;
+  {                               }
+  { InterBase Handle Definitions  }
+  {                               }
+
+  type
+     isc_att_handle = pointer;
+     isc_blob_handle = pointer;
+     isc_db_handle = pointer;
+     isc_form_handle = pointer;
+     isc_req_handle = pointer;
+     isc_stmt_handle = pointer;
+     isc_svc_handle = pointer;
+     isc_tr_handle = pointer;
+     isc_win_handle = pointer;
+     isc_callback = procedure ;extdecl;
+     isc_resv_handle = ISC_LONG;
+     tisc_att_handle = isc_att_handle;
+     tisc_blob_handle = isc_blob_handle;
+     tisc_db_handle = isc_db_handle;
+     tisc_form_handle = isc_form_handle;
+     tisc_req_handle = isc_req_handle;
+     tisc_stmt_handle = isc_stmt_handle;
+     tisc_svc_handle = isc_svc_handle;
+     tisc_tr_handle = isc_tr_handle;
+     tisc_win_handle = isc_win_handle;
+     tisc_callback = isc_callback;
+     tisc_resv_handle = isc_resv_handle;
+     pisc_att_handle  =^isc_att_handle ;
+     pisc_blob_handle  =^isc_blob_handle ;
+     pisc_db_handle  =^isc_db_handle ;
+     pisc_form_handle  =^isc_form_handle ;
+     pisc_req_handle  =^isc_req_handle ;
+     pisc_stmt_handle  =^isc_stmt_handle ;
+     pisc_svc_handle  =^isc_svc_handle ;
+     pisc_tr_handle  =^isc_tr_handle ;
+     pisc_win_handle  =^isc_win_handle ;
+     pisc_callback  = ^isc_callback;
+     pisc_resv_handle  =^isc_resv_handle ;
 
 
   {                                    }
@@ -372,19 +398,19 @@ type
   type
 
      USER_SEC_DATA = record
-          sec_flags : cshort;
-          uid : cint;
-          gid : cint;
-          protocol : cint;
+          sec_flags : smallint;
+          uid : longint;
+          gid : longint;
+          protocol : longint;
           server : Pchar;
-          user_name : PISC_SCHAR;
-          password : PISC_SCHAR;
-          group_name : PISC_SCHAR;
-          first_name : PISC_SCHAR;
-          middle_name : PISC_SCHAR;
-          last_name : PISC_SCHAR;
-          dba_user_name : PISC_SCHAR;
-          dba_password : PISC_SCHAR;
+          user_name : Pchar;
+          password : Pchar;
+          group_name : Pchar;
+          first_name : Pchar;
+          middle_name : Pchar;
+          last_name : Pchar;
+          dba_user_name : Pchar;
+          dba_password : Pchar;
        end;
      TUSER_SEC_DATA = USER_SEC_DATA;
      PUSER_SEC_DATA = ^USER_SEC_DATA;
@@ -1599,7 +1625,7 @@ type
      isc_blob_dbase_ole = 23;
      isc_blob_typed_binary = 24;
 
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
 
   {                          }
   { OSRI database functions  }
@@ -1717,7 +1743,7 @@ type
 
   function isc_event_block(_para1:PPchar; _para2:PPchar; _para3:word; args:array of const):ISC_LONG; cdecl; external gdslib;
 
-  procedure isc_event_counts(_para1: PISC_STATUS; _para2: cshort; _para3: pchar; _para4: pchar); extdecl;  external gdslib;
+  procedure isc_event_counts(_para1: PISC_STATUS; _para2: short; _para3: pchar; _para4: pchar); extdecl;  external gdslib;
 
   procedure isc_expand_dpb(_para1:PPchar; _para2:Psmallint; args:array of const); cdecl; external gdslib;
 
@@ -2196,7 +2222,7 @@ type
   function Bopen2:PBSTREAM; extdecl; external gdslib;
 {$ENDIF}
 
-{$ELSE} // LOAD_DYNAMICALLY
+{$ELSE} // LinkDynamically
 
 var
 
@@ -2250,7 +2276,7 @@ var
   isc_encode_sql_time : procedure (_para1:pointer; _para2:PISC_TIME); extdecl;
   isc_encode_timestamp : procedure (_para1:pointer; _para2:PISC_TIMESTAMP); extdecl;
   isc_event_block : function (_para1:PPchar; _para2:PPchar; _para3:word; args:array of const):ISC_LONG; cdecl;
-  isc_event_counts: procedure (_para1: PISC_STATUS; _para2: cshort; _para3: pchar; _para4: pchar); extdecl;
+  isc_event_counts: procedure (_para1: PISC_STATUS; _para2: short; _para3: pchar; _para4: pchar); extdecl;
   isc_expand_dpb : procedure (_para1:PPchar; _para2:Psmallint; args:array of const); cdecl;
   isc_modify_dpb : function (_para1:PPchar; _para2:Psmallint; _para3:word; _para4:Pchar; _para5:smallint):longint; extdecl;
   isc_free : function (_para1:Pchar):ISC_LONG; extdecl;
@@ -2404,242 +2430,263 @@ var
   isc_suspend_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; extdecl;
 {$ENDIF}
 
-function InitializeIBase(UseEmbeddedFirebird: Boolean = False): Integer;
-function InitializeIBase(const LibraryName: String): Integer;
-function TryInitializeIBase(const LibraryName: string): Integer;
-function ReleaseIBase: Integer;
-
-var
-  IBaseLibrary: TLibHandler;
+function InitialiseIBase60(Const LibraryName : String) : integer;
+function InitialiseIBase60 : integer;
+procedure ReleaseIBase60;
 
-function InitialiseIBase60(Const LibraryName : String) : integer; deprecated;
-function InitialiseIBase60 : integer; deprecated;
-procedure ReleaseIBase60; deprecated;
-
-Var
-  UseEmbeddedFirebird: Boolean = False deprecated;
+var IBaseLibraryHandle : TLibHandle;
 
 {$ENDIF}
 
 implementation
 
-function XSQLDA_LENGTH(n: Integer): Integer;
-begin
-  Result := SizeOf(XSQLDA) + (n - 1) * SizeOf(XSQLVAR);
-end;
+{$IFDEF LinkDynamically}
+
+ResourceString
+  SErrEmbeddedFailed = 'Can not load embedded Firebird client "%s". Check your installation.';
+  SErrDefaultsFailed = 'Can not load default Firebird clients ("%s" or "%s"). Check your installation.';
+  SErrLoadFailed     = 'Can not load Firebird client library "%s". Check your installation.';
+  SErrAlreadyLoaded  = 'Firebird interface already initialized from library %s.';
+  
+var 
+  RefCount : integer;
+  LoadedLibrary : String;
 
-{$IFDEF LOAD_DYNAMICALLY}
-const
-  ibsymbols: array[0..140{$IFDEF UNIX}+20{$ENDIF}] of TLibSymbol = (
-    (pvar:@isc_attach_database; name:'isc_attach_database'; weak:false),
-    (pvar:@isc_array_gen_sdl; name:'isc_array_gen_sdl'; weak:false),
-    (pvar:@isc_array_get_slice; name:'isc_array_get_slice'; weak:false),
-    (pvar:@isc_array_lookup_bounds; name:'isc_array_lookup_bounds'; weak:false),
-    (pvar:@isc_array_lookup_desc; name:'isc_array_lookup_desc'; weak:false),
-    (pvar:@isc_array_set_desc; name:'isc_array_set_desc'; weak:false),
-    (pvar:@isc_array_put_slice; name:'isc_array_put_slice'; weak:false),
-    (pvar:@isc_blob_default_desc; name:'isc_blob_default_desc'; weak:false),
-    (pvar:@isc_blob_gen_bpb; name:'isc_blob_gen_bpb'; weak:false),
-    (pvar:@isc_blob_info; name:'isc_blob_info'; weak:false),
-    (pvar:@isc_blob_lookup_desc; name:'isc_blob_lookup_desc'; weak:false),
-    (pvar:@isc_blob_set_desc; name:'isc_blob_set_desc'; weak:false),
-    (pvar:@isc_cancel_blob; name:'isc_cancel_blob'; weak:false),
-    (pvar:@isc_cancel_events; name:'isc_cancel_events'; weak:false),
-    (pvar:@isc_close_blob; name:'isc_close_blob'; weak:false),
-    (pvar:@isc_commit_retaining; name:'isc_commit_retaining'; weak:false),
-    (pvar:@isc_commit_transaction; name:'isc_commit_transaction'; weak:false),
-    (pvar:@isc_create_blob; name:'isc_create_blob'; weak:false),
-    (pvar:@isc_create_blob2; name:'isc_create_blob2'; weak:false),
-    (pvar:@isc_create_database; name:'isc_create_database'; weak:false),
-    (pvar:@isc_database_info; name:'isc_database_info'; weak:false),
-    (pvar:@isc_decode_date; name:'isc_decode_date'; weak:false),
-    (pvar:@isc_decode_sql_date; name:'isc_decode_sql_date'; weak:false),
-    (pvar:@isc_decode_sql_time; name:'isc_decode_sql_time'; weak:false),
-    (pvar:@isc_decode_timestamp; name:'isc_decode_timestamp'; weak:false),
-    (pvar:@isc_detach_database; name:'isc_detach_database'; weak:false),
-    (pvar:@isc_drop_database; name:'isc_drop_database'; weak:false),
-    (pvar:@isc_dsql_allocate_statement; name:'isc_dsql_allocate_statement'; weak:false),
-    (pvar:@isc_dsql_alloc_statement2; name:'isc_dsql_alloc_statement2'; weak:false),
-    (pvar:@isc_dsql_describe; name:'isc_dsql_describe'; weak:false),
-    (pvar:@isc_dsql_describe_bind; name:'isc_dsql_describe_bind'; weak:false),
-    (pvar:@isc_dsql_exec_immed2; name:'isc_dsql_exec_immed2'; weak:false),
-    (pvar:@isc_dsql_execute; name:'isc_dsql_execute'; weak:false),
-    (pvar:@isc_dsql_execute2; name:'isc_dsql_execute2'; weak:false),
-    (pvar:@isc_dsql_execute_immediate; name:'isc_dsql_execute_immediate'; weak:false),
-    (pvar:@isc_dsql_fetch; name:'isc_dsql_fetch'; weak:false),
-    (pvar:@isc_dsql_finish; name:'isc_dsql_finish'; weak:false),
-    (pvar:@isc_dsql_free_statement; name:'isc_dsql_free_statement'; weak:false),
-    (pvar:@isc_dsql_insert; name:'isc_dsql_insert'; weak:false),
-    (pvar:@isc_dsql_prepare; name:'isc_dsql_prepare'; weak:false),
-    (pvar:@isc_dsql_set_cursor_name; name:'isc_dsql_set_cursor_name'; weak:false),
-    (pvar:@isc_dsql_sql_info; name:'isc_dsql_sql_info'; weak:false),
-    (pvar:@isc_encode_date; name:'isc_encode_date'; weak:false),
-    (pvar:@isc_encode_sql_date; name:'isc_encode_sql_date'; weak:false),
-    (pvar:@isc_encode_sql_time; name:'isc_encode_sql_time'; weak:false),
-    (pvar:@isc_encode_timestamp; name:'isc_encode_timestamp'; weak:false),
-    (pvar:@isc_event_block; name:'isc_event_block'; weak:false),
-    (pvar:@isc_event_counts; name:'isc_event_counts'; weak:false),
-    (pvar:@isc_expand_dpb; name:'isc_expand_dpb'; weak:false),
-    (pvar:@isc_modify_dpb; name:'isc_modify_dpb'; weak:false),
-    (pvar:@isc_free; name:'isc_free'; weak:false),
-    (pvar:@isc_get_segment; name:'isc_get_segment'; weak:false),
-    (pvar:@isc_get_slice; name:'isc_get_slice'; weak:false),
-    (pvar:@isc_interprete; name:'isc_interprete'; weak:false),
-    (pvar:@isc_open_blob; name:'isc_open_blob'; weak:false),
-    (pvar:@isc_open_blob2; name:'isc_open_blob2'; weak:false),
-    (pvar:@isc_prepare_transaction2; name:'isc_prepare_transaction2'; weak:false),
-    (pvar:@isc_print_sqlerror; name:'isc_print_sqlerror'; weak:false),
-    (pvar:@isc_print_status; name:'isc_print_status'; weak:false),
-    (pvar:@isc_put_segment; name:'isc_put_segment'; weak:false),
-    (pvar:@isc_put_slice; name:'isc_put_slice'; weak:false),
-    (pvar:@isc_que_events; name:'isc_que_events'; weak:false),
-    (pvar:@isc_rollback_retaining; name:'isc_rollback_retaining'; weak:false),
-    (pvar:@isc_rollback_transaction; name:'isc_rollback_transaction'; weak:false),
-    (pvar:@isc_start_multiple; name:'isc_start_multiple'; weak:false),
-    (pvar:@isc_start_transaction; name:'isc_start_transaction'; weak:false),
-    (pvar:@isc_sqlcode; name:'isc_sqlcode'; weak:false),
-    (pvar:@isc_sql_interprete; name:'isc_sql_interprete'; weak:false),
-    (pvar:@isc_transaction_info; name:'isc_transaction_info'; weak:false),
-    (pvar:@isc_transact_request; name:'isc_transact_request'; weak:false),
-    (pvar:@isc_vax_integer; name:'isc_vax_integer'; weak:false),
-    (pvar:@isc_portable_integer; name:'isc_portable_integer'; weak:false),
-    (pvar:@isc_add_user; name:'isc_add_user'; weak:false),
-    (pvar:@isc_delete_user; name:'isc_delete_user'; weak:false),
-    (pvar:@isc_modify_user; name:'isc_modify_user'; weak:false),
-    (pvar:@isc_compile_request; name:'isc_compile_request'; weak:false),
-    (pvar:@isc_compile_request2; name:'isc_compile_request2'; weak:false),
-    (pvar:@isc_ddl; name:'isc_ddl'; weak:false),
-    (pvar:@isc_prepare_transaction; name:'isc_prepare_transaction'; weak:false),
-    (pvar:@isc_receive; name:'isc_receive'; weak:false),
-    (pvar:@isc_reconnect_transaction; name:'isc_reconnect_transaction'; weak:false),
-    (pvar:@isc_release_request; name:'isc_release_request'; weak:false),
-    (pvar:@isc_request_info; name:'isc_request_info'; weak:false),
-    (pvar:@isc_seek_blob; name:'isc_seek_blob'; weak:false),
-    (pvar:@isc_send; name:'isc_send'; weak:false),
-    (pvar:@isc_start_and_send; name:'isc_start_and_send'; weak:false),
-    (pvar:@isc_start_request; name:'isc_start_request'; weak:false),
-    (pvar:@isc_unwind_request; name:'isc_unwind_request'; weak:false),
-    (pvar:@isc_wait_for_event; name:'isc_wait_for_event'; weak:false),
-    (pvar:@isc_close; name:'isc_close'; weak:false),
-    (pvar:@isc_declare; name:'isc_declare'; weak:false),
-    (pvar:@isc_describe; name:'isc_describe'; weak:false),
-    (pvar:@isc_describe_bind; name:'isc_describe_bind'; weak:false),
-    (pvar:@isc_execute; name:'isc_execute'; weak:false),
-    (pvar:@isc_execute_immediate; name:'isc_execute_immediate'; weak:false),
-    (pvar:@isc_fetch; name:'isc_fetch'; weak:false),
-    (pvar:@isc_open; name:'isc_open'; weak:false),
-    (pvar:@isc_prepare; name:'isc_prepare'; weak:false),
-    (pvar:@isc_dsql_execute_m; name:'isc_dsql_execute_m'; weak:false),
-    (pvar:@isc_dsql_execute2_m; name:'isc_dsql_execute2_m'; weak:false),
-    (pvar:@isc_dsql_execute_immediate_m; name:'isc_dsql_execute_immediate_m'; weak:false),
-    (pvar:@isc_dsql_exec_immed3_m; name:'isc_dsql_exec_immed3_m'; weak:false),
-    (pvar:@isc_dsql_fetch_m; name:'isc_dsql_fetch_m'; weak:false),
-    (pvar:@isc_dsql_insert_m; name:'isc_dsql_insert_m'; weak:false),
-    (pvar:@isc_dsql_prepare_m; name:'isc_dsql_prepare_m'; weak:false),
-    (pvar:@isc_dsql_release; name:'isc_dsql_release'; weak:false),
-    (pvar:@isc_embed_dsql_close; name:'isc_embed_dsql_close'; weak:false),
-    (pvar:@isc_embed_dsql_declare; name:'isc_embed_dsql_declare'; weak:false),
-    (pvar:@isc_embed_dsql_describe; name:'isc_embed_dsql_describe'; weak:false),
-    (pvar:@isc_embed_dsql_describe_bind; name:'isc_embed_dsql_describe_bind'; weak:false),
-    (pvar:@isc_embed_dsql_execute; name:'isc_embed_dsql_execute'; weak:false),
-    (pvar:@isc_embed_dsql_execute2; name:'isc_embed_dsql_execute2'; weak:false),
-    (pvar:@isc_embed_dsql_execute_immed; name:'isc_embed_dsql_execute_immed'; weak:false),
-    (pvar:@isc_embed_dsql_fetch; name:'isc_embed_dsql_fetch'; weak:false),
-    (pvar:@isc_embed_dsql_open; name:'isc_embed_dsql_open'; weak:false),
-    (pvar:@isc_embed_dsql_open2; name:'isc_embed_dsql_open2'; weak:false),
-    (pvar:@isc_embed_dsql_insert; name:'isc_embed_dsql_insert'; weak:false),
-    (pvar:@isc_embed_dsql_prepare; name:'isc_embed_dsql_prepare'; weak:false),
-    (pvar:@isc_embed_dsql_release; name:'isc_embed_dsql_release'; weak:false),
-    (pvar:@BLOB_open; name:'BLOB_open'; weak:false),
-    (pvar:@BLOB_put; name:'BLOB_put'; weak:false),
-    (pvar:@BLOB_close; name:'BLOB_close'; weak:false),
-    (pvar:@BLOB_get; name:'BLOB_get'; weak:false),
-    (pvar:@BLOB_display; name:'BLOB_display'; weak:false),
-    (pvar:@BLOB_dump; name:'BLOB_dump'; weak:false),
-    (pvar:@BLOB_edit; name:'BLOB_edit'; weak:false),
-    (pvar:@BLOB_load; name:'BLOB_load'; weak:false),
-    (pvar:@BLOB_text_dump; name:'BLOB_text_dump'; weak:false),
-    (pvar:@BLOB_text_load; name:'BLOB_text_load'; weak:false),
-    (pvar:@Bopen; name:'Bopen'; weak:false),
-{$IFDEF Unix} { weak functions, be careful! }
-    (pvar:@Bopen2; name:'Bopen2'; weak:true),
+Function TryInitialiseIBase60(Const LibraryName : String) : integer;
+
+begin
+  Result := 0;
+  if (RefCount=0) then
+    begin
+    IBaseLibraryHandle:=LoadLibrary(LibraryName);
+    if (IBaseLibraryHandle=nilhandle) then
+      Exit;
+    inc(RefCount);
+    LoadedLibrary:=LibraryName;
+    pointer(isc_attach_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_attach_database');
+    pointer(isc_array_gen_sdl) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_gen_sdl');
+    pointer(isc_array_get_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_get_slice');
+    pointer(isc_array_lookup_bounds) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_lookup_bounds');
+    pointer(isc_array_lookup_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_lookup_desc');
+    pointer(isc_array_set_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_set_desc');
+    pointer(isc_array_put_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_put_slice');
+    pointer(isc_blob_default_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_default_desc');
+    pointer(isc_blob_gen_bpb) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_gen_bpb');
+    pointer(isc_blob_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_info');
+    pointer(isc_blob_lookup_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_lookup_desc');
+    pointer(isc_blob_set_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_set_desc');
+    pointer(isc_cancel_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_cancel_blob');
+    pointer(isc_cancel_events) := GetProcedureAddress(IBaseLibraryHandle,'isc_cancel_events');
+    pointer(isc_close_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_close_blob');
+    pointer(isc_commit_retaining) := GetProcedureAddress(IBaseLibraryHandle,'isc_commit_retaining');
+    pointer(isc_commit_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_commit_transaction');
+    pointer(isc_create_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_blob');
+    pointer(isc_create_blob2) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_blob2');
+    pointer(isc_create_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_database');
+    pointer(isc_database_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_database_info');
+    pointer(isc_decode_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_date');
+    pointer(isc_decode_sql_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_sql_date');
+    pointer(isc_decode_sql_time) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_sql_time');
+    pointer(isc_decode_timestamp) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_timestamp');
+    pointer(isc_detach_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_detach_database');
+    pointer(isc_drop_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_drop_database');
+    pointer(isc_dsql_allocate_statement) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_allocate_statement');
+    pointer(isc_dsql_alloc_statement2) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_alloc_statement2');
+    pointer(isc_dsql_describe) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_describe');
+    pointer(isc_dsql_describe_bind) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_describe_bind');
+    pointer(isc_dsql_exec_immed2) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_exec_immed2');
+    pointer(isc_dsql_execute) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute');
+    pointer(isc_dsql_execute2) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute2');
+    pointer(isc_dsql_execute_immediate) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute_immediate');
+    pointer(isc_dsql_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_fetch');
+    pointer(isc_dsql_finish) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_finish');
+    pointer(isc_dsql_free_statement) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_free_statement');
+    pointer(isc_dsql_insert) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_insert');
+    pointer(isc_dsql_prepare) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_prepare');
+    pointer(isc_dsql_set_cursor_name) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_set_cursor_name');
+    pointer(isc_dsql_sql_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_sql_info');
+    pointer(isc_encode_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_date');
+    pointer(isc_encode_sql_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_sql_date');
+    pointer(isc_encode_sql_time) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_sql_time');
+    pointer(isc_encode_timestamp) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_timestamp');
+    pointer(isc_event_block) := GetProcedureAddress(IBaseLibraryHandle,'isc_event_block');
+    pointer(isc_event_counts) := GetProcedureAddress(IBaseLibraryHandle,'isc_event_counts');
+    pointer(isc_expand_dpb) := GetProcedureAddress(IBaseLibraryHandle,'isc_expand_dpb');
+    pointer(isc_modify_dpb) := GetProcedureAddress(IBaseLibraryHandle,'isc_modify_dpb');
+    pointer(isc_free) := GetProcedureAddress(IBaseLibraryHandle,'isc_free');
+    pointer(isc_get_segment) := GetProcedureAddress(IBaseLibraryHandle,'isc_get_segment');
+    pointer(isc_get_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_get_slice');
+    pointer(isc_interprete) := GetProcedureAddress(IBaseLibraryHandle,'isc_interprete');
+    pointer(isc_open_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_open_blob');
+    pointer(isc_open_blob2) := GetProcedureAddress(IBaseLibraryHandle,'isc_open_blob2');
+    pointer(isc_prepare_transaction2) := GetProcedureAddress(IBaseLibraryHandle,'isc_prepare_transaction2');
+    pointer(isc_print_sqlerror) := GetProcedureAddress(IBaseLibraryHandle,'isc_print_sqlerror');
+    pointer(isc_print_status) := GetProcedureAddress(IBaseLibraryHandle,'isc_print_status');
+    pointer(isc_put_segment) := GetProcedureAddress(IBaseLibraryHandle,'isc_put_segment');
+    pointer(isc_put_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_put_slice');
+    pointer(isc_que_events) := GetProcedureAddress(IBaseLibraryHandle,'isc_que_events');
+    pointer(isc_rollback_retaining) := GetProcedureAddress(IBaseLibraryHandle,'isc_rollback_retaining');
+    pointer(isc_rollback_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_rollback_transaction');
+    pointer(isc_start_multiple) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_multiple');
+    pointer(isc_start_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_transaction');
+    pointer(isc_sqlcode) := GetProcedureAddress(IBaseLibraryHandle,'isc_sqlcode');
+    pointer(isc_sql_interprete) := GetProcedureAddress(IBaseLibraryHandle,'isc_sql_interprete');
+    pointer(isc_transaction_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_transaction_info');
+    pointer(isc_transact_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_transact_request');
+    pointer(isc_vax_integer) := GetProcedureAddress(IBaseLibraryHandle,'isc_vax_integer');
+    pointer(isc_portable_integer) := GetProcedureAddress(IBaseLibraryHandle,'isc_portable_integer');
+    pointer(isc_add_user) := GetProcedureAddress(IBaseLibraryHandle,'isc_add_user');
+    pointer(isc_delete_user) := GetProcedureAddress(IBaseLibraryHandle,'isc_delete_user');
+    pointer(isc_modify_user) := GetProcedureAddress(IBaseLibraryHandle,'isc_modify_user');
+    pointer(isc_compile_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_request');
+    pointer(isc_compile_request2) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_request2');
+    pointer(isc_ddl) := GetProcedureAddress(IBaseLibraryHandle,'isc_ddl');
+    pointer(isc_prepare_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_prepare_transaction');
+    pointer(isc_receive) := GetProcedureAddress(IBaseLibraryHandle,'isc_receive');
+    pointer(isc_reconnect_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_reconnect_transaction');
+    pointer(isc_release_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_release_request');
+    pointer(isc_request_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_request_info');
+    pointer(isc_seek_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_seek_blob');
+    pointer(isc_send) := GetProcedureAddress(IBaseLibraryHandle,'isc_send');
+    pointer(isc_start_and_send) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_and_send');
+    pointer(isc_start_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_request');
+    pointer(isc_unwind_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_unwind_request');
+    pointer(isc_wait_for_event) := GetProcedureAddress(IBaseLibraryHandle,'isc_wait_for_event');
+    pointer(isc_close) := GetProcedureAddress(IBaseLibraryHandle,'isc_close');
+    pointer(isc_declare) := GetProcedureAddress(IBaseLibraryHandle,'isc_declare');
+    pointer(isc_describe) := GetProcedureAddress(IBaseLibraryHandle,'isc_describe');
+    pointer(isc_describe_bind) := GetProcedureAddress(IBaseLibraryHandle,'isc_describe_bind');
+    pointer(isc_execute) := GetProcedureAddress(IBaseLibraryHandle,'isc_execute');
+    pointer(isc_execute_immediate) := GetProcedureAddress(IBaseLibraryHandle,'isc_execute_immediate');
+    pointer(isc_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_fetch');
+    pointer(isc_open) := GetProcedureAddress(IBaseLibraryHandle,'isc_open');
+    pointer(isc_prepare) := GetProcedureAddress(IBaseLibraryHandle,'isc_prepare');
+    pointer(isc_dsql_execute_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute_m');
+    pointer(isc_dsql_execute2_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute2_m');
+    pointer(isc_dsql_execute_immediate_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute_immediate_m');
+    pointer(isc_dsql_exec_immed3_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_exec_immed3_m');
+    pointer(isc_dsql_fetch_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_fetch_m');
+    pointer(isc_dsql_insert_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_insert_m');
+    pointer(isc_dsql_prepare_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_prepare_m');
+    pointer(isc_dsql_release) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_release');
+    pointer(isc_embed_dsql_close) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_close');
+    pointer(isc_embed_dsql_declare) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_declare');
+    pointer(isc_embed_dsql_describe) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_describe');
+    pointer(isc_embed_dsql_describe_bind) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_describe_bind');
+    pointer(isc_embed_dsql_execute) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_execute');
+    pointer(isc_embed_dsql_execute2) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_execute2');
+    pointer(isc_embed_dsql_execute_immed) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_execute_immed');
+    pointer(isc_embed_dsql_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_fetch');
+    pointer(isc_embed_dsql_open) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_open');
+    pointer(isc_embed_dsql_open2) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_open2');
+    pointer(isc_embed_dsql_insert) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_insert');
+    pointer(isc_embed_dsql_prepare) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_prepare');
+    pointer(isc_embed_dsql_release) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_release');
+    pointer(BLOB_open) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_open');
+    pointer(BLOB_put) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_put');
+    pointer(BLOB_close) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_close');
+    pointer(BLOB_get) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_get');
+    pointer(BLOB_display) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_display');
+    pointer(BLOB_dump) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_dump');
+    pointer(BLOB_edit) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_edit');
+    pointer(BLOB_load) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_load');
+    pointer(BLOB_text_dump) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_text_dump');
+    pointer(BLOB_text_load) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_text_load');
+    pointer(Bopen) := GetProcedureAddress(IBaseLibraryHandle,'Bopen');
+{$IFDEF Unix}
+    pointer(Bopen2) := GetProcedureAddress(IBaseLibraryHandle,'Bopen2');
 {$ENDIF}
-    (pvar:@isc_ftof; name:'isc_ftof'; weak:false),
-    (pvar:@isc_print_blr; name:'isc_print_blr'; weak:false),
-    (pvar:@isc_set_debug; name:'isc_set_debug'; weak:false),
-    (pvar:@isc_qtoq; name:'isc_qtoq'; weak:false),
-    (pvar:@isc_vtof; name:'isc_vtof'; weak:false),
-    (pvar:@isc_vtov; name:'isc_vtov'; weak:false),
-    (pvar:@isc_version; name:'isc_version'; weak:false),
+    pointer(isc_ftof) := GetProcedureAddress(IBaseLibraryHandle,'isc_ftof');
+    pointer(isc_print_blr) := GetProcedureAddress(IBaseLibraryHandle,'isc_print_blr');
+    pointer(isc_set_debug) := GetProcedureAddress(IBaseLibraryHandle,'isc_set_debug');
+    pointer(isc_qtoq) := GetProcedureAddress(IBaseLibraryHandle,'isc_qtoq');
+    pointer(isc_vtof) := GetProcedureAddress(IBaseLibraryHandle,'isc_vtof');
+    pointer(isc_vtov) := GetProcedureAddress(IBaseLibraryHandle,'isc_vtov');
+    pointer(isc_version) := GetProcedureAddress(IBaseLibraryHandle,'isc_version');
 {$IFDEF Unix}
-    (pvar:@isc_reset_fpe; name:'isc_reset_fpe'; weak:false),
+    pointer(isc_reset_fpe) := GetProcedureAddress(IBaseLibraryHandle,'isc_reset_fpe');
 {$ENDIF}
-    (pvar:@isc_service_attach; name:'isc_service_attach'; weak:false),
-    (pvar:@isc_service_detach; name:'isc_service_detach'; weak:false),
-    (pvar:@isc_service_query; name:'isc_service_query'; weak:false),
-    (pvar:@isc_service_start; name:'isc_service_start'; weak:false)
-{$IFDEF Unix} { weak functions, be careful! }
-   ,(pvar:@isc_compile_map; name:'isc_compile_map'; weak:true),
-    (pvar:@isc_compile_menu; name:'isc_compile_menu'; weak:true),
-    (pvar:@isc_compile_sub_map; name:'isc_compile_sub_map'; weak:true),
-    (pvar:@isc_create_window; name:'isc_create_window'; weak:true),
-    (pvar:@isc_delete_window; name:'isc_delete_window'; weak:true),
-    (pvar:@isc_drive_form; name:'isc_drive_form'; weak:true),
-    (pvar:@isc_drive_menu; name:'isc_drive_menu'; weak:true),
-    (pvar:@isc_form_delete; name:'isc_form_delete'; weak:true),
-    (pvar:@isc_form_fetch; name:'isc_form_fetch'; weak:true),
-    (pvar:@isc_form_insert; name:'isc_form_insert'; weak:true),
-    (pvar:@isc_get_entree; name:'isc_get_entree'; weak:true),
-    (pvar:@isc_initialize_menu; name:'isc_initialize_menu'; weak:true),
-    (pvar:@isc_menu; name:'isc_menu'; weak:true),
-    (pvar:@isc_load_form; name:'isc_load_form'; weak:true),
-    (pvar:@isc_pop_window; name:'isc_pop_window'; weak:true),
-    (pvar:@isc_put_entree; name:'isc_put_entree'; weak:true),
-    (pvar:@isc_reset_form; name:'isc_reset_form'; weak:true),
-    (pvar:@isc_suspend_window; name:'isc_suspend_window'; weak:true)
+    pointer(isc_service_attach) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_attach');
+    pointer(isc_service_detach) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_detach');
+    pointer(isc_service_query) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_query');
+    pointer(isc_service_start) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_start');
+{$IFDEF Unix}
+    pointer(isc_compile_map) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_map');
+    pointer(isc_compile_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_menu');
+    pointer(isc_compile_sub_map) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_sub_map');
+    pointer(isc_create_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_window');
+    pointer(isc_delete_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_delete_window');
+    pointer(isc_drive_form) := GetProcedureAddress(IBaseLibraryHandle,'isc_drive_form');
+    pointer(isc_drive_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_drive_menu');
+    pointer(isc_form_delete) := GetProcedureAddress(IBaseLibraryHandle,'isc_form_delete');
+    pointer(isc_form_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_form_fetch');
+    pointer(isc_form_insert) := GetProcedureAddress(IBaseLibraryHandle,'isc_form_insert');
+    pointer(isc_get_entree) := GetProcedureAddress(IBaseLibraryHandle,'isc_get_entree');
+    pointer(isc_initialize_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_initialize_menu');
+    pointer(isc_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_menu');
+    pointer(isc_load_form) := GetProcedureAddress(IBaseLibraryHandle,'isc_load_form');
+    pointer(isc_pop_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_pop_window');
+    pointer(isc_put_entree) := GetProcedureAddress(IBaseLibraryHandle,'isc_put_entree');
+    pointer(isc_reset_form) := GetProcedureAddress(IBaseLibraryHandle,'isc_reset_form');
+    pointer(isc_suspend_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_suspend_window');
 {$ENDIF}
-  );
-
-function InitializeIBase(UseEmbeddedFirebird: Boolean): Integer;
-begin
-  if UseEmbeddedFirebird then
-    Result := InitializeLibrary(IBaseLibrary, fbembedlib)
+    end
   else
-    Result := InitializeLibrary(IBaseLibrary);
+    inc(RefCount);
+  Result := RefCount;
 end;
 
-function InitializeIBase(const LibraryName: String): Integer;
-begin
-  Result := InitializeLibrary(IBaseLibrary, LibraryName);
-end;
-
-function TryInitializeIBase(const LibraryName: string): Integer;
-begin
-  Result := TryInitializeLibrary(IBaseLibrary, LibraryName);
-end;
+function InitialiseIBase60 : integer;
 
-function ReleaseIBase: Integer;
 begin
-  Result := ReleaseLibrary(IBaseLibrary);
+  Result := 0;
+  If UseEmbeddedFirebird then
+    begin
+    If (TryInitialiseIBase60(fbembedlib)=0) then
+      Raise EInOutError.CreateFmt(SErrEmbeddedFailed,[fbembedlib]);
+    end
+  else
+    begin
+    If (TryInitialiseIBase60(fbclib)=0) and
+       (TryInitialiseIBase60(gdslib)=0) then
+        Raise EInOutError.CreateFmt(SErrDefaultsFailed,[gdslib,fbclib]);
+    end;    
+  Result := RefCount;
 end;
 
 function InitialiseIBase60(Const LibraryName : String) : integer;
-begin
-  Result := InitializeIBase(LibraryName);
-end;
 
-function InitialiseIBase60: integer;
 begin
-  Result := InitializeIBase(UseEmbeddedFirebird);
+  Result := TryInitialiseIBase60(LibraryName);
+  If Result = 0 then
+    Raise EInOutError.CreateFmt(SErrLoadFailed,[LibraryName])
+  else If (LibraryName<>LoadedLibrary) then
+    begin
+    Dec(RefCount);
+    Result := RefCount;
+    Raise EInOUtError.CreateFmt(SErrAlreadyLoaded,[LoadedLibrary]);
+    end;
 end;
 
-procedure ReleaseIBase60;
+
+Procedure ReleaseIBase60;
+
 begin
-  ReleaseIBase;
+  if RefCount>1 then
+    Dec(RefCount)
+  else if UnloadLibrary(IBaseLibraryHandle) then 
+    begin
+    Dec(RefCount);
+    IBaseLibraryHandle := NilHandle;
+    LoadedLibrary:='';
+    end;
 end;
 
-initialization
-  IBaseLibrary := LibraryHandler('Interbase', [gdslib,fbclib], @ibsymbols, length(ibsymbols));
 {$ENDIF}
 
+function XSQLDA_LENGTH(n: Integer): Integer;
+begin
+  Result := SizeOf(XSQLDA) + (n - 1) * SizeOf(XSQLVAR);
+end;
+
 

+ 1 - 1
packages/ibase/src/ibase60.pp

@@ -2,7 +2,7 @@
 }
 unit ibase60;
 
-{$UNDEF LOAD_DYNAMICALLY}
+{$UNDEF LinkDynamically}
 
 {$i ibase60.inc}
 

+ 1 - 1
packages/ibase/src/ibase60dyn.pp

@@ -11,7 +11,7 @@
 
 unit ibase60dyn;
 
-{$DEFINE LOAD_DYNAMICALLY}
+{$DEFINE LinkDynamically}
 
 {$i ibase60.inc}
 

+ 237 - 236
packages/mysql/src/mysql.inc

@@ -22,25 +22,30 @@
 interface
 
 uses
-  dynlibs, ctypes;
+{$IFDEF LinkDynamically}
+      sysutils,
+{$ENDIF}
+     dynlibs,ctypes;
 
-{$IFDEF UNIX}
+{$IFDEF Unix}
   {$DEFINE extdecl:=cdecl}
   const
     mysqllib = 'libmysqlclient.'+sharedsuffix;
+
   {$IF DEFINED(mysql50)}
-    mysqlvlib = mysqllib+'.15';
+    mysqlvlib = 'libmysqlclient.'+sharedsuffix+'.15';
   {$ELSEIF DEFINED(mysql41)}
-    mysqlvlib = mysqllib+'.14';
+    mysqlvlib = 'libmysqlclient.'+sharedsuffix+'.14';
   {$ELSE}
-    mysqlvlib = mysqllib+'.12';
+    mysqlvlib = 'libmysqlclient.'+sharedsuffix+'.12';
   {$ENDIF}
+
 {$ENDIF}
-{$IFDEF WINDOWS}
+{$IFDEF Windows}
   {$DEFINE extdecl:=stdcall}
   const
     mysqllib = 'libmysql.dll';
-    mysqlvlib = mysqllib;
+    mysqlvlib = 'libmysql.dll';
 {$ENDIF}
 
 {$IFDEF mysql50}
@@ -50,17 +55,17 @@ uses
 {$PACKRECORDS C}
 
   { Copyright (C) 2000-2003 MySQL AB
-
+  
      This program is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published by
      the Free Software Foundation; either version 2 of the License, or
      (at your option) any later version.
-
+  
      This program is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      GNU General Public License for more details.
-
+  
      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  }
@@ -78,7 +83,7 @@ uses
 
        Pmy_socket = ^my_socket;
        my_socket = cint;
-
+       
 {  ------------ Start of declaration in "mysql_com.h"   ---------------------  }
 
   {
@@ -396,7 +401,7 @@ uses
 
     function net_new_transaction(net : st_net) : st_net;
 
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
     function my_net_init(net:PNET; vio:PVio):my_bool;cdecl;external mysqllib name 'my_net_init';
     procedure my_net_local_init(net:PNET);cdecl;external mysqllib name 'my_net_local_init';
     procedure net_end(net:PNET);cdecl;external mysqllib name 'net_end';
@@ -417,7 +422,7 @@ uses
        sockaddr = record
            // undefined structure
          end;
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
     function my_connect(s:my_socket; name:Psockaddr; namelen:cuint; timeout:cuint):cint;cdecl;external mysqllib name 'my_connect';
 {$ENDIF}
 
@@ -477,7 +482,7 @@ uses
 
     { These functions are used for authentication by client and server and
       implemented in sql/password.c     }
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
     procedure randominit(_para1:Prand_struct; seed1:culong; seed2:culong);cdecl;external mysqllib name 'randominit';
     function my_rnd(_para1:Prand_struct):cdouble;cdecl;external mysqllib name 'my_rnd';
     procedure create_random_string(fto:Pchar; length:cuint; rand_st:Prand_struct);cdecl;external mysqllib name 'create_random_string';
@@ -517,7 +522,7 @@ uses
 {$ENDIF}
 
 {$ifdef _global_h}
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
     function net_field_length(packet:PPuchar):culong;extdecl;external mysqllib name 'net_field_length_ll';
     function net_field_length_ll(packet:PPuchar):my_ulonglong;cdecl;external mysqllib name 'net_field_length_ll';
     function net_store_length(pkg:Pchar; length:ulonglong):Pchar;cdecl;external mysqllib name 'net_store_length';
@@ -563,7 +568,7 @@ uses
 { $include "typelib.h"}
 { $include "my_list.h" /* for LISTs used in 'MYSQL' and 'MYSQL_STMT' */}
 
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
       var
          mysql_port : cuint;cvar;external;
          mysql_unix_port : Pchar;cvar;external;
@@ -572,7 +577,7 @@ uses
       const
          CLIENT_NET_READ_TIMEOUT = 365*24*3600;     // Timeout on read
          CLIENT_NET_WRITE_TIMEOUT = 365*24*3600;    // Timeout on write
-
+      
 {$ifdef NETWARE}
 (** unsupported pragma#pragma pack(push, 8)		/* 8 byte alignment */*)
 {$endif}
@@ -703,7 +708,7 @@ uses
 {$ENDIF}
 { $endif}
          end;
-
+         
        MYSQL_DATA = st_mysql_data;
        PMYSQL_DATA = ^MYSQL_DATA;
        mysql_option = (MYSQL_OPT_CONNECT_TIMEOUT,MYSQL_OPT_COMPRESS,
@@ -1020,7 +1025,7 @@ uses
 
     {
       Note: this info is from the mysql-5.0 version:
-
+    
       This structure is used to define bind information, and
       internally by the client library.
       Public members with their descriptions are listed below
@@ -1182,7 +1187,7 @@ uses
 //#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet)
 //#define net_buffer_length (*mysql_get_parameters()->p_net_buffer_length)
 
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
     { Set up and bring down the server; to ensure that applications will
       work when linked against either the standard client library or the
       embedded server library, these functions should be called.     }
@@ -1280,7 +1285,7 @@ uses
       mysql_use_result: function (mysql:PMYSQL):PMYSQL_RES;extdecl;
 {$ENDIF}
 
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
     { perform query on master  }
     function mysql_master_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqllib name 'mysql_master_query';
     function mysql_master_send_query(mysql:PMYSQL; q:Pchar; length:culong):my_bool;extdecl;external mysqllib name 'mysql_master_send_query';
@@ -1298,7 +1303,7 @@ uses
     const
        LOCAL_INFILE_ERROR_LEN = 512;
 
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
 {    procedure mysql_set_local_infile_handler(mysql:PMYSQL; local_infile_init:function (_para1:Ppointer; _para2:Pchar; _para3:pointer):longint; local_infile_read:function (_para1:pointer; _para2:Pchar; _para3:dword):longint; local_infile_end:procedure (_pa
                 _para6:pointer);cdecl;external mysqllib name 'mysql_set_local_infile_handler';}
     procedure mysql_set_local_infile_default(mysql:PMYSQL);cdecl;external mysqllib name 'mysql_set_local_infile_default';
@@ -1482,7 +1487,7 @@ uses
 
     function mysql_reload(mysql : PMySQL) : cint;
 
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
 {$ifdef USE_OLD_FUNCTIONS}
     function mysql_connect(mysql:PMYSQL; host:Pchar; user:Pchar; passwd:Pchar):PMYSQL;extdecl;external External_library name 'mysql_connect';
     function mysql_create_db(mysql:PMYSQL; DB:Pchar):cint;extdecl;external External_library name 'mysql_create_db';
@@ -1491,12 +1496,12 @@ uses
 {$endif}
 {$endif}
 
-{$define HAVE_MYSQL_REAL_CONNECT}
+{$define HAVE_MYSQL_REAL_CONNECT}    
     { The following functions are mainly exported because of mysqlbinlog;
       They are not for general usage     }
 
     function simple_command(mysql,command,arg,length,skip_check : cint) : cint;
-{$IFNDEF LOAD_DYNAMICALLY}
+{$IFNDEF LinkDynamically}
     function net_safe_read(mysql:PMYSQL):cuint;cdecl;external mysqllib name 'net_safe_read';
 {$ENDIF}
 
@@ -1504,249 +1509,245 @@ uses
 (** unsupported pragma#pragma pack(pop)		/* restore alignment */*)
 {$endif}
 
-{$IFDEF LOAD_DYNAMICALLY}
-function InitializeMysql(const LibraryName: String = ''; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer;
-function TryInitializeMysql(const LibraryName: string = ''; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer;
-function ReleaseMysql: Integer;
+{$IFDEF LinkDynamically}
+Function InitialiseMysql(Const LibraryName : String; argc:cint = -1; argv:PPchar = nil; groups:PPchar = nil) : Integer;
+Function InitialiseMysql(argc:cint = -1; argv:PPchar = nil; groups:PPchar = nil) : Integer;
+Procedure ReleaseMysql;
 
-var
-  MysqlLibrary: TLibHandler;
-
-function InitialiseMysql(argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer; deprecated;
-function InitialiseMysql(const LibraryName: String; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer; deprecated;
-function TryInitialiseMysql(const LibraryName: string; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer; deprecated;
+var MysqlLibraryHandle : TLibHandle;
 {$ENDIF}
 
 implementation
 
+{$IFDEF LinkDynamically}
 
-function net_new_transaction(net : st_net) : st_net;
-begin
-  net.pkt_nr := 0;
-  result := net;
-end;
+ResourceString
+  SErrAlreadyLoaded  = 'MySQL interface already initialized from library %s.';
+  SErrLoadFailed     = 'Can not load MySQL library "%s". Please check your installation.';
+  SErrDefaultsFailed = 'Can not load default MySQL library ("%s" or "%s"). Check your installation.';
 
-function IS_PRI_KEY(n : longint) : boolean;
-begin
-  IS_PRI_KEY:=(n and PRI_KEY_FLAG)<>0;
-end;
+var 
+  RefCount : integer;
+  LoadedLibrary : String;
 
-function IS_NOT_NULL(n : longint) : boolean;
-begin
- IS_NOT_NULL:=(n and NOT_NULL_FLAG)<>0;
-end;
+Function TryInitialiseMysql(Const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar) : Integer;
 
-function IS_BLOB(n : longint) : boolean;
 begin
- IS_BLOB:=(n and BLOB_FLAG)<>0;
-end;
+  Result := 0;
+  if (RefCount=0) then
+    begin
+    MysqlLibraryHandle := loadlibrary(LibraryName);
+    if (MysqlLibraryHandle=nilhandle) then
+      Exit;
+    Inc(RefCount);
+    LoadedLibrary:=LibraryName;
+// Only the procedure that are given in the c-library documentation are loaded, to
+// avoid problems with 'incomplete' libraries
+    pointer(my_init) := GetProcedureAddress(MysqlLibraryHandle,'my_init');
+    pointer(my_thread_init) := GetProcedureAddress(MysqlLibraryHandle,'my_thread_init');
+    pointer(my_thread_end) := GetProcedureAddress(MysqlLibraryHandle,'my_thread_end');
+
+    pointer(mysql_affected_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_affected_rows');
+    pointer(mysql_autocommit) := GetProcedureAddress(MysqlLibraryHandle,'mysql_autocommit');
+    pointer(mysql_change_user) := GetProcedureAddress(MysqlLibraryHandle,'mysql_change_user');
+//    pointer(mysql_charset_name) := GetProcedureAddress(MysqlLibraryHandle,'mysql_charset_name');
+    pointer(mysql_close) := GetProcedureAddress(MysqlLibraryHandle,'mysql_close');
+    pointer(mysql_commit) := GetProcedureAddress(MysqlLibraryHandle,'mysql_commit');
+//    pointer(mysql_connect) := GetProcedureAddress(MysqlLibraryHandle,'mysql_connect');
+//    pointer(mysql_create_db) := GetProcedureAddress(MysqlLibraryHandle,'mysql_create_db');
+    pointer(mysql_data_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_data_seek');
+//    pointer(mysql_drop_db) := GetProcedureAddress(MysqlLibraryHandle,'mysql_drop_db');
+    pointer(mysql_debug) := GetProcedureAddress(MysqlLibraryHandle,'mysql_debug');
+    pointer(mysql_dump_debug_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_dump_debug_info');
+    pointer(mysql_eof) := GetProcedureAddress(MysqlLibraryHandle,'mysql_eof');
+    pointer(mysql_errno) := GetProcedureAddress(MysqlLibraryHandle,'mysql_errno');
+    pointer(mysql_error) := GetProcedureAddress(MysqlLibraryHandle,'mysql_error');
+    pointer(mysql_escape_string) := GetProcedureAddress(MysqlLibraryHandle,'mysql_escape_string');
+    pointer(mysql_fetch_field) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_field');
+    pointer(mysql_fetch_field_direct) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_field_direct');
+    pointer(mysql_fetch_fields) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_fields');
+    pointer(mysql_fetch_lengths) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_lengths');
+    pointer(mysql_fetch_row) := GetProcedureAddress(MysqlLibraryHandle,'mysql_fetch_row');
+    pointer(mysql_field_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_field_seek');
+    pointer(mysql_field_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_field_count');
+    pointer(mysql_field_tell) := GetProcedureAddress(MysqlLibraryHandle,'mysql_field_tell');
+    pointer(mysql_free_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_free_result');
+    pointer(mysql_get_client_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_client_info');
+    pointer(mysql_get_client_version) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_client_version');
+    pointer(mysql_get_host_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_host_info');
+    pointer(mysql_get_server_version) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_server_version');
+    pointer(mysql_get_proto_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_proto_info');
+    pointer(mysql_get_server_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_get_server_info');
+    pointer(mysql_info) := GetProcedureAddress(MysqlLibraryHandle,'mysql_info');
+    pointer(mysql_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_init');
+    pointer(mysql_insert_id) := GetProcedureAddress(MysqlLibraryHandle,'mysql_insert_id');
+    pointer(mysql_kill) := GetProcedureAddress(MysqlLibraryHandle,'mysql_kill');
+    pointer(mysql_library_end) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_end');
+    pointer(mysql_library_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_init');
+    pointer(mysql_list_dbs) := GetProcedureAddress(MysqlLibraryHandle,'mysql_list_dbs');
+    pointer(mysql_list_fields) := GetProcedureAddress(MysqlLibraryHandle,'mysql_list_fields');
+    pointer(mysql_list_processes) := GetProcedureAddress(MysqlLibraryHandle,'mysql_list_processes');
+    pointer(mysql_list_tables) := GetProcedureAddress(MysqlLibraryHandle,'mysql_list_tables');
+    pointer(mysql_more_results) := GetProcedureAddress(MysqlLibraryHandle,'mysql_more_results');
+    pointer(mysql_next_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_next_result');
+    pointer(mysql_num_fields) := GetProcedureAddress(MysqlLibraryHandle,'mysql_num_fields');
+    pointer(mysql_num_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_num_rows');
+    pointer(mysql_options) := GetProcedureAddress(MysqlLibraryHandle,'mysql_options');
+    pointer(mysql_ping) := GetProcedureAddress(MysqlLibraryHandle,'mysql_ping');
+    pointer(mysql_query) := GetProcedureAddress(MysqlLibraryHandle,'mysql_query');
+    pointer(mysql_real_connect) := GetProcedureAddress(MysqlLibraryHandle,'mysql_real_connect');
+    pointer(mysql_real_escape_string) := GetProcedureAddress(MysqlLibraryHandle,'mysql_real_escape_string');
+    pointer(mysql_real_query) := GetProcedureAddress(MysqlLibraryHandle,'mysql_real_query');
+    pointer(mysql_refresh) := GetProcedureAddress(MysqlLibraryHandle,'mysql_refresh');
+//    pointer(mysql_reload) := GetProcedureAddress(MysqlLibraryHandle,'mysql_reload');
+    pointer(mysql_rollback) := GetProcedureAddress(MysqlLibraryHandle,'mysql_rollback');
+    pointer(mysql_row_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_row_seek');
+    pointer(mysql_row_tell) := GetProcedureAddress(MysqlLibraryHandle,'mysql_row_tell');
+    pointer(mysql_select_db) := GetProcedureAddress(MysqlLibraryHandle,'mysql_select_db');
+    pointer(mysql_server_end) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_end');
+    pointer(mysql_server_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_server_init');
+    pointer(mysql_set_server_option) := GetProcedureAddress(MysqlLibraryHandle,'mysql_set_server_option');
+    pointer(mysql_sqlstate) := GetProcedureAddress(MysqlLibraryHandle,'mysql_sqlstate');
+    pointer(mysql_shutdown) := GetProcedureAddress(MysqlLibraryHandle,'mysql_shutdown');
+    pointer(mysql_stat) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stat');
+    pointer(mysql_store_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_store_result');
+    pointer(mysql_thread_id) := GetProcedureAddress(MysqlLibraryHandle,'mysql_thread_id');
+//    pointer(mysql_thread_save) := GetProcedureAddress(MysqlLibraryHandle,'mysql_thread_save');
+    pointer(mysql_use_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_use_result');
+    pointer(mysql_warning_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_warning_count');
+    pointer(mysql_stmt_init) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_init');
+    pointer(mysql_stmt_prepare) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_prepare');
+    pointer(mysql_stmt_execute) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_execute');
+    pointer(mysql_stmt_fetch) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_fetch');
+    pointer(mysql_stmt_fetch_column) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_fetch_column');
+    pointer(mysql_stmt_store_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_store_result');
+    pointer(mysql_stmt_param_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_param_count');
+    pointer(mysql_stmt_attr_set) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_attr_set');
+    pointer(mysql_stmt_attr_get) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_attr_get');
+    pointer(mysql_stmt_bind_param) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_bind_param');
+    pointer(mysql_stmt_bind_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_bind_result');
+    pointer(mysql_stmt_close) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_close');
+    pointer(mysql_stmt_reset) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_reset');
+    pointer(mysql_stmt_free_result) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_free_result');
+    pointer(mysql_stmt_send_long_data) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_send_long_data');
+    pointer(mysql_stmt_result_metadata) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_result_metadata');
+    pointer(mysql_stmt_param_metadata) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_param_metadata');
+    pointer(mysql_stmt_errno) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_errno');
+    pointer(mysql_stmt_error) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_error');
+    pointer(mysql_stmt_sqlstate) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_sqlstate');
+    pointer(mysql_stmt_row_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_row_seek');
+    pointer(mysql_stmt_row_tell) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_row_tell');
+    pointer(mysql_stmt_data_seek) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_data_seek');
+    pointer(mysql_stmt_num_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_num_rows');
+    pointer(mysql_stmt_affected_rows) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_affected_rows');
+    pointer(mysql_stmt_insert_id) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_insert_id');
+    pointer(mysql_stmt_field_count) := GetProcedureAddress(MysqlLibraryHandle,'mysql_stmt_field_count');
+
+    if mysql_library_init(argc, argv, groups) <> 0 then
+      Exit;
+    end
+  else
+    inc(RefCount);
 
-function IS_NUM_FIELD(f : pst_mysql_field) : boolean;
-begin
-   IS_NUM_FIELD:=((f^.flags) and NUM_FLAG)<>0;
+  Result:=RefCount;
 end;
 
-function IS_NUM(t : enum_field_types) : boolean;
-begin
-{$IFDEF mysql50}
-  IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR) or (t=FIELD_TYPE_NEWDECIMAL);
-{$ELSE}
-  IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR);
-{$ENDIF}
-end;
+Function InitialiseMysql(argc: cint; argv: PPchar; groups: PPchar) : Integer;
 
-function INTERNAL_NUM_FIELD(f : Pst_mysql_field) : boolean;
 begin
-  INTERNAL_NUM_FIELD := (f^.ftype <= FIELD_TYPE_INT24) and ((f^.ftype <> FIELD_TYPE_TIMESTAMP)
-  or (f^.length = 14) or (f^.length=8)) or (f^.ftype=FIELD_TYPE_YEAR);
+  Result := 0;
+  If (TryInitialiseMysql(mysqlvlib,argc,argv,groups) = 0) and
+     (TryInitialiseMysql(mysqllib,argc,argv,groups) = 0) then
+      Raise EInOutError.CreateFmt(SErrDefaultsFailed,[mysqlvlib,mysqllib]);
+  Result := RefCount;
 end;
 
-function mysql_reload(mysql : PMySQL) : cint;
-begin
-  mysql_reload:=mysql_refresh(mysql,REFRESH_GRANT);
-end;
+Function InitialiseMysql(Const LibraryName: String; argc: cint; argv: PPchar; groups:PPchar) : Integer;
 
-function simple_command(mysql,command,arg,length,skip_check : longint) : longint;
 begin
-  //simple_command:=mysql^.(methods^.advanced_command)(mysqlcommandNullS0arglengthskip_check);
-  result := -1;
+  Result := TryInitialiseMysql(LibraryName,argc,argv,groups);
+  If Result = 0 then
+    Raise EInOutError.CreateFmt(SErrLoadFailed,[LibraryName])
+  else If (LibraryName<>LoadedLibrary) then
+    begin
+    Dec(RefCount);
+    Result := RefCount;
+    Raise EInOUtError.CreateFmt(SErrAlreadyLoaded,[LoadedLibrary]);
+    end;
 end;
 
+Procedure ReleaseMysql;
 
-{$IFDEF LOAD_DYNAMICALLY}
-const
-  mysql_symbols: array[0..91] of TLibSymbol = (
-  // Only the procedure that are given in the c-library documentation are loaded, to
-  // avoid problems with 'incomplete' libraries
-    (pvar:@my_init; name:'my_init'; weak:false),
-    (pvar:@my_thread_init; name:'my_thread_init'; weak:true),
-    (pvar:@my_thread_end; name:'my_thread_end'; weak:true),
-
-    (pvar:@mysql_affected_rows; name:'mysql_affected_rows'; weak:false),
-    (pvar:@mysql_autocommit; name:'mysql_autocommit'; weak:false),
-    (pvar:@mysql_change_user; name:'mysql_change_user'; weak:false),
-  //    (pvar:@mysql_charset_name; name:'mysql_charset_name'; weak:false),
-    (pvar:@mysql_close; name:'mysql_close'; weak:false),
-    (pvar:@mysql_commit; name:'mysql_commit'; weak:false),
-  //    (pvar:@mysql_connect; name:'mysql_connect'; weak:false),
-  //    (pvar:@mysql_create_db; name:'mysql_create_db'; weak:false),
-    (pvar:@mysql_data_seek; name:'mysql_data_seek'; weak:false),
-  //    (pvar:@mysql_drop_db; name:'mysql_drop_db'; weak:false),
-    (pvar:@mysql_debug; name:'mysql_debug'; weak:false),
-    (pvar:@mysql_dump_debug_info; name:'mysql_dump_debug_info'; weak:false),
-    (pvar:@mysql_eof; name:'mysql_eof'; weak:false),
-    (pvar:@mysql_errno; name:'mysql_errno'; weak:false),
-    (pvar:@mysql_error; name:'mysql_error'; weak:false),
-    (pvar:@mysql_escape_string; name:'mysql_escape_string'; weak:false),
-    (pvar:@mysql_fetch_field; name:'mysql_fetch_field'; weak:false),
-    (pvar:@mysql_fetch_field_direct; name:'mysql_fetch_field_direct'; weak:false),
-    (pvar:@mysql_fetch_fields; name:'mysql_fetch_fields'; weak:false),
-    (pvar:@mysql_fetch_lengths; name:'mysql_fetch_lengths'; weak:false),
-    (pvar:@mysql_fetch_row; name:'mysql_fetch_row'; weak:false),
-    (pvar:@mysql_field_seek; name:'mysql_field_seek'; weak:false),
-    (pvar:@mysql_field_count; name:'mysql_field_count'; weak:false),
-    (pvar:@mysql_field_tell; name:'mysql_field_tell'; weak:false),
-    (pvar:@mysql_free_result; name:'mysql_free_result'; weak:false),
-    (pvar:@mysql_get_client_info; name:'mysql_get_client_info'; weak:false),
-    (pvar:@mysql_get_client_version; name:'mysql_get_client_version'; weak:false),
-    (pvar:@mysql_get_host_info; name:'mysql_get_host_info'; weak:false),
-    (pvar:@mysql_get_server_version; name:'mysql_get_server_version'; weak:false),
-    (pvar:@mysql_get_proto_info; name:'mysql_get_proto_info'; weak:false),
-    (pvar:@mysql_get_server_info; name:'mysql_get_server_info'; weak:false),
-    (pvar:@mysql_info; name:'mysql_info'; weak:false),
-    (pvar:@mysql_init; name:'mysql_init'; weak:false),
-    (pvar:@mysql_insert_id; name:'mysql_insert_id'; weak:false),
-    (pvar:@mysql_kill; name:'mysql_kill'; weak:false),
-    (pvar:@mysql_library_end; name:'mysql_server_end'; weak:false),
-    (pvar:@mysql_library_init; name:'mysql_server_init'; weak:false),
-    (pvar:@mysql_list_dbs; name:'mysql_list_dbs'; weak:false),
-    (pvar:@mysql_list_fields; name:'mysql_list_fields'; weak:false),
-    (pvar:@mysql_list_processes; name:'mysql_list_processes'; weak:false),
-    (pvar:@mysql_list_tables; name:'mysql_list_tables'; weak:false),
-    (pvar:@mysql_more_results; name:'mysql_more_results'; weak:false),
-    (pvar:@mysql_next_result; name:'mysql_next_result'; weak:false),
-    (pvar:@mysql_num_fields; name:'mysql_num_fields'; weak:false),
-    (pvar:@mysql_num_rows; name:'mysql_num_rows'; weak:false),
-    (pvar:@mysql_options; name:'mysql_options'; weak:false),
-    (pvar:@mysql_ping; name:'mysql_ping'; weak:false),
-    (pvar:@mysql_query; name:'mysql_query'; weak:false),
-    (pvar:@mysql_real_connect; name:'mysql_real_connect'; weak:false),
-    (pvar:@mysql_real_escape_string; name:'mysql_real_escape_string'; weak:false),
-    (pvar:@mysql_real_query; name:'mysql_real_query'; weak:false),
-    (pvar:@mysql_refresh; name:'mysql_refresh'; weak:false),
-  //    (pvar:@mysql_reload; name:'mysql_reload'; weak:false),
-    (pvar:@mysql_rollback; name:'mysql_rollback'; weak:false),
-    (pvar:@mysql_row_seek; name:'mysql_row_seek'; weak:false),
-    (pvar:@mysql_row_tell; name:'mysql_row_tell'; weak:false),
-    (pvar:@mysql_select_db; name:'mysql_select_db'; weak:false),
-    (pvar:@mysql_server_end; name:'mysql_server_end'; weak:false),
-    (pvar:@mysql_server_init; name:'mysql_server_init'; weak:false),
-    (pvar:@mysql_set_server_option; name:'mysql_set_server_option'; weak:false),
-    (pvar:@mysql_sqlstate; name:'mysql_sqlstate'; weak:false),
-    (pvar:@mysql_shutdown; name:'mysql_shutdown'; weak:false),
-    (pvar:@mysql_stat; name:'mysql_stat'; weak:false),
-    (pvar:@mysql_store_result; name:'mysql_store_result'; weak:false),
-    (pvar:@mysql_thread_id; name:'mysql_thread_id'; weak:false),
-  //    (pvar:@mysql_thread_save; name:'mysql_thread_save'; weak:false),
-    (pvar:@mysql_use_result; name:'mysql_use_result'; weak:false),
-    (pvar:@mysql_warning_count; name:'mysql_warning_count'; weak:false),
-    (pvar:@mysql_stmt_init; name:'mysql_stmt_init'; weak:false),
-    (pvar:@mysql_stmt_prepare; name:'mysql_stmt_prepare'; weak:false),
-    (pvar:@mysql_stmt_execute; name:'mysql_stmt_execute'; weak:false),
-    (pvar:@mysql_stmt_fetch; name:'mysql_stmt_fetch'; weak:false),
-    (pvar:@mysql_stmt_fetch_column; name:'mysql_stmt_fetch_column'; weak:false),
-    (pvar:@mysql_stmt_store_result; name:'mysql_stmt_store_result'; weak:false),
-    (pvar:@mysql_stmt_param_count; name:'mysql_stmt_param_count'; weak:false),
-    (pvar:@mysql_stmt_attr_set; name:'mysql_stmt_attr_set'; weak:false),
-    (pvar:@mysql_stmt_attr_get; name:'mysql_stmt_attr_get'; weak:false),
-    (pvar:@mysql_stmt_bind_param; name:'mysql_stmt_bind_param'; weak:false),
-    (pvar:@mysql_stmt_bind_result; name:'mysql_stmt_bind_result'; weak:false),
-    (pvar:@mysql_stmt_close; name:'mysql_stmt_close'; weak:false),
-    (pvar:@mysql_stmt_reset; name:'mysql_stmt_reset'; weak:false),
-    (pvar:@mysql_stmt_free_result; name:'mysql_stmt_free_result'; weak:false),
-    (pvar:@mysql_stmt_send_long_data; name:'mysql_stmt_send_long_data'; weak:false),
-    (pvar:@mysql_stmt_result_metadata; name:'mysql_stmt_result_metadata'; weak:false),
-    (pvar:@mysql_stmt_param_metadata; name:'mysql_stmt_param_metadata'; weak:false),
-    (pvar:@mysql_stmt_errno; name:'mysql_stmt_errno'; weak:false),
-    (pvar:@mysql_stmt_error; name:'mysql_stmt_error'; weak:false),
-    (pvar:@mysql_stmt_sqlstate; name:'mysql_stmt_sqlstate'; weak:false),
-    (pvar:@mysql_stmt_row_seek; name:'mysql_stmt_row_seek'; weak:false),
-    (pvar:@mysql_stmt_row_tell; name:'mysql_stmt_row_tell'; weak:false),
-    (pvar:@mysql_stmt_data_seek; name:'mysql_stmt_data_seek'; weak:false),
-    (pvar:@mysql_stmt_num_rows; name:'mysql_stmt_num_rows'; weak:false),
-    (pvar:@mysql_stmt_affected_rows; name:'mysql_stmt_affected_rows'; weak:false),
-    (pvar:@mysql_stmt_insert_id; name:'mysql_stmt_insert_id'; weak:false),
-    (pvar:@mysql_stmt_field_count; name:'mysql_stmt_field_count'; weak:false)
-  );
-
-type
-  PMysqlArgs = ^TMysqlArgs;
-  TMysqlArgs = record
-    argc: cint;
-    argv: PPchar;
-    groups: PPchar;
-  end;
-
-function mysql_initialize(User: Pointer; Handler: PLibHandler): Boolean;
-var
-  args: PMysqlArgs absolute User;
 begin
-  if Assigned(args) then
-    Result := mysql_library_init(args^.argc, args^.argv, args^.groups) = 0
-  else
-    Result := mysql_library_init(0, nil, nil) = 0;
-
-  if not Result then
-    AppendLibraryError(Handler^, 'mysql_library_init failed');
+  if RefCount> 1 then
+    Dec(RefCount)
+  else if RefCount = 1 then
+    begin
+    mysql_library_end;
+    if UnloadLibrary(MysqlLibraryHandle) then
+      begin
+      Dec(RefCount);
+      MysqlLibraryHandle := NilHandle;
+      LoadedLibrary:='';
+      end
+    end
 end;
 
-procedure mysql_finalize(Handler: PLibHandler);
-begin
-  mysql_library_end();
-end;
+{$ENDIF}
+    function net_new_transaction(net : st_net) : st_net;
+    begin
+      net.pkt_nr := 0;
+      result := net;
+    end;
 
-function TryInitializeMysql(Const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer;
-var
-  args: TMysqlArgs;
-begin
-  args.argc := argc;
-  args.argv := argv;
-  args.groups := groups;
-  Result := TryInitializeLibrary(MysqlLibrary, LibraryName, @args);
-end;
+    function IS_PRI_KEY(n : longint) : boolean;
+    begin
+      IS_PRI_KEY:=(n and PRI_KEY_FLAG)<>0;
+    end;
 
-function InitializeMysql(const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer;
-var
-  args: TMysqlArgs;
-begin
-  args.argc := argc;
-  args.argv := argv;
-  args.groups := groups;
-  Result := InitializeLibrary(MysqlLibrary, LibraryName, @args);
-end;
+    function IS_NOT_NULL(n : longint) : boolean;
+    begin
+     IS_NOT_NULL:=(n and NOT_NULL_FLAG)<>0;
+    end;
 
-function ReleaseMysql: Integer;
-begin
-  Result := ReleaseLibrary(MysqlLibrary);
-end;
+    function IS_BLOB(n : longint) : boolean;
+    begin
+     IS_BLOB:=(n and BLOB_FLAG)<>0;
+    end;
 
-function InitialiseMysql(argc: cint; argv: PPchar; groups: PPchar): Integer;
-begin
-  Result := InitializeMysql('', argc, argv, groups);
-end;
+    function IS_NUM_FIELD(f : pst_mysql_field) : boolean;
+    begin
+       IS_NUM_FIELD:=((f^.flags) and NUM_FLAG)<>0;
+    end;
 
-function InitialiseMysql(const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer;
-begin
-  Result := InitializeMysql(LibraryName, argc, argv, groups);
-end;
+    function IS_NUM(t : enum_field_types) : boolean;
+    begin
+{$IFDEF mysql50}
+      IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR) or (t=FIELD_TYPE_NEWDECIMAL);
+{$ELSE}
+      IS_NUM := (t <= FIELD_TYPE_INT24) or (t=FIELD_TYPE_YEAR);
+{$ENDIF}
+    end;
 
-function TryInitialiseMysql(const LibraryName: string; argc: cint; argv: PPchar; groups: PPchar): Integer;
-begin
-  Result := TryInitializeMysql(LibraryName, argc, argv, groups);
-end;
+    function INTERNAL_NUM_FIELD(f : Pst_mysql_field) : boolean;
+    begin
+      INTERNAL_NUM_FIELD := (f^.ftype <= FIELD_TYPE_INT24) and ((f^.ftype <> FIELD_TYPE_TIMESTAMP)
+      or (f^.length = 14) or (f^.length=8)) or (f^.ftype=FIELD_TYPE_YEAR);
+    end;
 
+    function mysql_reload(mysql : PMySQL) : cint;
+    begin
+      mysql_reload:=mysql_refresh(mysql,REFRESH_GRANT);
+    end;
+
+    function simple_command(mysql,command,arg,length,skip_check : longint) : longint;
+    begin
+      //simple_command:=mysql^.(methods^.advanced_command)(mysqlcommandNullS0arglengthskip_check);
+      result := -1;
+    end;
+
+{$IFDEF LinkDynamically}
 initialization
-  MysqlLibrary := LibraryHandler('mysql', [mysqllib,mysqlvlib], @mysql_symbols, Length(mysql_symbols), @mysql_initialize, @mysql_finalize);
+  Refcount := 0;
 {$ENDIF}
-
 end.

+ 1 - 1
packages/mysql/src/mysql40dyn.pp

@@ -4,7 +4,7 @@
 
 unit mysql40dyn;
 
-{$DEFINE LOAD_DYNAMICALLY}
+{$DEFINE LinkDynamically}
 {$UNDEF MYSQL41}
 
 {$i mysql.inc}

+ 1 - 1
packages/mysql/src/mysql41dyn.pp

@@ -4,7 +4,7 @@
 
 unit mysql41dyn;
 
-{$DEFINE LOAD_DYNAMICALLY}
+{$DEFINE LinkDynamically}
 {$DEFINE MYSQL41}
 
 {$i mysql.inc}

+ 1 - 1
packages/mysql/src/mysql50dyn.pp

@@ -4,7 +4,7 @@
 
 unit mysql50dyn;
 
-{$DEFINE LOAD_DYNAMICALLY}
+{$DEFINE LinkDynamically}
 {$DEFINE MYSQL50}
 
 {$i mysql.inc}

File diff ditekan karena terlalu besar
+ 161 - 158
packages/sqlite/src/sqlite3.inc


+ 3 - 3
packages/zorba/examples/simple/simple.lpi

@@ -35,8 +35,8 @@
         <Filename Value="simple.lpr"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="simple"/>
-        <CursorPos X="24" Y="19"/>
-        <TopLine Value="17"/>
+        <CursorPos X="1" Y="12"/>
+        <TopLine Value="1"/>
         <EditorIndex Value="0"/>
         <UsageCount Value="20"/>
         <Loaded Value="True"/>
@@ -70,7 +70,7 @@
       <Unit5>
         <Filename Value="../../../../../zorba/zorba/include/zorba/zorbac.h"/>
         <CursorPos X="17" Y="262"/>
-        <TopLine Value="262"/>
+        <TopLine Value="312"/>
         <EditorIndex Value="4"/>
         <UsageCount Value="10"/>
         <Loaded Value="True"/>

+ 6 - 278
rtl/inc/dynlibs.pas

@@ -20,9 +20,6 @@ unit dynlibs;
 
 interface
 
-uses
-  SysUtils, RtlConsts, SysConst;
-
 { ---------------------------------------------------------------------
   Read OS-dependent interface declarations.
   ---------------------------------------------------------------------}
@@ -41,77 +38,13 @@ Function LoadLibrary(Name : AnsiString) : TLibHandle;
 Function GetProcedureAddress(Lib : TlibHandle; ProcName : AnsiString) : Pointer;
 Function UnloadLibrary(Lib : TLibHandle) : Boolean;
 
-
 // Kylix/Delphi compability
 
-Type
-  HModule = TLibHandle;
-
 Function FreeLibrary(Lib : TLibHandle) : Boolean;
 Function GetProcAddress(Lib : TlibHandle; ProcName : AnsiString) : Pointer;
 
-
-// Dynamic Library Manager
-
-{ Note: If you look for some code that uses this library handler, take a look at
-    sqlite3.inc of sqlite package (simple) or
-    mysql.inc of mysql package (advanced)
-}
-
-type
-  PLibHandler = ^TLibHandler;
-
-  TLibEventLoading = function(User: Pointer; Handler: PLibHandler): Boolean;
-  TLibEventUnloading = procedure(Handler: PLibHandler);
-
-  PPLibSymbol = ^PLibSymbol;
-  PLibSymbol = ^TLibSymbol;
-  TLibSymbol = record
-    pvar: PPointer;  { pointer to Symbol variable }
-    name: String;    { name of the Symbol }
-    weak: Boolean;   { weak }
-  end;
-
-  TLibHandler = record
-    InterfaceName: String;                { abstract name of the library }
-    Defaults     : array of String;       { list of default library filenames }
-    Filename     : String;                { handle of the current loaded library }
-    Handle       : TLibHandle;            { filename of the current loaded library }
-    Loading      : TLibEventLoading;      { loading event, called after the unit is loaded }
-    Unloading    : TLibEventUnloading;    { unloading event, called before the unit is unloaded }
-    SymCount     : Integer;               { number of symbols }
-    Symbols      : PLibSymbol;            { symbol address- and namelist }
-    ErrorMsg     : String;                { last error message }
-    RefCount     : Integer;               { reference counter }
-  end;
-
-
-{ handler definition }
-function LibraryHandler(const InterfaceName: String; const DefaultLibraries: array of String;
-  const Symbols: PLibSymbol; const SymCount: Integer; const AfterLoading: TLibEventLoading = nil;
-  const BeforeUnloading: TLibEventUnloading = nil): TLibHandler;
-
-{ initialization/finalization }
-function TryInitializeLibrary(var Handler: TLibHandler; const LibraryNames: array of String;
-  const User: Pointer = nil; const NoSymbolErrors: Boolean = False): Integer;
-function TryInitializeLibrary(var Handler: TLibHandler; const LibraryName: String = '';
-  const User: Pointer = nil; const NoSymbolErrors: Boolean = False): Integer;
-function InitializeLibrary(var Handler: TLibHandler; const LibraryNames: array of String;
-  const User: Pointer = nil; const NoSymbolErrors: Boolean = False): Integer;
-function InitializeLibrary(var Handler: TLibHandler; const LibraryName: String = '';
-  const User: Pointer = nil; const NoSymbolErrors: Boolean = False): Integer;
-function ReleaseLibrary(var Handler: TLibHandler): Integer;
-
-{ errors }
-procedure AppendLibraryError(var Handler: TLibHandler; const Msg: String);
-function GetLastLibraryError(var Handler: TLibHandler): String;
-procedure RaiseLibraryException(var Handler: TLibHandler);
-
-{ symbol load/clear }
-function LoadLibrarySymbols(const Lib: TLibHandle; const Symbols: PLibSymbol; const Count: Integer;
-  const ErrorSym: PPLibSymbol = nil): Boolean;
-procedure ClearLibrarySymbols(const Symbols: PLibSymbol; const Count: Integer);
-
+Type
+  HModule = TLibHandle; 
 
 // these are for easier crossplatform construction of dll names in dynloading libs.
 Const
@@ -124,11 +57,11 @@ Const
      {$ifdef OS2}
        SharedSuffix = 'dll';
      {$else}
-       SharedSuffix = 'so';
+       SharedSuffix = 'so';  
      {$endif}
    {$endif}
- {$endif}
-
+ {$endif}      
+      
 Implementation
 
 { ---------------------------------------------------------------------
@@ -155,6 +88,7 @@ Function SafeLoadLibrary(Name : AnsiString) : TLibHandle;
  var w : word;
 {$endif}
 
+
 Begin
 {$ifdef i386}
   w:=get8087cw;
@@ -166,210 +100,4 @@ Begin
 {$endif}
 End;
 
-function LibraryHandler(const InterfaceName: String; const DefaultLibraries: array of String;
-  const Symbols: PLibSymbol; const SymCount: Integer; const AfterLoading: TLibEventLoading;
-  const BeforeUnloading: TLibEventUnloading): TLibHandler;
-var
-  I: Integer;
-begin
-  Result.InterfaceName := InterfaceName;
-  Result.Filename      := '';
-  Result.Handle        := NilHandle;
-  Result.Loading       := AfterLoading;
-  Result.Unloading     := BeforeUnloading;
-  Result.SymCount      := SymCount;
-  Result.Symbols       := Symbols;
-  Result.ErrorMsg      := '';
-  Result.RefCount      := 0;
-
-  SetLength(Result.Defaults, Length(DefaultLibraries));
-  for I := 0 to High(DefaultLibraries) do
-    Result.Defaults[I] := DefaultLibraries[I];
-end;
-
-function TryInitializeLibraryInternal(var Handler: TLibHandler; const LibraryName: String;
-  const User: Pointer; const NoSymbolErrors: Boolean): Integer;
-var
-  ErrSym: PLibSymbol;
-begin
-  if (Handler.Filename <> '') and (Handler.Filename <> LibraryName) then
-  begin
-    AppendLibraryError(Handler, Format(SLibraryAlreadyLoaded, [Handler.InterfaceName, Handler.Filename]));
-    Result := -1;
-    Exit;
-  end;
-
-  Result := InterlockedIncrement(Handler.RefCount);
-  if Result = 1 then
-  begin
-    Handler.Handle := LoadLibrary(LibraryName);
-    if Handler.Handle = NilHandle then
-    begin
-      AppendLibraryError(Handler, Format(SLibraryNotLoaded, [Handler.InterfaceName, LibraryName]));
-      Handler.RefCount := 0;
-      Result := -1;
-      Exit;
-    end;
-
-    Handler.Filename := LibraryName;
-
-    if not LoadLibrarySymbols(Handler.Handle, Handler.Symbols, Handler.SymCount, @ErrSym) and not NoSymbolErrors then
-    begin
-      AppendLibraryError(Handler, Format(SLibraryUnknownSym, [ErrSym^.name, Handler.InterfaceName, LibraryName]));
-      UnloadLibrary(Handler.Handle);
-      Handler.Handle := NilHandle;
-      Handler.Filename := '';
-      Handler.RefCount := 0;
-      Result := -1;
-      Exit;
-    end;
-
-    if Assigned(Handler.Loading) and not Handler.Loading(User, @Handler) then
-    begin
-      UnloadLibrary(Handler.Handle);
-      Handler.Handle := NilHandle;
-      Handler.Filename := '';
-      Handler.RefCount := 0;
-      Result := -1;
-      Exit;
-    end;
-  end;
-end;
-
-function TryInitializeLibrary(var Handler: TLibHandler; const LibraryName: String;
-  const User: Pointer; const NoSymbolErrors: Boolean): Integer;
-begin
-  if LibraryName <> '' then
-  begin
-    Handler.ErrorMsg := '';
-    Result := TryInitializeLibraryInternal(Handler, LibraryName, User, NoSymbolErrors);
-  end else
-    Result := TryInitializeLibrary(Handler, Handler.Defaults, User, NoSymbolErrors);
-end;
-
-function TryInitializeLibrary(var Handler: TLibHandler; const LibraryNames: array of String;
-  const User: Pointer; const NoSymbolErrors: Boolean): Integer;
-var
-  I: Integer;
-begin
-  Handler.ErrorMsg := '';
-
-  if Length(LibraryNames) <= 0 then
-  begin
-    if Length(Handler.Defaults) > 0 then
-    begin
-      Result := TryInitializeLibrary(Handler, Handler.Defaults, User, NoSymbolErrors);
-      Exit;
-    end;
-
-    AppendLibraryError(Handler, SVarInvalid);
-    Result := -1;
-    Exit;
-  end;
-
-  for I := 0 to High(LibraryNames) do
-  begin
-    Result := TryInitializeLibraryInternal(Handler, LibraryNames[I], User, NoSymbolErrors);
-    if Result > 0 then
-    begin
-      Handler.ErrorMsg := '';
-      Exit;
-    end;
-  end;
-end;
-
-function InitializeLibrary(var Handler: TLibHandler; const LibraryNames: array of String;
-  const User: Pointer; const NoSymbolErrors: Boolean): Integer;
-begin
-  Result := TryInitializeLibrary(Handler, LibraryNames, User, NoSymbolErrors);
-  if Result < 0 then
-    RaiseLibraryException(Handler);
-end;
-
-function InitializeLibrary(var Handler: TLibHandler; const LibraryName: String;
-  const User: Pointer; const NoSymbolErrors: Boolean): Integer;
-begin
-  Result := TryInitializeLibrary(Handler, LibraryName, User, NoSymbolErrors);
-  if Result < 0 then
-    RaiseLibraryException(Handler);
-end;
-
-function ReleaseLibrary(var Handler: TLibHandler): Integer;
-begin
-  Handler.ErrorMsg := '';
-
-  Result := InterlockedDecrement(Handler.RefCount);
-  if Result = 0 then
-  begin
-    if Assigned(Handler.Unloading) then
-      Handler.Unloading(@Handler);
-    ClearLibrarySymbols(Handler.Symbols, Handler.SymCount);
-    UnloadLibrary(Handler.Handle);
-    Handler.Handle := NilHandle;
-    Handler.Filename := '';
-  end else
-    if Result < 0 then
-      Handler.RefCount := 0;
-end;
-
-procedure AppendLibraryError(var Handler: TLibHandler; const Msg: String);
-begin
-  if Handler.ErrorMsg <> '' then
-    Handler.ErrorMsg := Handler.ErrorMsg + LineEnding + Msg
-  else
-    Handler.ErrorMsg := Msg;
-end;
-
-function GetLastLibraryError(var Handler: TLibHandler): String;
-begin
-  Result := Handler.ErrorMsg;
-  Handler.ErrorMsg := '';
-end;
-
-procedure RaiseLibraryException(var Handler: TLibHandler);
-var
-  Msg: String;
-begin
-  Msg := GetLastLibraryError(Handler);
-  if Msg <> '' then
-    raise EInOutError.Create(Msg)
-  else
-    raise EInOutError.Create(SUnknown);
-end;
-
-function LoadLibrarySymbols(const Lib: TLibHandle; const Symbols: PLibSymbol; const Count: Integer;
-  const ErrorSym: PPLibSymbol): Boolean;
-var
-  P,L: PLibSymbol;
-begin
-  P := Symbols;
-  L := @Symbols[Count];
-  while P < L do
-  begin
-    P^.pvar^ := GetProcedureAddress(Lib, P^.name);
-    if not Assigned(P^.pvar^) and not P^.weak then
-    begin
-      if Assigned(ErrorSym) then
-        ErrorSym^ := P;
-      Result := False;
-      Exit;
-    end;
-    Inc(P);
-  end;
-  Result := True;
-end;
-
-procedure ClearLibrarySymbols(const Symbols: PLibSymbol; const Count: Integer);
-var
-  P,L: PLibSymbol;
-begin
-  P := Symbols;
-  L := @Symbols[Count];
-  while P < L do
-  begin
-    P^.pvar^ := nil;
-    Inc(P);
-  end;
-end;
-
 end.

+ 20 - 0
rtl/linux/i386/si_dll.inc

@@ -76,4 +76,24 @@ procedure _FPC_shared_lib_haltproc; assembler; nostackframe; public name 'FPC_SH
 asm
 .Lhaltproc:
   call	  lib_exit
+ {$ifdef FPC_PIC}
+  call    get1eipasebx
+  addl    $_GLOBAL_OFFSET_TABLE_,%ebx
+  movl    ExitCode@GOT(%ebx),%ebx
+ {$if sizeof(ExitCode)=2}
+  movzwl  (%ebx),%ebx
+ {$else}
+  mov     (%ebx),%ebx
+ {$endif}
+{$else FPC_PIC}
+ {$if sizeof(ExitCode)=2}
+  movzwl  ExitCode,%ebx
+ {$else}
+  mov     ExitCode,%ebx
+ {$endif}
+{$endif FPC_PIC}
+  xorl    %eax,%eax
+  incl    %eax                    { eax=1, exit call }
+  int     $0x80
+  jmp     .Lhaltproc
 end;

+ 5 - 1
rtl/linux/x86_64/dllprt0.as

@@ -72,7 +72,11 @@ _haltproc:
 	.type FPC_SHARED_LIB_EXIT,@function
 FPC_SHARED_LIB_EXIT:
 	call	FPC_LIB_EXIT@PLT
-	ret
+        movl    $231,%eax                 /* exit_group call */
+        movq    operatingsystem_result@GOTPCREL(%rip),%rbx
+        movzwl  (%rbx),%edi
+        syscall
+        jmp     _haltproc@PLT
 
 /* Define a symbol for the first piece of initialized data.  */
 	.data

+ 0 - 14
tests/webtbs/tw14958a.pp

@@ -1,14 +0,0 @@
-{ %target=linux }
-{ %norun }
-library tw14958a;
-
-uses
-  uw14958;
-
-exports
-  Fun;
-
-begin
-  Writeln('  ExLib Main');
-end.
-

+ 0 - 36
tests/webtbs/tw14958b.pp

@@ -1,36 +0,0 @@
-{ %target=linux }
-{ %needlibrary }
-{ %result=182 }
-program loadlib;
-
-{$mode objfpc}{$H+}
-
-uses
-  dl,dynlibs;
-
-var
-  p: Pointer;
-  s: Longint;
-begin
-  Writeln('Opening ', ParamStr(1));
-  p := dlopen('./libtw14958a.so', RTLD_LAZY);
-  if Assigned(p) then
-  begin
-    Writeln('OK. Now closing.');
-    s := dlclose(p);
-    Writeln('After close.');
-    if s = 0 then
-      begin
-        Writeln('Close OK.');
-        halt(182);
-      end
-    else
-      Writeln('Failed close. Status: ', s);
-  end
-  else
-    begin
-      Writeln('Failed open.');
-      halt(1);
-    end;
-end.
-

+ 0 - 20
tests/webtbs/uw14958.pp

@@ -1,20 +0,0 @@
-unit uw14958;
-
-interface
-
-function Fun: Boolean; stdcall;
-
-implementation
-
-function Fun: Boolean; stdcall;
-begin
-  Fun := False;
-end;
-
-initialization
-  Writeln('  ExLib Init');
-
-finalization
-  Writeln('  ExLib Final');
-
-end.

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini