Hi ProFoxers,
A question was asked by a person that did not understand the X# website and what it brings to the party. Robert (Owner) posted a reply and for those who might also not understand, I share it also here:
Visual FoxPro is an environment that consists of several pieces: - An IDE - A source code editor - A form and menu editor - A report editor - All of these produce source code that is compiled with the VFP compiler into so called "P-Code" - This p-code gets interpreted by the Visual FoxPro runtime - - and runs with the help of a set of classes and functions and support for DBFs, SQL etc.
The most important part of X# is the compiler, that takes the same source code and produces .Net assemblies. The biggest difference of X# is that it is a compiled environment and not an interpreted environment. X# tries to figure out at compile time what you want to do with your code and warns you if there are language elements that are ambiguous. For example, you can use undeclared variables, but the compiler will warn you about that. And for example something like "Customer.LastName" could be a field in the Customer cursor or a LastName property of an (undeclared) Customer variable.
For its tools X# uses Visual Studio with its forms editor, menu editors, source code editors etc. X# also comes with a runtime library of functions and DBF support and can use all the available components in the .Net framework, for example for reporting (there are many reporting solutions for .Net) and SQL access.
X# itself is more function based than command based (like VFP) but has a pre-processor that helps to translates commands into functions. So you can still write code like you do in VFP. For example "SKIP 1" is translated to DbSkip(1) and "SKIP 1 IN Customer" is translated to ("Customer")->DbSkip(1).
We have recently added support for most of the VFP language elements (but we are not completely there yet)
X# and especially its VFP support is not fully ready yet. For example: we are investigating how we can get VFP forms to run in .Net. Should we recreate the whole VFP class library or should we convert VFP form definitions to code and use the normal .Net Windows Forms. This is one of the topics that we plan to show and discuss at SW Fox next week.
I hope this gives you a bit of an idea about what X# is. Please don't hesitate to ask if you have more questions.
Finally: the public version of X# is a free download. The only thing we ask from people is to register themselves. I think that is not too much asked. After all we are offering a free download of a fully functional product. And to post messages to our forums you also have to register yourself (just like on other forums). That is the only way to prevent spammers from flooding our forum.
Robert van der Hulst XSharp Development team The Netherlands.
On 18-Oct-2019 10:24 AM, Johan Nel wrote:
X# itself is more function based than command based (like VFP) but has a pre-processor that helps to translates commands into functions. So you can still write code like you do in VFP. For example "SKIP 1" is translated to DbSkip(1) and "SKIP 1 IN Customer" is translated to ("Customer")->DbSkip(1).
Interesting - very similar to Clipper. Clipper also allowed you to DECLARE your own commands and a pre-compiler that translated them into Clipper source code. fwiw I would quibble that ("Customer")->DbSkip(1) is not a traditional function format (more OO) - I think Clipper would have had DbSkip("Customer", 1). As I *may* have mentioned before, Clipper also handled arrays /properly/ <g>. For free it certainly can't hurt to look!
--- StripMime Report -- processed MIME parts --- multipart/alternative text/plain (text body -- kept) text/html ---
Hi Andy
On 2019/10/18 12:35, AndyHC wrote:
On 18-Oct-2019 10:24 AM, Johan Nel wrote:
X# itself is more function based than command based (like VFP) but has a pre-processor that helps to translates commands into functions. So you can still write code like you do in VFP. For example "SKIP 1" is translated to DbSkip(1) and "SKIP 1 IN Customer" is translated to ("Customer")->DbSkip(1).
Interesting - very similar to Clipper. Clipper also allowed you to DECLARE your own commands and a pre-compiler that translated them into Clipper source code.
Yes remember X# is developed by Robert vd Hulst who was a Clipper developer, and was the Visual Objects compiler developer since I believe V2.6-V2.8. He was subsequently also developer of Vulcan.NET and the pre-processor of X# is behaving exactly the same as the Clipper/VO pre-processor.
fwiw I would quibble that ("Customer")->DbSkip(1) is not a traditional function format (more OO) - I think Clipper would have had DbSkip("Customer", 1). As I
No that is the "Aliased" way in Clipper/VO/X#. DbSkip() acts on the current workarea, ("AliasName") will SELECT AliasName; DbSkip(); SELECT PreviousWorkArea
*may* have mentioned before, Clipper also handled arrays /properly/ <g>.
Hehe, I would not quibble with that one... <VBG> LOCAL aArray = {{"This", "is", "a"}, {"proper", "array", "of", {"multi", "dimensions"}}}
For free it certainly can't hurt to look!
Indeed, although a FOX membership can help in speeding up the VFP syntax support.
Johan