Differences VO XS
Differences VO XS
Wolfgang Riedmann
[email protected]
• Class Libraries (System, GUI, RDD, SQL, OLE, Windows API, Internet):
• VO 2.8: VO28SYS.DLL, VO28GUI.DLL, VO28RDD.DLL, VO28SQL.DLL, VO28OLE.DLL
• Vulcan: VulcanVOSystemClasses.DLL, VulcanVOGUIClasses.DLL,
VulcanVORDDClasses.DLL, VulcanVOSQLClasses.DLL
• X#: will be created by a tool from your own VO source code. GUI classes based on
WinForms and SQL classes based on ADO.NET arriving too!
Meeting Italiano 2018 a Bolzano
Everything is an object
Every data type is an object, even basic data types like "string", "int", "logic"
This means that even these datatypes can have methods and properties:
MyString:ToUpper()
MyString:Length
nNumber:ToString()
To convert:
System.Text.Encoding.Unicode.GetString( aBytes ) -> aBytes as byte[] -> cString as string
System.Text.Encoding.Unicode:GetBytes( cString ) -> cString as string -> aBytes as byte[]
A single character delimited with single apostrophe is not a string, but a char!
Attention to the dialects: Vulcan does not permits the single apostroph as string delimiters
It is possible to have two different classes with the same name in two different
namespaces.
The „Using“ statement declares the used namespace, but it is optional, then you need
to specify the fully qualified class name.
Separator between class and namespace : the dot "."
System.Collections.Generic.List{}
Attention: Assembly and namespace are two different things!!!! Microsoft gives a bad
example because they mix namespaces and assemblies (more different namespaces in
one assembly, and namespaces sparsed over multiple assemblies)
Attention: some uses have requested that colon and dot are treated the same, and in
some places this should work! (C# uses only the dot, so the Roslyn compiler make no
distinction)
Please pay attention to "begin sequence – end sequence" in applications migrated from VO!
Often in these blocks the errors are not handled.
Every class that implements an interface must have all methods and properties that are
defined in the interface
In VO for such purposes classes needed to have the same father class, using interfaces the
classes don‘t need to have any relation. Please see the documentation for the interface
IDisposable
In the .NET Framework there is a datatype „decimal“ with high precision, where these
sort of errors does not occur anymore. Unique problem: it is slower.
Very good notice: in the X# runtime the „decimal“is supported directly (or better: used
internally)!
You can store a decimal in a usual, and it will be a decimal(27).
X# has been developed with performance in mind. But code executed in the .NET runtime
is slower than native code like VO.
Optimizations:
• Interal all arrays are typed
• Macros are slower in compilation, but faster in execution because is effectively
compiled code
• Garbage collector enhanced, stable and fast, in AnyCPU all the memory can be used,
not only 2 GB
https://www.xsharp.info
https://docs.xsharp.it
https://www.xsharp.info/help/index.html