Show/Hide Toolbars

XSharp

This dialect shares the features of "All Non Core Dialects".

The compiler and runtime have the following "special" behavior when compiling for the "FoxPro" dialect:

Compiler

Allows 4 letter abbreviations of some older keywords.

Allows "&&" as same line comment characters, just like "//".

Allows the DOT ('.') operator to call Instance methods.

The '@' operator is only used to pass variables by reference.

Allows ENDFOR instead of NEXT and FOR EACH instead of FOREACH.

The '=' operator will NOT generate a warning when used as assignment operator.

Adds several keywords such as THIS (as alias for SELF).

Adds support for CursorName.FieldName syntax.

Adds support for M.VariableName syntax.

Adds the DIMENSION statement syntax.

Adds the LPARAMETERS statement.

Adds the TEXT .. ENDTEXT statement.

Adds the \\ and \\\ statement.

Adds the "= <Expression>" command.

Adds the FoxPro specific DEFINE CLASS syntax to define classes, including the use of FUNCTION and PROCEDURE to define methods inside a class and the use of the _ACCESS and _ASSIGN suffixes on the names of these functions and procedures to declare access/assign methods.

Procedures may return values, and therefore, they are just like Functions.

Allows code before the first entity in a source file. This will be compiled into a function with the same name as the PRG file.

Adds support for the DoDefault() pseudo function.

The NIL keyword in FoxPro has the property 'unitialized' but a value of FALSE.

Runtime

The default RDD in the FoxPro dialect is DBFVFP.

The MemoWrit() function adds an extra ^Z character to the end of file. MemoRead() removes this character when it finds it.

The DBF() function returns the full name of the file.

The _MRelease() function does not clear the memory variables but completely releases them.

New memory variables are always filled with a value of FALSE.

When comparing an initialized USUAL value with an unitialized value, an error will be generated in the FoxPro dialect.
The other dialects will simply return FALSE.