Hi,
I have now translated my powerpoint document from the Italian Meeting at Bolzano and put it here:
Differences_VO_XS.pdf
Hopefully this PDF document will help a bit for all programmers coming from VO.
If someones finds errors, please let me know!
Wolfgang
P.S. on the page https://riedmann.it/verschiedenes_xsharp.php there may be other useful documents and samples.
Session material: Differences between VO and X#
Session material: Differences between VO and X#
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
- lumberjack
- Posts: 727
- Joined: Fri Sep 25, 2015 3:11 pm
- Location: South Africa
Session material: Differences between VO and X#
Hi Wolfgang,
Final notice: Please all Greeks English stay out of this, no names no pack drill :
•Attention to the conversions!
•You can more easily use memo fields for binary content (compressed or encrypted data, etc.)
Interpolated string:
Hi guys,
welcome to Bolzano, the capital of “Südtirol"
Separator between class and namespace : a dot ".“
•Method/Assign/Access/Property: colon
•Static method: dot
•Separators of namespaces: dot
•Structure: dot Attention: some users 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)
Attention: without error handling the application could terminate without an error!!!
A number "123456789“ internally could be "123456788.9999999999“ .
This can lead to rounding problems since
"123456789 == nVariabile“ could return false.
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.
•Macros are slower in compilation, but faster in execution because it is similar to written code
•Garbage collector enhanced, stable and fast, in AnyCPU all memory can be used,
Here are maybe some cosmetics, please bear with me, an Italian German English translated by an Afrikaans Englishman. Hopefully we can get an Englishman or English American or English <Country>man to do a final edit.wriedmann wrote: If someones finds errors, please let me know!
Final notice: Please all Greeks English stay out of this, no names no pack drill :
The ErrorBlock is not available anymoreThe ErrorBlock is not more available
As runtime we specify the libraries/DLLs that come with:As runtime we specify the libraries/DLLs than come with :
Every data type is an object, even basic data types like "string“, "int“, "logic“Every data type in an object, even basic data types like „string“, „int“, „logic“
String != array or char != array of byte•String != array of char != array of byte
•Attention at the conversions!
•You cannot more easily use memo fields for binary content (compressed or crypted data, etc.)
•Attention to the conversions!
•You can more easily use memo fields for binary content (compressed or encrypted data, etc.)
A string in X# is delimited with a double apostrophe: ", but in the VO dialect, a single apostrophe can be used. The parentheses [] cannot be used anymore.A string in X# è is delimited with the double apostroph: „, but in the VO dialect also the single apostroph can be used. The parentheses [] cannot be used anymore.
A single character delimited with a single apostrophe is not a string, but a char!A single character delimited with single apostroph is not a string, but a char!
Attention to the dialects: Vulcan does not permit a single apostrophe as string delimitersAttention at the dialects: Vulcan does not permits the single apostroph as string delimiters
Escaped string: e“Hi guys,nwelcome to Bolzano, the capital of “Südtirol““Escaped string: e“Hi guys,nwelcome to Bolzano, the capital of “Südtirol““
Interpolated string i“Hi {cNome}“
Interpolated string:
Hi guys,
welcome to Bolzano, the capital of “Südtirol"
Namespaces are helping to organize our own classes, and to avoid conflicts.The namespaces are helping to organize the own classes, and to avoid conflicts.
The "Using“ statement declares the used namespace, but it is optional, otherwise you need to specify the fully qualified class name.The „Using“ statement declares the used namespace, but it is possible to not specify it, but then you need to specify the fully qualified class name.
Separator between class and namespace : the dot „.“
Separator between class and namespace : a dot ".“
example because they mix namespaces in assemblies (different namespaces in one assembly, and namespaces spread over multiple assemblies)example because they mix namespaces in assemblies (more different namespaces in one assembly, and namespaces sparsed over multiple assemblies)
In VO we use a colon to access methods and assign/access of classes, a dot for the members of structures. In X# we need delimiters on more occasions:In VO we use the colon to access the methods and assign/access of the classes, and the dot for the members of structures. In X# we need delimiters in more occasions:
•Method/Assign/Access/Property: colon
•Static method: dot
•Separatore di namespace: dot
•Structure: dot 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)
•Method/Assign/Access/Property: colon
•Static method: dot
•Separators of namespaces: dot
•Structure: dot Attention: some users 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)
Since the application does not run under the VO runtime control anymore, we have to adjust to the .NET Framework way.Since the application runs not more under the VO runtime control, we have to adjust to the .NET Framework sight.
Attention: without errorhandling the application could be terminated without error
Attention: without error handling the application could terminate without an error!!!
There is no possibility anymore to set a global error handler. Error handling in .NET is local, no more GLOBAL like in VO!There is no more the possibility toi set a global error handler. Error handling in .NET is local, no more global like in VO!
Please pay attention to "begin – end" sequencesPlease pay attention to „begin – end sequence“
can be defined "as IName“can be defined „as IName“
Convention: every interface definition name start with an uppercase i "I“Convention: every interface definition name start with an uppercase „I“
Float in Clipper and VO, and therefore also in Vulcan and X# is a "floating point“ data type, with a floating decimal comma/dot and exponents.Float in Clipper and VO, and therefore also in Vulcan and X# is a „floating point“ data type, with a floating comma and exponents.
A number „123456789“ internally could be „123456788.9999999999“ .
This can lead to rounding problems since
„123456789 == nVariabile“ could return false.
In the .NET Framework there is a datatype „decimal“ with high precision, where these sort of errors does not occurs anymore. Unique problem: it is slower.
A number "123456789“ internally could be "123456788.9999999999“ .
This can lead to rounding problems since
"123456789 == nVariabile“ could return false.
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 supportedVery good notice: in the X# runtime the „decimal“is supported
The performance of VO vs. X# is very difficult to compare.The performance of VO e X# is very different to compare.
•Internal all arrays are typed•Interal all arrays are typed
•Macros are slower in compilation, but faster in execution because is like written code
•Garbage collector enhanced, stable and fast, in AnyCPU all the memory can be used,
•Macros are slower in compilation, but faster in execution because it is similar to written code
•Garbage collector enhanced, stable and fast, in AnyCPU all memory can be used,
______________________
Johan Nel
Boshof, South Africa
Johan Nel
Boshof, South Africa
Session material: Differences between VO and X#
Hi Johan,
thank you very much for your work!
I will add these corrections as fast as possible and then upload the changed document.
It is very hard to translate! Sometimes it takes more time for me to translate an Italian document to German as rewrite it completely in German... An most of the time the German is very far from being perfect.
Wolfgang
thank you very much for your work!
I will add these corrections as fast as possible and then upload the changed document.
It is very hard to translate! Sometimes it takes more time for me to translate an Italian document to German as rewrite it completely in German... An most of the time the German is very far from being perfect.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
- lumberjack
- Posts: 727
- Joined: Fri Sep 25, 2015 3:11 pm
- Location: South Africa
Session material: Differences between VO and X#
Hi Wolfgang,
Anyway have fun!
Regards,
You welcome. Just be careful, I might not always be correct. I always tell the story:wriedmann wrote: Hi Johan,
thank you very much for your work!
I will add these corrections as fast as possible and then upload the changed document.
It is very hard to translate! Sometimes it takes more time for me to translate an Italian document to German as rewrite it completely in German... An most of the time the German is very far from being perfect.
Code: Select all
At school in the Free State province where I grew up, only 2 languages are spoken, Afrikaans and Afrikaans.
I had this horrible subject called English at school. I could not understand why I would not pass my grades if I fail it. Afrikaans I could understand, because it is the language we communicate in...
Needless to say I then went to the University of Stellenbosch in the Western Cape province (close to Cape Town) and with a shock I realized English is actually a language spoken by other people... :lol:
Regards,
______________________
Johan Nel
Boshof, South Africa
Johan Nel
Boshof, South Africa
Session material: Differences between VO and X#
Wolfgang,
Great overview. Thanks for that. I might 'steal' some topics from that for the help file if you don't mind.
One correction, in addition to the comments from Johan:
Prefixes for numbers are actually Suffixes,
so:
10m = Decimal 10
10d = Double 10
10s = Single 10
10b = binary 2
One additional remark:
In the X# runtime you can also store a Decimal value in a USUAL. The usualtype will be DECIMAL (27).
Robert
Great overview. Thanks for that. I might 'steal' some topics from that for the help file if you don't mind.
One correction, in addition to the comments from Johan:
Prefixes for numbers are actually Suffixes,
so:
10m = Decimal 10
10d = Double 10
10s = Single 10
10b = binary 2
One additional remark:
In the X# runtime you can also store a Decimal value in a USUAL. The usualtype will be DECIMAL (27).
Robert
XSharp Development Team
The Netherlands
robert@xsharp.eu
The Netherlands
robert@xsharp.eu
Session material: Differences between VO and X#
Hi Johan,
thank you very much! I have corrected the document and uploaded it again.
I hope I have corrected all my errors.
For such corrections sometimes we would need Phil as native English speaker.
Wolfgang
thank you very much! I have corrected the document and uploaded it again.
I hope I have corrected all my errors.
For such corrections sometimes we would need Phil as native English speaker.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Session material: Differences between VO and X#
Hi Robert,
of course you can take what you like.
And thank your for your suggestions - I have added them to the document.
Wolfgang
of course you can take what you like.
And thank your for your suggestions - I have added them to the document.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
- lumberjack
- Posts: 727
- Joined: Fri Sep 25, 2015 3:11 pm
- Location: South Africa
Session material: Differences between VO and X#
Hi Wolfgang,
Regard,
You are welcome, was a pleasure.wriedmann wrote:Hi Johan,
thank you very much! I have corrected the document and uploaded it again.
I have to second that. By the way where is Uncle Phil, he is very quiet... Started to worry I scared him away. Afraid I will bash his Entity Framework promotions...For such corrections sometimes we would need Phil as native English speaker.
Regard,
______________________
Johan Nel
Boshof, South Africa
Johan Nel
Boshof, South Africa
Session material: Differences between VO and X#
Hi Johan,
in the summer even in Wales the weather is good, and so Phil passes his time not at his computer.
I think he will re-show up when the winter comes <g>.
Wolfgang
in the summer even in Wales the weather is good, and so Phil passes his time not at his computer.
I think he will re-show up when the winter comes <g>.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
- lumberjack
- Posts: 727
- Joined: Fri Sep 25, 2015 3:11 pm
- Location: South Africa
Session material: Differences between VO and X#
Hi Wolfgang,
So you mean he does not hibernate in winter, he X# in winter?wriedmann wrote: in the summer even in Wales the weather is good, and so Phil passes his time not at his computer.
I think he will re-show up when the winter comes <g>.
______________________
Johan Nel
Boshof, South Africa
Johan Nel
Boshof, South Africa