Conversion or application of well known VO libraries to X#

2 weeks 4 days ago #1 by ic2
We are working on the conversion of 1 large client project from VO to X#. We have converted 1 program which uses a lot of 'general' functionality and this seems to be a good base to start converting the larger projects.

In the program we use the following VO libs. My questions is:

1 Did anyone convert any of these libs, willing to share the X# converted lib?
2 Or is there another strategy to get the functionality of any of these libs in X#? E.g. running Report Pro reports using a VO program?

I realize well that there are better solutions in .Net for at least some of the below libs but apart from info from others how they replaced one or more of these libs, I would like to start wherever possible with converted libs to see if the program still works, and replace with .Net solutions as a second step.

The libs are:
Excel automation base class
Word base class

RP2RDD32 Lib
_SE UI XP Base classes (Sven Ebert's toolbar program)

Fab Paint lib
Fab Paintlib control


Please Log in or Create an account to join the conversation.

2 weeks 4 days ago #2 by Fabrice
Hi Dick,
about FabPaint, I suggest you start with the Vulcan version of that library : It is available at ; and moving to X# should not raise some complex errors.
Sorry, I currently have little time to dedicate to that task, but I would be happy to publish your X# version when it's done.


Please Log in or Create an account to join the conversation.

2 weeks 4 days ago #3 by robert
There is really no need to convert Excel or Word ole classes. Simply add a reference to the Excel and Word interop assemblies and choose "embed interop types" for these references. That will include the type information from these type libraries in your code, so you even don't have to include the assemblies with your app.
And for ReportPro you should use the RP2 version that we have created. Mail me a proof of purchase for RP2 and I will grant you download rights to the RP2 binaries. If you also have a RP2 source lincense I will grant you the rights to the RP2 source as well.


XSharp Development Team
The Netherlands
This email address is being protected from spambots. You need JavaScript enabled to view it.

Please Log in or Create an account to join the conversation.

2 weeks 3 days ago #4 by ic2
Hello Fabrice,

We're now on 90 errors - after setting the program to Allow Unsafe code, because of the use of pointers.

This is one error we get often:

Warning XS9032 This entity type cannot return a value. Return value ignored. Fab_Ctrl D:\XSharpProjects\FabPaintlibsXsharp\Fab_Ctrl\Bitmap Button.prg 527

XS9032 is skipped in the help file. THis is the code:

ASSIGN ImageList( oNew AS ImageList )
SELF:_oImgList := oNew

What's wrong with it?

Same question for error XS0108 which is also skipped in the help:

Warning XS0108 'MultiImageWindow.Close()' hides inherited member 'StdImageWindow.Close()'. Use the new keyword if hiding was intended. Fab_PaintLib_Test D:\XSharpProjects\FabPaintlibsXsharp\Fab_PaintLib_Test\Wnd MultiImgView.prg 11

METHOD Close()
return self

If I know what to do here I think we may have a working X# FabPaintLib soon.


Please Log in or Create an account to join the conversation.

2 weeks 3 days ago #5 by Chris
Hi Dick,

About the first warning, it is simple, as its message says, ASSIGNs in .Net do not return values, so the RETURN <xxxx> line is being ignored. You can either chose to remove the code after each RETURN, or simply ignore the warning and disable it.

About the second one, by default METHODs in .Net are not VIRTUAL, meaning that you cannot override a method of a base class by redefining it in a child class, like we do in VO, this instead creates a completely new method, from the CLR's point of view. In order to make a (base) method overrideable, you must explicitly mark it with the VIRTUAL keyword. Or, you van simply enable the "All instance methods virtual" project option, which tells the compiler to make all methods VIRTUAL by default, for compatibility with VO. Both ways should get rid of the warning (which in this case it is important to resolve it, do not simply disable it).


XSharp Development Team

Please Log in or Create an account to join the conversation.