<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://docs.xsharp.it/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://docs.xsharp.it/feed.php">
        <title>docs.xsharp.it</title>
        <description></description>
        <link>https://docs.xsharp.it/</link>
        <image rdf:resource="https://docs.xsharp.it/lib/exe/fetch.php?media=favicon.ico" />
       <dc:date>2026-05-16T04:58:14+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=ads_linux&amp;rev=1643226641&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=advantage_database_server_notes&amp;rev=1643223603&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=advantage_database_server&amp;rev=1528536680&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=application_samples&amp;rev=1571079505&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=application_structure&amp;rev=1528090811&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=assemblies&amp;rev=1516737554&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=assign_no_returnvalue&amp;rev=1528541302&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=attached_methods&amp;rev=1517161262&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=begin_end_sequence&amp;rev=1567101465&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=casting_astype&amp;rev=1524390324&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=casting&amp;rev=1536293066&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=collections&amp;rev=1517808031&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=com_module_sample_vs&amp;rev=1528436439&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=com_module_sample&amp;rev=1665489734&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=compare_symbols_numeric&amp;rev=1521648126&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=compiler_option_ins&amp;rev=1726036602&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=compiler_options&amp;rev=1726036705&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=conditional_access&amp;rev=1522235330&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=createinstance_libraries&amp;rev=1519016372&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=default&amp;rev=1525865335&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=define&amp;rev=1566367332&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=delegates&amp;rev=1531301768&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=dll_function_changes&amp;rev=1536000524&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=dll_function&amp;rev=1536000700&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=docase&amp;rev=1534737987&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=doswitch&amp;rev=1534737976&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=encodings&amp;rev=1517083938&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=everything_object&amp;rev=1592175352&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=exception_handler_vogui&amp;rev=1522000649&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=exception_handler_winforms&amp;rev=1522001226&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=exception_handler_wpf&amp;rev=1522000958&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=exceptions&amp;rev=1522000029&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=extended_syntax&amp;rev=1536261889&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=extension_methods&amp;rev=1517161188&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=float_real8_decimal&amp;rev=1530557958&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=gchandle&amp;rev=1536294232&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=generics&amp;rev=1534738016&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=indexers_indexed_property&amp;rev=1536655067&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=is_type&amp;rev=1522693005&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=lambda_codeblock_anonymous&amp;rev=1517289055&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=language_syntax&amp;rev=1598586871&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=literals&amp;rev=1534737900&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=method_overloading&amp;rev=1516798599&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=migrate_vo_vulcan_rt&amp;rev=1552068509&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=namespace_assembly_reference&amp;rev=1581484509&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=namespaces_migrated_applications&amp;rev=1726036502&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=namespaces&amp;rev=1534738049&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=naming_conflicts&amp;rev=1518933213&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=net_array&amp;rev=1536466802&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=net_introduction&amp;rev=1518360997&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=null_string&amp;rev=1566203522&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=nullable&amp;rev=1530503699&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=other_vo_compatibility&amp;rev=1726030010&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=other_vo_to_x_issues&amp;rev=1521531423&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=preprocessor&amp;rev=1518583970&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=property&amp;rev=1598587481&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=quickstart_xsharp_vo&amp;rev=1552063692&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=read_file_stream&amp;rev=1517085860&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=read_file&amp;rev=1517085348&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=rt_manifest_constant&amp;rev=1536032970&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=scope&amp;rev=1525865624&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=start_function&amp;rev=1540807633&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=start&amp;rev=1726036656&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=string_char_byte&amp;rev=1534737858&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=stringbuilder&amp;rev=1517086646&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=stringformat&amp;rev=1564480931&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=strings_codepages&amp;rev=1541749998&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=strings&amp;rev=1538802583&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=trycatch&amp;rev=1534737935&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=tuples&amp;rev=1518251304&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=using&amp;rev=1524395457&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=virtual_methods&amp;rev=1528356337&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=vo_addons_status&amp;rev=1617081725&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=vo_errorblock&amp;rev=1567262810&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=vo_to_xsharp&amp;rev=1617081864&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=vogui_with_winform&amp;rev=1571080263&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=vulcan_compatibility&amp;rev=1527574609&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=vulcan_to_xsharp&amp;rev=1517528361&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=where_to_find_help&amp;rev=1523802605&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=winforms_databinding_sample&amp;rev=1532842131&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=write_exception_log&amp;rev=1522000348&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xbase_dialects&amp;rev=1580713353&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide_editor_filetypes&amp;rev=1516882810&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide_extend_toolsmenu&amp;rev=1516882626&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide_navigate&amp;rev=1520398403&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide_placeholders_prebuild&amp;rev=1516979179&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide_plugin_sample&amp;rev=1516943824&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide_plugin_system&amp;rev=1516943158&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide_reference_templates&amp;rev=1516881959&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide_select_framework_version&amp;rev=1516980735&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide_viaef_file&amp;rev=1520915650&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xide&amp;rev=1520915205&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xporter_disabled_warnings&amp;rev=1535348120&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xporter_hints&amp;rev=1617082933&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xsharp_dialects&amp;rev=1726039323&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xsharp_service_sample&amp;rev=1532844879&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xsharp_sites&amp;rev=1726039584&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=xsharp_story&amp;rev=1726038990&amp;do=diff"/>
                <rdf:li rdf:resource="https://docs.xsharp.it/doku.php?id=yield&amp;rev=1524392410&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://docs.xsharp.it/lib/exe/fetch.php?media=favicon.ico">
        <title>docs.xsharp.it</title>
        <link>https://docs.xsharp.it/</link>
        <url>https://docs.xsharp.it/lib/exe/fetch.php?media=favicon.ico</url>
    </image>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=ads_linux&amp;rev=1643226641&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-26T19:50:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ads_linux</title>
        <link>https://docs.xsharp.it/doku.php?id=ads_linux&amp;rev=1643226641&amp;do=diff</link>
        <description>The Advantage Database Server on Linux

Unfortunately the ADS software was not written originally for Linux, and therefore there are several important differences to ADS for Windows (I have never used ADS for Novell Netware, and I have my doubts there will be any new installations).</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=advantage_database_server_notes&amp;rev=1643223603&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-26T19:00:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>advantage_database_server_notes</title>
        <link>https://docs.xsharp.it/doku.php?id=advantage_database_server_notes&amp;rev=1643223603&amp;do=diff</link>
        <description>Advantage Database Server notes

These notes are referring to the ADS installation and maintenance, and not limited to X# itself.

	*  Advantage Database Server on Linux
	*  Differences between the DBFCDX RDD and the AXDBFCDX RDD</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=advantage_database_server&amp;rev=1528536680&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-09T09:31:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>advantage_database_server</title>
        <link>https://docs.xsharp.it/doku.php?id=advantage_database_server&amp;rev=1528536680&amp;do=diff</link>
        <description>Advantage Database Server

If you are using the Advantage Database Server with the Vulcan RDD, please follow the instructions how to use the ADS Vulcan RDD.

For the ADSSQLServer class and some ADS functions please not port them over from VO, but use the prg files that are supplied with the Vulcan RDD. There are some differences that will give you runtime errors if you are using the ported VO version.
This is particularly important for the DBFAXS library - there are some very important changes b…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=application_samples&amp;rev=1571079505&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-14T18:58:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>application_samples</title>
        <link>https://docs.xsharp.it/doku.php?id=application_samples&amp;rev=1571079505&amp;do=diff</link>
        <description>Application samples

	*  Windows Service sample
	*  Basic WPF application in pure code
	*  Enhanced WPF application in pure code using inherited control classes
	*  Basic WPF/MVVM application in pure code
	*  Enhanced WPF/MVVM application in pure code using inherited control classes
	*  WinForms databinding
	*  Create a COM module in X# for a VO application using XIDE
	*  Create a COM module in X# for a VO application using Visual Studio
	*  A VO GUI application with a Windows Forms window</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=application_structure&amp;rev=1528090811&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-04T05:40:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>application_structure</title>
        <link>https://docs.xsharp.it/doku.php?id=application_structure&amp;rev=1528090811&amp;do=diff</link>
        <description>How to structure an application

In VO, there are applications, and every application consists of one or more modules, and every module has from zero to X entities.

X#, since it uses the C# base does not have a repository, but is based on source code files.
It is a good rule to keep a class per source code file and name the file like the class.
To structure your application, you can uses directories, so your application looks like a tree.
Smaller source code files give you more oversight over y…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=assemblies&amp;rev=1516737554&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-23T19:59:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>assemblies</title>
        <link>https://docs.xsharp.it/doku.php?id=assemblies&amp;rev=1516737554&amp;do=diff</link>
        <description>Assemblies

In VO we have applications, libraries and DLLs.

In .NET we don&#039;t have any libraries, only assemblies. These assemblies can be executable files (.exe) or DLLs.

In VO, we have an incremental linker, and starting an even big application from the IDE is fast, because there are the .dbg and .vom files that contain executable code, and that are not completely rewritten on every application start.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=assign_no_returnvalue&amp;rev=1528541302&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-09T10:48:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>assign_no_returnvalue</title>
        <link>https://docs.xsharp.it/doku.php?id=assign_no_returnvalue&amp;rev=1528541302&amp;do=diff</link>
        <description>Assign cannot have a return value

VO unfortunately permits to return a value from an assign. Since this is not permitted in .NET, the X# compiler will return an error of

Warning XS9032 This entity type cannot return a value. Return value ignored.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=attached_methods&amp;rev=1517161262&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-28T17:41:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>attached_methods</title>
        <link>https://docs.xsharp.it/doku.php?id=attached_methods&amp;rev=1517161262&amp;do=diff</link>
        <description>Extension methods

In Visual Objects, you could define methods to classes where you had no sources and that are defined in other libraries.
In the .NET Framework this is not possible, but since this is a very powerful language feature, you can use the</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=begin_end_sequence&amp;rev=1567101465&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-08-29T17:57:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>begin_end_sequence</title>
        <link>https://docs.xsharp.it/doku.php?id=begin_end_sequence&amp;rev=1567101465&amp;do=diff</link>
        <description>begin sequence - end sequence

The begin sequence - recover - end sequence statements are widely used in VO applications, and the X# compiler translates it mainly in the try - catch and end try statements.
So, if you are transporting VO code, you can keep these statements safely, but for new code please use the .NET equivalents</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=casting_astype&amp;rev=1524390324&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-04-22T09:45:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>casting_astype</title>
        <link>https://docs.xsharp.it/doku.php?id=casting_astype&amp;rev=1524390324&amp;do=diff</link>
        <description>.NET and X# permit an enhanced casting of variables. Using the casting the compiler can will check the properties and methods of the object.

local oObject as object
local oDateTime as object
	
oObject	:= DateTime.Now
oObject:AddYears( 1 ) // compiler error here
( ( DateTime ) oObject ):AddYears( 1 ) // works
oDateTime := oObject // compiler error here
oDateTime := ( DateTime ) oObject //works</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=casting&amp;rev=1536293066&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-09-07T04:04:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>casting</title>
        <link>https://docs.xsharp.it/doku.php?id=casting&amp;rev=1536293066&amp;do=diff</link>
        <description>Casting

Casting is a very dangerous technique, specially when it comes to the 64 bit mode.

There are functions that return an int value, but this value in reality is a pointer that points to a structure or an object or some other memory construct.
This perfectly legal (but also dangerous) in a 32 bit world, but wrong in a 64 bit world where pointers are not more occupying 32 bit, but 64 bit.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=collections&amp;rev=1517808031&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-02-05T05:20:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>collections</title>
        <link>https://docs.xsharp.it/doku.php?id=collections&amp;rev=1517808031&amp;do=diff</link>
        <description>Collections

The collections in many aspects are similar to the VO arrays, but they differ from them as you need to specify the type of the elements (of course, you can type the elements as object leaving this completely open.

The collections are available in the namespaces</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=com_module_sample_vs&amp;rev=1528436439&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-08T05:40:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>com_module_sample_vs</title>
        <link>https://docs.xsharp.it/doku.php?id=com_module_sample_vs&amp;rev=1528436439&amp;do=diff</link>
        <description>Creating a COM module in X# for a Visual Objects application using Visual Studio

(Side-by-Side / DLL registration with manifest)

It is not too difficult to create a X# DLL and use it from VO; you can even enter other languages like C# in the same DLL and call C# methods from X# (or v.v.).</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=com_module_sample&amp;rev=1665489734&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-11T12:02:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>com_module_sample</title>
        <link>https://docs.xsharp.it/doku.php?id=com_module_sample&amp;rev=1665489734&amp;do=diff</link>
        <description>Create a COM module for a VO application using XIDE

	*  Create a prg file for the interface


begin namespace COMTest

using System.Runtime.InteropServices

[ComVisible(true)];
[Guid(&quot;750E557E-9DA6-4508-A36E-C4141D27B5D4&quot;)];
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)];
interface ICOMTester
	
[DispId(1)];
method Output() as string
	
end interface          

end namespace</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=compare_symbols_numeric&amp;rev=1521648126&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-21T16:02:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>compare_symbols_numeric</title>
        <link>https://docs.xsharp.it/doku.php?id=compare_symbols_numeric&amp;rev=1521648126&amp;do=diff</link>
        <description>Compare symbols to numerics

Since in VO symbols really are a numeric value, some statements work:

local aField as array
local nSearch as usual
local nPos as dword

aField := { #Chris, #Robert, #Fabrice, #Nikos }
nSearch := 5
nPos := AScan( aField, nSearch )</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=compiler_option_ins&amp;rev=1726036602&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-11T06:36:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>compiler_option_ins</title>
        <link>https://docs.xsharp.it/doku.php?id=compiler_option_ins&amp;rev=1726036602&amp;do=diff</link>
        <description>/ins Compiler option

In VO all classes were without namespaces. In .Net that is not very common. For example: we have placed the VO SDK classes in the namespace VO. So Control is actually VO.Control. We did that because other libraries may also have a Control class (Windows.Forms, WPF etc.)</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=compiler_options&amp;rev=1726036705&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-11T06:38:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>compiler_options</title>
        <link>https://docs.xsharp.it/doku.php?id=compiler_options&amp;rev=1726036705&amp;do=diff</link>
        <description>Some compiler options explained

/ins Compiler option</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=conditional_access&amp;rev=1522235330&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-28T11:08:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>conditional_access</title>
        <link>https://docs.xsharp.it/doku.php?id=conditional_access&amp;rev=1522235330&amp;do=diff</link>
        <description>Conditional access

In X# you can use a conditional access to an object.

Instead of writing

if oObject != null
  oObject:ExecuteMethod()
endif

you can write

oObject?:ExecuteMethod()

This means that there will be no exception in the case oObject is null.
Of course this works not only with methods, but also with properties (and access/assigns):</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=createinstance_libraries&amp;rev=1519016372&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-02-19T04:59:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>createinstance_libraries</title>
        <link>https://docs.xsharp.it/doku.php?id=createinstance_libraries&amp;rev=1519016372&amp;do=diff</link>
        <description>CreateInstance() and Libraries

If you are using CreateInstance() to dynamically create objects, you need to make sure the runtime knows the class that you are using to create your object.
And you can create only objects that are contained in libraries compiled in the Vulcan or VO dialect - classes created in the Core dialect cannot be used.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=default&amp;rev=1525865335&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-05-09T11:28:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>default</title>
        <link>https://docs.xsharp.it/doku.php?id=default&amp;rev=1525865335&amp;do=diff</link>
        <description>Default

VO has a Default statement. This is not typed and checks only if the passed value has a value of NIL.

The Default statement in X# is strongly typed. This means that the compiler checks if the assigned value is of the correct type for the variable. There is another difference: since the .NET Framework does not knows about the Xbase datatype</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=define&amp;rev=1566367332&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-08-21T06:02:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>define</title>
        <link>https://docs.xsharp.it/doku.php?id=define&amp;rev=1566367332&amp;do=diff</link>
        <description>Defines

In VO, a define is a global constant value. That means that a define in in included library is available in all dependent applications (if the define has not the static modifier).

define MyDefine := 123

In Vulcan.NET, defines are like in other languages, simple replaced by the compiler or preprocessor, and they are written in a different manner:</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=delegates&amp;rev=1531301768&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-07-11T09:36:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>delegates</title>
        <link>https://docs.xsharp.it/doku.php?id=delegates&amp;rev=1531301768&amp;do=diff</link>
        <description>Delegates

Why Delegates

Delegates are a new concept in the X# language - in VO they don&#039;t exist. 

In every language there is sometimes the need to pass code as parameter to a function. VO has codeblocks, therefore normally you don&#039;t need function pointers, but pass codeblocks instead.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=dll_function_changes&amp;rev=1536000524&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-09-03T18:48:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dll_function_changes</title>
        <link>https://docs.xsharp.it/doku.php?id=dll_function_changes&amp;rev=1536000524&amp;do=diff</link>
        <description>_dll function changes

In VO, the following _dll declaration is correct:

_DLL function zLibCompress( ptrDest as ptr, nBytesOut ref long, ptrSource as ptr, nBytesIn as long ) as int:zlib.compress

This function has the C calling convention (comes from the Linux/Unix world), and therefore the</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=dll_function&amp;rev=1536000700&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-09-03T18:51:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dll_function</title>
        <link>https://docs.xsharp.it/doku.php?id=dll_function&amp;rev=1536000700&amp;do=diff</link>
        <description>_DLL Function

In VO functions from DLLs can be used with the _dll function statement. 

This works als in X#, but the ptr datatype is not available in the Core dialect, you need something else, often the intptr datatype, but this depends on the function declaration.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=docase&amp;rev=1534737987&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-20T04:06:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>docase</title>
        <link>https://docs.xsharp.it/doku.php?id=docase&amp;rev=1534737987&amp;do=diff</link>
        <description>do case ... endcase

The do case statement is exactly as it was in the Clipper, the VO and the Vulcan.NET language:

do case
case cExpr == &quot;abc&quot;
  DoSomething()
case cExpr &gt;= &quot;d&quot; .and. cExpr &lt; &quot;f&quot;
  DoSomethingOther()
case Upper( cExpr ) == &quot;z&quot;
  DoAnotherThing()
otherwise
  DoWhatEverYouLike()
endcase</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=doswitch&amp;rev=1534737976&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-20T04:06:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>doswitch</title>
        <link>https://docs.xsharp.it/doku.php?id=doswitch&amp;rev=1534737976&amp;do=diff</link>
        <description>do switch

The do switch statement is new in the X# language (but it was present also in the Vulcan.NET language).

It is more similar to the switch statement that C has.

Please look at this sample code:

method( cLanguage as string ) as string 
local cResult as string

do switch cLanguage
case &quot;german&quot;
  cResult := &quot;Deutsch&quot;
case &quot;italian&quot;
  cResult := &quot;Italiano&quot;
case &quot;english&quot;
  cResult := &quot;English&quot;
otherwise
  cResult := &quot;unspported language&quot;
end switch</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=encodings&amp;rev=1517083938&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-27T20:12:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>encodings</title>
        <link>https://docs.xsharp.it/doku.php?id=encodings&amp;rev=1517083938&amp;do=diff</link>
        <description>Encodings

Since all strings in .NET are Unicode strings (see String, Char and Byte, you need to use the right encoding when reading and writing (disk, network, database).

For the Encodings please see the classes that inherit from the System.Text.Encoding class:

	*  System.Text.ASCIIEncoding: 7 bit</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=everything_object&amp;rev=1592175352&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-14T22:55:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>everything_object</title>
        <link>https://docs.xsharp.it/doku.php?id=everything_object&amp;rev=1592175352&amp;do=diff</link>
        <description>Everything is an object

In .NET even basic datatypes like string or int are an object.

This means that even these datatypes can (an have) own methods. One method common to every object is AsString() . This method sometimes returns useful data:

local nInt as int
local oDate as DateTime
local lLogic as logic

nInt := 1234
oDate := DateTime.Now
lLogic := true
System.Console.WriteLine( nInt:ToString() )
System.Console.WriteLine( oDate:ToString() )
System.Console.WriteLine( lLogic:ToString() )</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=exception_handler_vogui&amp;rev=1522000649&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-25T17:57:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>exception_handler_vogui</title>
        <link>https://docs.xsharp.it/doku.php?id=exception_handler_vogui&amp;rev=1522000649&amp;do=diff</link>
        <description>Exception handler for a VO GUI application

The following code shows the exception message in a VO GUI messagebox. You should combine every exception handler with a logging functionality - a messagebox is gone too easily.

static class ExceptionHandler
static method ProcessException( oException as Exception ) as void
local cMessage as string
local oParent as object
local oBox as TextBox
	
cMessage := oException:Message
// log to disk here
do while oException:InnerException != NULL_OBJECT
  // lo…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=exception_handler_winforms&amp;rev=1522001226&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-25T18:07:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>exception_handler_winforms</title>
        <link>https://docs.xsharp.it/doku.php?id=exception_handler_winforms&amp;rev=1522001226&amp;do=diff</link>
        <description>Exception handler for a WinForms application

The following code can be used to display an exception in a Windows Forms application. Please don&#039;t forget to log the exception also somewhere.

class wfExceptionEventHandler

constructor( oSender as object, oArgs as ThreadExceptionEventArgs )
local oException as Exception
local nResult as DialogResult
local cMessage as string

oException := oArgs:Exception
cMessage := &quot;An error has been occurred:&quot; + e&quot;\n\n&quot; + oException:Message + e&quot;\n\n&quot; + ;
       …</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=exception_handler_wpf&amp;rev=1522000958&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-25T18:02:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>exception_handler_wpf</title>
        <link>https://docs.xsharp.it/doku.php?id=exception_handler_wpf&amp;rev=1522000958&amp;do=diff</link>
        <description>Exception handler for a WPF application

The following piece of code can be used to display an exception text in a WPF GUI application. Please don&#039;t forget to log the exception also to a logfile. You can take this code also as sample how to build a WPF window from pure code.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=exceptions&amp;rev=1522000029&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-25T17:47:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>exceptions</title>
        <link>https://docs.xsharp.it/doku.php?id=exceptions&amp;rev=1522000029&amp;do=diff</link>
        <description>Exceptions

As already described in the topic Try - Catch the .NET Framework uses exceptions to notify about an error condition.

Take as sample the String:SubString() method:

local cString as string
local cResult as string

cString := &quot;Hello world&quot;
cResult := cString:Substring( 5, 30 )</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=extended_syntax&amp;rev=1536261889&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-09-06T19:24:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>extended_syntax</title>
        <link>https://docs.xsharp.it/doku.php?id=extended_syntax&amp;rev=1536261889&amp;do=diff</link>
        <description>Extended Syntax Samples

	*  The StringBuilder
	*  Read a file
	*  Read a file using a stream
	*  String.Format
	*  Extension Methods
	*  Async and Await
	*  Collections - typed arrays
	*  Tuples
	*  Delegates
	*  Yield
	*  The Preprocessor
	*  Commands, Actions, Delegates
	*  Interfaces
	*  Dynamic loading libraries
	*  _dll function
	*  Casting
	*  GCHandle: cast an object to a number
	*  Indexers and indexed properties</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=extension_methods&amp;rev=1517161188&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-28T17:39:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>extension_methods</title>
        <link>https://docs.xsharp.it/doku.php?id=extension_methods&amp;rev=1517161188&amp;do=diff</link>
        <description>Extension methods

In Visual Objects, you could define methods to classes where you had no sources and that are defined in other libraries.
In the .NET Framework this is not possible, but since this is a very powerful language feature, you can use the</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=float_real8_decimal&amp;rev=1530557958&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-07-02T18:59:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>float_real8_decimal</title>
        <link>https://docs.xsharp.it/doku.php?id=float_real8_decimal&amp;rev=1530557958&amp;do=diff</link>
        <description>Float, Real8 and Decimal

Please see this very interesting thread in the X# Forum:
Float, Real8 or Decimal</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=gchandle&amp;rev=1536294232&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-09-07T04:23:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>gchandle</title>
        <link>https://docs.xsharp.it/doku.php?id=gchandle&amp;rev=1536294232&amp;do=diff</link>
        <description>GCHandle: cast an object to a number

When working with callback functions and the Windows API, sometimes it is important to map an object to a numeric variable.
In VO, often the object was casted to an int variable. This was possible since in VO and Win32 a pointer has the same width as an int, but it could lead to problems if the object was moved by the garbage collector. Therefore this is dangerous and could lead to problems if not used correctly.
In X#, this is not more possible, as a pointe…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=generics&amp;rev=1534738016&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-20T04:06:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>generics</title>
        <link>https://docs.xsharp.it/doku.php?id=generics&amp;rev=1534738016&amp;do=diff</link>
        <description>Generics

Generics are a new feature in the .NET framework, and they permit to specify also the type of a parameter for a function. Whenever you see a &lt;T&gt; parameter, it is a generic definition (but it could be any letter).

Use of generics

As sample how to use generics look at the</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=indexers_indexed_property&amp;rev=1536655067&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-09-11T08:37:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>indexers_indexed_property</title>
        <link>https://docs.xsharp.it/doku.php?id=indexers_indexed_property&amp;rev=1536655067&amp;do=diff</link>
        <description>Indexers and indexed properties

Indexers are a new concept for xBase developers. They permit to access the properties of an object like an array. Please see this sample class:

class IndexerTest
protect oValues	as List&lt;string&gt;
	
constructor()
	
oValues := List&lt;string&gt;{}

return
	
property self[ nIndex as int ] as string
  get
    if oValues:Count &gt;= nIndex
      return oValues[nIndex-1]
    else
      return &quot;&quot;
    endif
  end get
  set	
    while oValues:Count &lt; nIndex
      oValues:Add( &quot;&quot; )
…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=is_type&amp;rev=1522693005&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-04-02T18:16:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>is_type</title>
        <link>https://docs.xsharp.it/doku.php?id=is_type&amp;rev=1522693005&amp;do=diff</link>
        <description>Variable is type

In VO, it was not so immediate to check the type of a variable.
For objects, you need to use IsInstance(), there are functions like ValType() and UsualType other than specialized functions like IsString().

In .NET, things are much easier, fortunately.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=lambda_codeblock_anonymous&amp;rev=1517289055&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-30T05:10:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lambda_codeblock_anonymous</title>
        <link>https://docs.xsharp.it/doku.php?id=lambda_codeblock_anonymous&amp;rev=1517289055&amp;do=diff</link>
        <description>Lambda expressions, Codeblocks, Anonymous methods

Codeblocks are a datatype in Clipper and Visual Objects (and Vulcan.NET). In .NET there are Lambda expressions for the same purpose.
X# permits also the codeblock syntax for lambda expressions and is smart enough to create the correct code.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=language_syntax&amp;rev=1598586871&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-08-28T03:54:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>language_syntax</title>
        <link>https://docs.xsharp.it/doku.php?id=language_syntax&amp;rev=1598586871&amp;do=diff</link>
        <description>Language Syntax Basics

	*  Everything is an object
	*  Strings and prefixes
	*  String, Char and Byte
	*  Literals, suffixes and prefixes
	*  Try - catch
	*  do switch
	*  do case
	*  property
	*  Generics
	*  Namespaces
	*  Assemblies
	*  Encodings
	*  Exceptions and Exception Handlers
	*  Method overloading
	*  Lambda expressions, Codeblocks, Anonymous expression
	*  .NET Arrays
	*  Collections
	*  Conditional access
	*  Casting and astype
	*  Variable is type
	*  yield
	*  using ... end usin…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=literals&amp;rev=1534737900&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-20T04:05:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>literals</title>
        <link>https://docs.xsharp.it/doku.php?id=literals&amp;rev=1534737900&amp;do=diff</link>
        <description>Literals, prefixes and suffixes

String literals

A string literal is delimited with the double quotation mark “. 

&quot;This is a string&quot;

Please note that in the VO dialect a string can also be delimited with the quotation mark  &#039; .

&#039;This is a string&#039; // valid only in the VO dialect, not in Core or Vulcan</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=method_overloading&amp;rev=1516798599&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-24T12:56:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>method_overloading</title>
        <link>https://docs.xsharp.it/doku.php?id=method_overloading&amp;rev=1516798599&amp;do=diff</link>
        <description>Method Overloading

Method Overloading is a concept that is not known in VO, but is implemented in the .NET runtime.

It means that you can define multiple methods with the same name in a class. The only difference is that the signature (the parameter list) is different. This is true also for constructors - you can define more than one constructor in a class.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=migrate_vo_vulcan_rt&amp;rev=1552068509&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-03-08T18:08:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>migrate_vo_vulcan_rt</title>
        <link>https://docs.xsharp.it/doku.php?id=migrate_vo_vulcan_rt&amp;rev=1552068509&amp;do=diff</link>
        <description>Migrate from VO using XIDE and the Vulcan runtime

	*  Export your VO application to an AEF file (if your application is using libraries you need to migrate them first
	*  Launch XIDE, and select (or create) a project where your application should reside</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=namespace_assembly_reference&amp;rev=1581484509&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-02-12T05:15:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>namespace_assembly_reference</title>
        <link>https://docs.xsharp.it/doku.php?id=namespace_assembly_reference&amp;rev=1581484509&amp;do=diff</link>
        <description>Namespaces, Assemblies, References

These three concepts are new for anyone that comes from VO.

An application can use code that is located in the application itself, or it can use code from other assemblies.
An assembly is simply a DLL (the concept of an entirely linked library as in VO does not exists anymore).
Such an assembly can be:</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=namespaces_migrated_applications&amp;rev=1726036502&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-11T06:35:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>namespaces_migrated_applications</title>
        <link>https://docs.xsharp.it/doku.php?id=namespaces_migrated_applications&amp;rev=1726036502&amp;do=diff</link>
        <description>Namespaces in migrated VO applications

Migrated applications does not have indicated any namespace, therefore some special rules apply.
Normally, such applications use the compiler option /ins (use implicit namespace), so the compiler searches the referenced libraries and adds namespaces with special attribute. You can see that if you open the compiled exe with a tool like ILSpy. For more informations please look at</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=namespaces&amp;rev=1534738049&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-20T04:07:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>namespaces</title>
        <link>https://docs.xsharp.it/doku.php?id=namespaces&amp;rev=1534738049&amp;do=diff</link>
        <description>Namespaces

Namespaces are a possibility (that you should use, but not overuse!) to structure your classes.

A sample of working code:

Customer.Item.prg

begin namespace Customer

class Item

# Class code

end class

end namespace

Supplier.Item.prg</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=naming_conflicts&amp;rev=1518933213&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-02-18T05:53:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>naming_conflicts</title>
        <link>https://docs.xsharp.it/doku.php?id=naming_conflicts&amp;rev=1518933213&amp;do=diff</link>
        <description>Naming conflicts

Unfortunately, the .NET runtime is very sensitive to any naming conflicts, and X# is more accurate than Vulcan.NET. So these rules apply:

	*  No class in your application can have the same name as your application itself. So if your application (exe or dll) is has a name of MyClass, you cannot have a class MyClass in your application. If you cannot change the name of your class, change the name of your application to app.MyClass or something similar</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=net_array&amp;rev=1536466802&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-09-09T04:20:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>net_array</title>
        <link>https://docs.xsharp.it/doku.php?id=net_array&amp;rev=1536466802&amp;do=diff</link>
        <description>.NET Arrays

Compared with the VO and Vulcan.NET dynamic arrays, the .NET arrays are very limited.

They cannot grow, cannot shrink and cannot be sorted, and they can contain only elements of one datatype (or class). Of course, the could contain data of type</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=net_introduction&amp;rev=1518360997&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-02-11T14:56:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>net_introduction</title>
        <link>https://docs.xsharp.it/doku.php?id=net_introduction&amp;rev=1518360997&amp;do=diff</link>
        <description>From VO to .Net

The information included here is designed to give those coming from VO a broad overview of this new technology through the environment of Visual Studio.

Visual Studio

 

Dot Net</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=null_string&amp;rev=1566203522&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-08-19T08:32:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>null_string</title>
        <link>https://docs.xsharp.it/doku.php?id=null_string&amp;rev=1566203522&amp;do=diff</link>
        <description>null_string

The behavior of a string variable with a null_string value is defined by the /vo2 compiler option:

With /vo2+ NULL_STRING is translated to String.Empty
Without /vo2 NULL_STRING is translated to NULL

Calling the :ToString() method on a variable that has a null_string value throws an exception if the code is compiled without the /vo2 option.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=nullable&amp;rev=1530503699&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-07-02T03:54:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nullable</title>
        <link>https://docs.xsharp.it/doku.php?id=nullable&amp;rev=1530503699&amp;do=diff</link>
        <description>Nullable Datatypes

Contrary to VO, many datatypes in the .NET Framework don&#039;t allow null values. 

One of the most important ones is the DataTime class, that cannot have a null value, contrarily to VO, where a date variable can contain null_date.

In the .NET Framework there is the</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=other_vo_compatibility&amp;rev=1726030010&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-11T04:46:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>other_vo_compatibility</title>
        <link>https://docs.xsharp.it/doku.php?id=other_vo_compatibility&amp;rev=1726030010&amp;do=diff</link>
        <description>VO compatibility issues

	*  Naming conflicts
	*  Createinstance and Libraries
	*  Begin - End Sequence
	*  VO ErrorBlock
	*  Assign cannot have a return value in .NET
	*  VO methods are virtual
	*  Binary content in DBF files
	*  Other issues
	*  VO functions translated to .NET
	*  Compare symbols to numerics
	*  .NET Structure and VOStruct
	*  Advantage Database Server
	*  Disabled warnings by Xporter/VO
	*  _dll function changes
	*  RT_MANIFEST constant
	*  Start() function needs the [STAThre…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=other_vo_to_x_issues&amp;rev=1521531423&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-20T07:37:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>other_vo_to_x_issues</title>
        <link>https://docs.xsharp.it/doku.php?id=other_vo_to_x_issues&amp;rev=1521531423&amp;do=diff</link>
        <description>Other compatibility issues

There are a lot of small issues. Some of them should be listed here:

	*  You are using a method Open() in any of your VO windows classes? This will not compile anymore because the Window class has a variable oPen that conflicts with this method name</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=preprocessor&amp;rev=1518583970&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-02-14T04:52:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>preprocessor</title>
        <link>https://docs.xsharp.it/doku.php?id=preprocessor&amp;rev=1518583970&amp;do=diff</link>
        <description>The Preprocessor

The preprocessor is an unique feature of the X# compiler. In the Clipper times, the preprocessor was used to implement the commands (they were mapped to function calls), and in the VO times the preprocessor was present, but very few people used it.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=property&amp;rev=1598587481&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-08-28T04:04:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>property</title>
        <link>https://docs.xsharp.it/doku.php?id=property&amp;rev=1598587481&amp;do=diff</link>
        <description>Property

The property statement can have different forms in X# (it is the .NET equivalent for access/assign in VO).
The “full” version (read and write):

property MyProp as string
  get
    return _cMyProp
  end get
  set
    _cMyProp := value
  end set
end property</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=quickstart_xsharp_vo&amp;rev=1552063692&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-03-08T16:48:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>quickstart_xsharp_vo</title>
        <link>https://docs.xsharp.it/doku.php?id=quickstart_xsharp_vo&amp;rev=1552063692&amp;do=diff</link>
        <description>How to start with X# if you are a VO programmer

If you are a VO programmer, these tips can be helpful to you.

	*  X# comes with an (optional) IDE that is similar to the Visual Objects IDE. So if you are not familiar with Microsoft Visual Studio, starting with XIDE may make learning easier.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=read_file_stream&amp;rev=1517085860&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-27T20:44:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>read_file_stream</title>
        <link>https://docs.xsharp.it/doku.php?id=read_file_stream&amp;rev=1517085860&amp;do=diff</link>
        <description>Read a file using a stream

If you need to read a larger file and process it during the read, you should use a stream for it.
This is largely used when reading or writing in the network using internet protocols.

This is a sample how to read a file using a stream:</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=read_file&amp;rev=1517085348&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-27T20:35:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>read_file</title>
        <link>https://docs.xsharp.it/doku.php?id=read_file&amp;rev=1517085348&amp;do=diff</link>
        <description>Read a file

If you need to read or write to files and wish to keep the entire file in memory, you can use the static methods of the System.IO.File class:

(the following static methods are only a small fraction of the functionality this class offers - please read the full documentation of this class!)</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=rt_manifest_constant&amp;rev=1536032970&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-09-04T03:49:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>rt_manifest_constant</title>
        <link>https://docs.xsharp.it/doku.php?id=rt_manifest_constant&amp;rev=1536032970&amp;do=diff</link>
        <description>RT_MANIFEST constant

In VO (and Vulcan.NET) the RT_MANIFEST constant is defined as follows:

DEFINE RT_MANIFEST := PTR (_CAST,24)

In VO, this may work (but there are cases where it seems to not work correctly, i.e. the builtin manifest is not correctly recognized correctly when it comes to load COM modules in SideBySide operations), but the X# compiler will return an error:</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=scope&amp;rev=1525865624&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-05-09T11:33:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>scope</title>
        <link>https://docs.xsharp.it/doku.php?id=scope&amp;rev=1525865624&amp;do=diff</link>
        <description>begin scope .... end scope

The begin scope .... end scope statement let you restrict the variable visibility to a defined part of your program.

begin scope
  local cVar as string
		
  cVar := &quot;Hello X#&quot;
  System.Console.WriteLine( cVar )
		
end scope
		
System.Console.WriteLine( cVar )   // compile error here</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=start_function&amp;rev=1540807633&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-29T10:07:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start_function</title>
        <link>https://docs.xsharp.it/doku.php?id=start_function&amp;rev=1540807633&amp;do=diff</link>
        <description>Start() function needs the [STAThread] attribute

The Start() function in migrated VO applications needs to have the [STAThread] attribute:

[STAThread];
function Start() as void

If this attribute is not set, you may experience strange crashes. As sample: when opening a printer selection dialog in an application without this attribute the application crashed. After adding the attribute, the printer selection dialog showed up correctly and the application does not crashed anymore.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=start&amp;rev=1726036656&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-11T06:37:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start</title>
        <link>https://docs.xsharp.it/doku.php?id=start&amp;rev=1726036656&amp;do=diff</link>
        <description>Welcome to the X# Documentation Project!

Here we are collecting samples and documentation about the X# Language.

If you don&#039;t know what X# is, please see www.xsharp.info

	*  X# Online Documentation
	*  Where to find Help
	*  Language syntax basics
	*  Extended syntax samples
	*  The dialects
	*  GUI choices: VO GUI, WinForms, WPF
	*  Application type samples
	*  How to start with X# for VO programmers
	*  Status of VO Addons for X#
	*  Migration from VO (Visual Objects) to X#
	*  Migration fr…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=string_char_byte&amp;rev=1534737858&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-20T04:04:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>string_char_byte</title>
        <link>https://docs.xsharp.it/doku.php?id=string_char_byte&amp;rev=1534737858&amp;do=diff</link>
        <description>String, Char and Byte

In .NET every string is Unicode.

That means that a string of 10 characters has not more 10 bytes like in VO, but normally has 20 (2 byte per character).
And the second, not less important issue: when converting between binary data and strings you need to care about</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=stringbuilder&amp;rev=1517086646&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-27T20:57:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>stringbuilder</title>
        <link>https://docs.xsharp.it/doku.php?id=stringbuilder&amp;rev=1517086646&amp;do=diff</link>
        <description>The StringBuilder

If you are processing strings, of course you can concatenate them using the + operator:

cString := &quot;Hello&quot; + &quot; &quot; + &quot;from&quot; + &quot; &quot; + &quot;my&quot; + &quot; &quot; + &quot;X#&quot; + &quot; &quot; + &quot;program&quot;

But if you are building longer strings, composed by many substrings, you should use the</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=stringformat&amp;rev=1564480931&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-07-30T10:02:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>stringformat</title>
        <link>https://docs.xsharp.it/doku.php?id=stringformat&amp;rev=1564480931&amp;do=diff</link>
        <description>String.Format

This static method of the System.String class is very, very useful.

It permits you to insert values into a string, like in this sample:

cString := String.Format( &quot;Today is {0}&quot;, DateTime.Now:ToShortDateString() )

.

You can also control the formatting:</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=strings_codepages&amp;rev=1541749998&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-11-09T07:53:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>strings_codepages</title>
        <link>https://docs.xsharp.it/doku.php?id=strings_codepages&amp;rev=1541749998&amp;do=diff</link>
        <description>Strings and codepages or &quot;The Unicode Advantage&quot;

This article is a copy of the article on the X# website, written by Robert v.d.Hulst.

Introduction

We have been quite busy creating the X# runtime. And when we did that we stumbled on the problem of bytes, characters, codepages, Ansi and Unicode. X# has to deal with all of that and that can become quite complicated. That is why we decided to write a blob post about this. In this post we look back to explain the problems from the past and how th…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=strings&amp;rev=1538802583&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-06T05:09:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>strings</title>
        <link>https://docs.xsharp.it/doku.php?id=strings&amp;rev=1538802583&amp;do=diff</link>
        <description>Strings and their prefixes

A string in X# is delimited by the double quotation mark:

cString := &quot;this is a string&quot;

This is valid for the VO, Vulcan and Code dialects. In the VO dialect a string can also be delimited by the single quotation mark:

cString := &#039;this is a string&#039;</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=trycatch&amp;rev=1534737935&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-20T04:05:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>trycatch</title>
        <link>https://docs.xsharp.it/doku.php?id=trycatch&amp;rev=1534737935&amp;do=diff</link>
        <description>Try - Catch

The Try - Catch block is very important, and should be used where an error can occur, for example if a file that needs to be read does not exist, you are specifying an invalid path, the current user has not the rights to read and so forth - please read the documentation about</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=tuples&amp;rev=1518251304&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-02-10T08:28:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tuples</title>
        <link>https://docs.xsharp.it/doku.php?id=tuples&amp;rev=1518251304&amp;do=diff</link>
        <description>System.Tuple

The System.Tuple class can be used to hold different objects, it is like a list with predefined data.

A tuple is very useful when you need fixed groups of data and don&#039;t like to define a own class for it. To define and to create a tuple you need generics.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=using&amp;rev=1524395457&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-04-22T11:10:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using</title>
        <link>https://docs.xsharp.it/doku.php?id=using&amp;rev=1524395457&amp;do=diff</link>
        <description>The using statement is very useful if you are working with objects that need to be disposed by the garbage collector at a defined point.

using System.IO
using System.Text

function Start( ) as void                     
local cFileName as string
local aBytes as byte[]
	                         
cFileName := &quot;c:\temp\Using.txt&quot;
System.Console.WriteLine(&quot;start working with&quot; + cFileName )
begin using var oFile := FileStream{ cFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite } // as FileStream
…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=virtual_methods&amp;rev=1528356337&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-07T07:25:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>virtual_methods</title>
        <link>https://docs.xsharp.it/doku.php?id=virtual_methods&amp;rev=1528356337&amp;do=diff</link>
        <description>All VO methods are virtual

If you receive the warning

Warning XS0108 &#039;MySon.MyMethod()&#039; hides inherited member &#039;MyFather.MyMethod()&#039;. Use the new keyword if hiding was intended. 

please check the compiler option /VO3 Virtual Instance Methods or add the keyword</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=vo_addons_status&amp;rev=1617081725&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-30T05:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vo_addons_status</title>
        <link>https://docs.xsharp.it/doku.php?id=vo_addons_status&amp;rev=1617081725&amp;do=diff</link>
        <description>Status of VO Addons for X#

	*  ReportPro: The maintenance for ReportPro was taken over by the X# development team. You have to be a member of the FoX program and send a documentation of your ReportPro purchase to the development team and you will have access to the current X# version for ReportPro 2/3 (and the enhanced VO version too)</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=vo_errorblock&amp;rev=1567262810&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-08-31T14:46:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vo_errorblock</title>
        <link>https://docs.xsharp.it/doku.php?id=vo_errorblock&amp;rev=1567262810&amp;do=diff</link>
        <description>The VO ErrorBlock

The VO ErrorBlock() function gives the possibility to set a global error handler. Unfortunately, in .NET this is not more possible as the CLR (the Common Language Runtime) does not supports such a feature.

In a .NET application you need to make extensive use of</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=vo_to_xsharp&amp;rev=1617081864&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-30T05:24:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vo_to_xsharp</title>
        <link>https://docs.xsharp.it/doku.php?id=vo_to_xsharp&amp;rev=1617081864&amp;do=diff</link>
        <description>Migration from VO (Visual Objects) to X#

	*  Hints for a successful migration
	*  Compile errors in the migration process
	*  Hints for a better use of VO Xporter</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=vogui_with_winform&amp;rev=1571080263&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-14T19:11:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vogui_with_winform</title>
        <link>https://docs.xsharp.it/doku.php?id=vogui_with_winform&amp;rev=1571080263&amp;do=diff</link>
        <description>A VO GUI application with a Windows Forms window

Thanks to the work of Paul Piko there is the possibility to add a WinForms to a VO GUI application.

These are the steps:

	*  Instead of using the “normal” App class from the VO GUI classes use the VOWinFormApp class (contained in the X# VO</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=vulcan_compatibility&amp;rev=1527574609&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-05-29T06:16:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vulcan_compatibility</title>
        <link>https://docs.xsharp.it/doku.php?id=vulcan_compatibility&amp;rev=1527574609&amp;do=diff</link>
        <description>Vulcan.NET compatibility issues

Some things are different in X# than in Vulcan.NET.

	*  String delimiters
	*  Defines</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=vulcan_to_xsharp&amp;rev=1517528361&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-02-01T23:39:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vulcan_to_xsharp</title>
        <link>https://docs.xsharp.it/doku.php?id=vulcan_to_xsharp&amp;rev=1517528361&amp;do=diff</link>
        <description>Migrate an existing Vulcan.NET application to X#

This chapter contains the steps you must take to have an existing Vulcan run in X# with the least amount of work. You may not need to do all steps, and the few errors I got and solved you may not see at all, while some others errors may occur in your project. But in general, if you are aware of what is described below, the Vulcan to X# conversion can be done very quickly.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=where_to_find_help&amp;rev=1523802605&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-04-15T14:30:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>where_to_find_help</title>
        <link>https://docs.xsharp.it/doku.php?id=where_to_find_help&amp;rev=1523802605&amp;do=diff</link>
        <description>Where to find help

Unfortunately it is not easy to find the right source for help and documentation.

This is caused mainly by the fact that X# is very open and can use functionalities from different worlds.

	*  The X# language itself: in the X# language documentation, and because it is not yet complete, sometimes also in the Vulcan.NET help file</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=winforms_databinding_sample&amp;rev=1532842131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-07-29T05:28:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>winforms_databinding_sample</title>
        <link>https://docs.xsharp.it/doku.php?id=winforms_databinding_sample&amp;rev=1532842131&amp;do=diff</link>
        <description>WinForms Databinding

The databinding in WinForms is not so advanced like the databinding in WPF, but it is possible.
The data object on which the controls content can be bound (usually called ViewModel in MVVM terms) needs to implement the INotifyPropertyChanged</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=write_exception_log&amp;rev=1522000348&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-25T17:52:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>write_exception_log</title>
        <link>https://docs.xsharp.it/doku.php?id=write_exception_log&amp;rev=1522000348&amp;do=diff</link>
        <description>Write an exception to a log file

The following code writes the passed exception to a file named XSharpError.log in the application directory. If this file exists, the error is appended, otherwise the file is created first.

static class ErrorHandling
static method WriteErrorLog( oException as Exception ) as void
local cFileName as string
local oSB as StringBuilder

cFileName := Path.Combine( AppDomain.CurrentDomain:BaseDirectory, &quot;XSharpError.log&quot; )
oSB := StringBuilder{ String.Format( &quot;Error o…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xbase_dialects&amp;rev=1580713353&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-02-03T07:02:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xbase_dialects</title>
        <link>https://docs.xsharp.it/doku.php?id=xbase_dialects&amp;rev=1580713353&amp;do=diff</link>
        <description>xBase Dialects

The xBase family of languages comes from Ashton Tate&#039;s DBase product. There were several descendants, and only some of them have retained importance.
DBase was a database environment. Code was not compiled, but present with sources, and to execute DBase programs, a license of the product was needed.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide_editor_filetypes&amp;rev=1516882810&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-25T12:20:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide_editor_filetypes</title>
        <link>https://docs.xsharp.it/doku.php?id=xide_editor_filetypes&amp;rev=1516882810&amp;do=diff</link>
        <description>Specify an editor for some filetypes

If you don&#039;t like to use XIDE&#039;s internal editor for some filetypes, you can attribute an external editor.

Simply edit the XIDE.cfg file in your main XIDE folder, and add entries in the [FileTools] section. If this section does not exist, add it.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide_extend_toolsmenu&amp;rev=1516882626&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-25T12:17:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide_extend_toolsmenu</title>
        <link>https://docs.xsharp.it/doku.php?id=xide_extend_toolsmenu&amp;rev=1516882626&amp;do=diff</link>
        <description>Extend the Tools menu in XIDE

To add own utilities on the XIDE Tools menu, you need to edit the Config\Toys.cfg file in your XIDE folder.

This a sample of such a configuration:

MENUENTRY=Windows API help file
EXECUTE=C:\cavo28\Help\win32sdk.chm

SEPARATOR

MENUENTRY=Vulcan At Warp Speed
EXECUTE=C:\Program Files (x86)\Vulcan.NET 4.0\Doc\Vulcan.NETAtWarpSpeed.pdf

MENUENTRY=ADS Help
EXECUTE=C:\CAVOTOOL\advantage.chm

MENUENTRY=VO-xPorter
EXECUTE=C:\XSharp\Compiler\VOXPorter\VOXporter.exe</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide_navigate&amp;rev=1520398403&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-07T04:53:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide_navigate</title>
        <link>https://docs.xsharp.it/doku.php?id=xide_navigate&amp;rev=1520398403&amp;do=diff</link>
        <description>How to navigate in XIDE

	*  Alt+C opens the classes navigation combobox, there you can quickly select the desired class
	*  Alt+G opens the entities navigation combobox, to quickly navigate to entity in the class
	*  Alt+Up goes to the previous entity</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide_placeholders_prebuild&amp;rev=1516979179&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-26T15:06:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide_placeholders_prebuild</title>
        <link>https://docs.xsharp.it/doku.php?id=xide_placeholders_prebuild&amp;rev=1516979179&amp;do=diff</link>
        <description>Placeholders and Prebuild/Postbuild events

For Prebuild and Postbuild events in XDIE the following placeholders are available:

	*  %NETSDKPATH%
	*  %OUTPUTFILE%
	*  %OUTPUTPDB%
	*  %OUTPUTPATH%
	*  %ProjectOutputPath%
	*  %AppPath%
	*  %ProjectPath%</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide_plugin_sample&amp;rev=1516943824&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-26T05:17:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide_plugin_sample</title>
        <link>https://docs.xsharp.it/doku.php?id=xide_plugin_sample&amp;rev=1516943824&amp;do=diff</link>
        <description>A sample XIDE plugin

Here you can find a complete sample for an XIDE plugin with some useful functions. For a short description how a plugin works please see here: The XIDE plugin system.

This plugin has the following functions:

	*  Insert a textblock at cursor position (textblocks can be defined as prg files)</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide_plugin_system&amp;rev=1516943158&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-26T05:05:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide_plugin_system</title>
        <link>https://docs.xsharp.it/doku.php?id=xide_plugin_system&amp;rev=1516943158&amp;do=diff</link>
        <description>The XIDE plugin system

XIDE comes with a possibility to easily enhance it. Here you can find a complete sample (binaries and source) to use and maybe to enhance.

The core of a plugin is to define a class that inherits from Xide.PluginSystem.Plugin and implements the</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide_reference_templates&amp;rev=1516881959&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-25T12:05:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide_reference_templates</title>
        <link>https://docs.xsharp.it/doku.php?id=xide_reference_templates&amp;rev=1516881959&amp;do=diff</link>
        <description>Reference Templates

To simplify the addition of references to a project, you can add your own references groups to XIDE.

Simply edit the file Config\References.cfg in your XIDE folder and add what you like.

This is a sample for WPF applications:

NAME = CLR4 WPF 
FF = CLR4,PresentationCore
FF = CLR4,PresentationFramework
FF = CLR4,System
FF = CLR4,System.Core
FF = CLR4,System.Data
FF = CLR4,System.Windows
FF = CLR4,System.XAML
FF = CLR4,System.XML
FF = CLR4,WindowsBase</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide_select_framework_version&amp;rev=1516980735&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-01-26T15:32:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide_select_framework_version</title>
        <link>https://docs.xsharp.it/doku.php?id=xide_select_framework_version&amp;rev=1516980735&amp;do=diff</link>
        <description>Select a specific .NET Framework version for an XIDE project

Unfortunately, XIDE hides the .NET Framework selection from the user and uses the newest one available on the developers machine, but fortunately it is possible to change - maybe to build an executable that runs on Windows XP where only .NET 4.0 is available.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide_viaef_file&amp;rev=1520915650&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-13T04:34:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide_viaef_file</title>
        <link>https://docs.xsharp.it/doku.php?id=xide_viaef_file&amp;rev=1520915650&amp;do=diff</link>
        <description>What to do with a .viaef file

XIDE is organized in projects like VO. But the “Empty project” that XIDE shows at the first start can be used only for standalone prg files, but not for applications.
As said, XIDE has projects, and every project can contain from zero to many applications.
Contrarily to VO, projects can contain not only applications, but also application groups to better organize the applications in the project.
XIDE knows two different export files:</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xide&amp;rev=1520915205&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-13T04:26:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xide</title>
        <link>https://docs.xsharp.it/doku.php?id=xide&amp;rev=1520915205&amp;do=diff</link>
        <description>XIDE Use Cases

The articles in this section show how to accomplish some things in XIDE. Most of them are not documented elsewere, but were explained by the author in private mails.

	*  What to do with a .viaef file
	*  Reference Templates
	*  The Plugin System
	*  A sample for a XIDE plugin, complete with sources
	*  Placeholders and Prebuild/Postbuild Events
	*  Extend the Tools menu with own utilities
	*  Configure an external editor for file types
	*  How to select a specific .NET Framework…</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xporter_disabled_warnings&amp;rev=1535348120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-27T05:35:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xporter_disabled_warnings</title>
        <link>https://docs.xsharp.it/doku.php?id=xporter_disabled_warnings&amp;rev=1535348120&amp;do=diff</link>
        <description>Disabled warnings by Xporter/VO

When moving a VO application over to X#, the Xporter/VO disables some warnings.

These are:

	*  9032 This entity type cannot return a value. Return value ignored.
	*  9043 Function or type &#039;{0}&#039; is ambiguous. Could be &#039;{1}&#039; or &#039;{2}&#039;. Using the first one.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xporter_hints&amp;rev=1617082933&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-30T05:42:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xporter_hints</title>
        <link>https://docs.xsharp.it/doku.php?id=xporter_hints&amp;rev=1617082933&amp;do=diff</link>
        <description>Hints for use of the VO XPorter

The VO XPorter does a very good job migrating your VO code to X#, but of course it cannot fix all your code in the porting process.
There are some constructs that are not compatible between X# and VO.
If you need a continuos migration process where the VO version of your software continues to evolve, then you should make all your changes on the VO side, and there are some possibilities to keep code different between VO and X#.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xsharp_dialects&amp;rev=1726039323&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-11T07:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xsharp_dialects</title>
        <link>https://docs.xsharp.it/doku.php?id=xsharp_dialects&amp;rev=1726039323&amp;do=diff</link>
        <description>The dialects

X# has introduced a new term in the world of .NET programming: the dialect.

Why this? The Xbase language that was started with DBase in the MS-DOS days has several descendants, evolved each on its own, and with different syntax.

Since X# was started with the intention to give a future to all or several of them, a sort of a switch is needed to differentiate them from each other.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xsharp_service_sample&amp;rev=1532844879&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-07-29T06:14:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xsharp_service_sample</title>
        <link>https://docs.xsharp.it/doku.php?id=xsharp_service_sample&amp;rev=1532844879&amp;do=diff</link>
        <description>Windows Service Sample

X# is very well suited for Windows Services. A Windows Service is a GUI less application that runs in the background of any Windows machine, and even without any logged in user. Therefore services are well suited for background tasks.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xsharp_sites&amp;rev=1726039584&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-11T07:26:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xsharp_sites</title>
        <link>https://docs.xsharp.it/doku.php?id=xsharp_sites&amp;rev=1726039584&amp;do=diff</link>
        <description>Sites around X#

	*  www.xsharp.info - The X# Project homepage
	*  docs.xsharp.it - The X# Documentation Project
	*  www.fabtoys.net - Fabrice Foray&#039;s tools, also for X#
	*  enotes.xsharp.it - Phil Hepburns eNotes collection
	*  www.xsharp.it - X# Italian site
	*  www.riedmann.it - Samples and documents for X# and Vulcan.NET

If you know other sites that should be added to this page, please let us know.</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=xsharp_story&amp;rev=1726038990&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-11T07:16:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xsharp_story</title>
        <link>https://docs.xsharp.it/doku.php?id=xsharp_story&amp;rev=1726038990&amp;do=diff</link>
        <description>The Story of X#

The origin of the X# Project has to start many years ago in the MS-DOS area with DBase III (Wikipedia).
DBase III was a database with a integrated language and it was very easy to write applications with it.

But it had a few drawbacks: it was slow because interpreted and every user needed a licence of the product.
Therefore a few software houses created compilers of this language to make the programs faster an run standalone.
One of this new products was FoxPro (</description>
    </item>
    <item rdf:about="https://docs.xsharp.it/doku.php?id=yield&amp;rev=1524392410&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-04-22T10:20:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>yield</title>
        <link>https://docs.xsharp.it/doku.php?id=yield&amp;rev=1524392410&amp;do=diff</link>
        <description>yield permits to return a part of a result in a executing loop.

Please look at the following code that does not uses yield:

foreach cFile as string in GetFiles( &quot;c:\&quot; )
  WriteLine( cFile )
next

return
function GetFiles( cFolder as string ) as List&lt;string&gt;
local aFiles as string[]
local oFiles as List&lt;string&gt;

WriteLine( &quot;start creating list&quot; )	
oFiles := List&lt;string&gt;{}
aFiles := Directory.GetFiles( cFolder )
foreach cFile as string in aFiles
  oFiles:Add( cFile )
next
WriteLine( &quot;end creatin…</description>
    </item>
</rdf:RDF>
