Jump to content

C++ Builder


Lena

Recommended Posts

  • 1 month later...
  • 1 month later...
  • 5 weeks later...
  • 3 months later...
  • Administrators

I have some bad news for C++ users. As I told before, initial work for C++ Builder has been started, but my main problem lays somewhere else. I only own licenses for C++ Builder 2007 and 2009. I also hold and active SA for Delphi Enterprise. I contacted Embarcadero to upgrade my SA plan from Delphi to RAD Studio. I was hoping that it be done for a reasonable price, however instead of upgrading my SA plan, Embarcadero is asking me to take a regular upgrade path from Delphi to RAD Studio. This path will cost 2000€.

 

I was speculating that I could pay only the price difference between Delphi SA and RAD Studio SA which is around 250€, but Embarcadero doesn't allow this. Unfortunately, I can't spend 2000€ right now just to get C++ builder. This means all activities on C++ side will be frozen until I find a solution to licensing issue.

 

I will also consider buying an upgrade license for C++ Builder Pro, but I don't know the downsides of using Pro version yet. Does Pro version include full source code + command line compiler?

 

I will post when there are news regarding this.

 

 

Regards,

Farshad Mohajeri

Link to comment
Share on other sites

  • 2 weeks later...

Hi Farshad,

I am new with your great product. I am really very impressed. I used Intraweb before and i have to say, your product is very good. I use RAD studio 2007. I know Delphi, however i feel myself better with C++ Builder. From my experience, making Delphi components C++ compatible is most often very simple. Just rebuild the package with link option: build all C++ files. So I suppose, having C++ 2007 uniGUI components would not be any prfoblem for you. But I am not sure what about your wizzards. If it is not too much work for you, I would really be interested having the chance to test the version for c++ Builder 2007.

Thank you very much for your fantastic work.

Jarek

Link to comment
Share on other sites

  • 2 weeks later...
  • Administrators

Well, I realized that I don't need C++ Builder itself to generate C++ header files and other related files, as Delphi already creates them for me. So I can generate and distribute C++ header files without a need for a C++ license.

 

I already started adding IDE support for C++ Builder.

Link to comment
Share on other sites

  • Administrators

Hi Farshad,

I am new with your great product. I am really very impressed. I used Intraweb before and i have to say, your product is very good. I use RAD studio 2007. I know Delphi, however i feel myself better with C++ Builder. From my experience, making Delphi components C++ compatible is most often very simple. Just rebuild the package with link option: build all C++ files. So I suppose, having C++ 2007 uniGUI components would not be any prfoblem for you. But I am not sure what about your wizzards. If it is not too much work for you, I would really be interested having the chance to test the version for c++ Builder 2007.

Thank you very much for your fantastic work.

Jarek

 

Biggest problem here is IDE support. When you create a new uniGUI project, several files and modules are auto-created with auto-generated source code. All these files are generated for Delphi and Pascal. Now we need to generate C++ equivalent of these files/ source codes.

Link to comment
Share on other sites

Well, I realized that I don't need C++ Builder itself to generate C++ header files and other related files, as Delphi already creates them for me. So I can generate and distribute C++ header files without a need for a C++ license.

 

I already started adding IDE support for C++ Builder.

 

Thank you very much that you find time for C++ users!

Link to comment
Share on other sites

Biggest problem here is IDE support. When you create a new uniGUI project, several files and modules are auto-created with auto-generated source code. All these files are generated for Delphi and Pascal. Now we need to generate C++ equivalent of these files/ source codes.

 

Yes exactly, IDE wizzards are not as easy. Some great information to this topic can be found at http://www.gexperts.org/open-tools-api-faq/. Probably you are aware of it. In the past i also had another useful link. If you needed, I can try too find it.

Jarek

Link to comment
Share on other sites

  • Administrators

After some efforts I could see that IDE integration is only half of the problem. 2nd biggest problem here is the fact that automatically generated hpp headers don't compile! C++ doesn't support named constructors so Delphi constructors with same parameter list cause ambiguity in C++. ExtPascal code contains many of such constructors. Other issue is that C++ doesn't call initializaition code in same order as Delphi.

 

Anyway, I managed to fixed most of these issues and compiled and ran a very basic uniGUI app in C++ with manually generated source code.

 

I think the hardest part is past and hopefully we can expect an alpha C++ Builder port with version 0.89.0 or 0.90.0.

Link to comment
Share on other sites

Hi Farshad,

 

thank you very much for your effort. I am really curious how will your c++ version see.

Could you pls mail me pascal constructor sample and a corresponding hpp constructor that cannot be compiled?

With program initialization you are right. Did you check the possibility of using #pragma startup directive?

A good way of dealing with C++ initialization can be seen when viewing fastMM memory manager code, when used under C++ Builder.

Thanks

Jarek

Link to comment
Share on other sites

  • Administrators

Problem here is both with overloaded constructors and overloaded methods.

 

Below code is valid in Delphi:

  	TMyClass = class(TComponent)
  	public
     	constructor A(X: string);
     	constructor B(X: string);
  	end;

 

In C++ both constructors are identical hence not compilable.

 

class PASCALIMPLEMENTATION TMyClass : public TComponent
{
typedef TComponent inherited;

public:
__fastcall TMyClass(UnicodeString X);
__fastcall TMyClass(UnicodeString X);
public:
/* TComponent.Create */ inline __fastcall virtual TMyClass(TComponent* AOwner) : TComponent(AOwner) { }
/* TComponent.Destroy */ inline __fastcall virtual ~TMyClass(void) { }

};

 

I managed to resolve this by adding dummy parameters to constructors wherever needed.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...