I would like to build and install the TeeChartPro source code in Delphi 10 Seattle. I have TeeChartSourceCode Build 2014.12.140923.
When I execute TeeRecompile there is no IDE's.
What can I do? It seams that my TeeRecompiler only looks for delphi up to XE7.
Is there a possibility to get an updated TeeRecompile?
Thanks,
Jens
When v2014.12 was published RAD Studio 10 Seattle still didn't exist.
TeeChart v2015.16 was the first version to support RAD Studio 10 Seattle.
See the Release Notes here.
Look at .inc file (TeeDefs.inc may be) for version depended conditional defines.
For minimum changings, add at first lines line like that:
{$IFDEF VER300} {$DEFINE VER280} {$ELSE} {$ENDIF}
it will define VER280 (from Delphi XE7) under Delphi 10 Seattle (wich implictly defines VER300)
Related
I am upgrading a project from Delphi XE3 to Delphi Rio 10.3.3. The project contains a number of fixes to the VCL and RTL units, made by copying units from the Delphi install into a path inside the project and applying modifications. This still appears to work so long as the correct compiler options are specified in the unit, but this does not seem to work for System.Classes.pas, getting the infamous error:
F2051 Unit AAA was compiled with a different version of BBB
Has anybody been able to modify System.Classes.pas for Delphi Rio, and if so which compiler switches did you use? I note from this answer: https://stackoverflow.com/a/24145450/12683559 that this was broken in XE6 but worked again in XE7.
I have included QuickPDF0724 unit in uses in one of my pas file. I have give the path of this unit in Tools --> Options. But I am getting the error: "F2063 Could not compile used unit 'QuickPDF0724.pas'"
In the path mentioned of that unit, only dcu file is there, no pas file.
Same code is working fine in Delphi 7 but not in Delphi XE4. What could be the reason?
In the path mentioned of that unit, only dcu file is there, no pas file.
DCUs are Delphi version dependent.
So your DCU made in Delphi 7 cannot be read by Delphi XE4 and by any other Delphi version but Delphi 7 (with the same set of updates installed - those updates may change Delphi RTL and make dependencies in those DCUs fail).
That means you either need to take QuickPDF0724.pas and compile it with your version of Delphi XE4, or you need to find someone who would do it for you and then send you the resulting DCU they made (wither possible - made exactly for the same Build of Delphi XE4 (Build number is changed by installing update packs) as you have).
My Delphi 7 application was using QuickPDF0724 and same I was trying in Delphi XE4. QuickPDF0724 has version number 7.24. This was not compatible with Delphi XE4.
So, I downloaded latest version of QuickPDF i,e DebenuPDFLibrary1011 having version number 10.11 which is compatible with Delphi XE4.
I did few changes in the code like:
Changed unit name in uses from QuickPDF0724 to DebenuPDFLibrary1011.
Changed declaration in the code like objQuickPDF : TDebenuPDFLibrary1011 from objQuickPDF : TQuickPDF0724
Changed constructor: objQuickPDF := TDebenuPDFLibrary1011.Create instead of objQuickPDF := TQuickPDF0724.Create
Rest was fine...
I am using an ActiveX component in my projects. I can add this component to Visual Studio 2010, 2008, Delphi XE2, Visual Basic 6.0, but I cannot import this into Delphi versions 5, 6 or 7.
This is the activex file in my ftp server: Active X File
OK, I was brave enough to download and register this OCX and try to replicate what you did. And yes I found the same behaviour as your reported.
So, I looked at the imported type library unit in XE2. Remember that in XE2 a component appears on the palette. At the bottom of the unit is this code:
procedure Register;
begin
RegisterComponents(dtlOcxPage, [TTAK_Control]);
end;
This code registers the component in the palette and it is missing when the OCX is imported in Delphi 6, the only old Delphi I have to hand. Indeed the entire TTAK_Control component is missing from the import unit. Sometimes the import process fails.
So I simply took the imported type library file from XE2 and copied it over the top of the equivalent unit in D6. That's the unit named TAK_ControlBoard_TLB. When I compiled in D6 there was a compiler error because UIntPtr was not recognised. Replace that with Cardinal in D6. At that point the compilation succeeds and the component appears on the palette.
Now, when I attempt to add it to a form an OLE error is produced, but I can't really help with that since I know nothing about the component. Note that this error occurs in both XE2 and D6.
I have a unit I wrote in Delphi 7 some time ago, and have just had the fun (pain) of converting to Delphi XE (Unicode).
The Unit works fine after some trouble, I am now trying to make this unit compatible with different Delphi Versions should I ever need to switch IDE back to Delphi 7 whilst updating some other code.
I only have Delphi 7 and Delphi XE, but from what I gather code written in Delphi 1 to Delphi 2007 will compile, but code from Delphi 2009 and above will be Unicode.
...Anyway, in the Unit I am separating the non-unicode and unicode like so:
{$IFDEF VER150} //Delphi 7
// code
{$ELSE IFDEF VER220} //Delphi XE
// code
{$ENDIF}
How do I modify the compiler directive so the rules apply to multi versions? For example something like:
{$IFDEF VER80, //D1
VER90, //D2
VER100, //D3
VER120, //D4
VER130, //D5
VER140, //D6
VER150, //D7}
This would then cover all Delphi versions should I distribute the source or .dcu unit.
Thanks.
I wonder if the simplest approach in this instance is to switch behaviour on the UNICODE conditional. This conditional is defined if and only if you are using a Unicode version of Delphi, i.e. in Delphi 2009 and later. The big advantage of this is that it is future proof—you don't need to update your code every time a new Delphi is released. What's more, the conditional switch will be far more readable since it will clearly express the intent.
The Delphi documentation has an excellent topic listing all the pre-defined conditionals. The full list of version conditionals is also linked from there.
Your best bet is actually to look at one of the many JEDI projects, http://sourceforge.net/projects/jedi-apilib/ for example and look at how they do it. They have common include files that contain exactly the details you are interested in. JVCL is another good choice ...
I'm trying to install Graphics32 to my freshly installed Embarcadero RAD Studio XE.
I just open GR32_DSGN_RS2010.bpl and I try to compile it.
I get this error :
[DCC Erreur] GR32.inc(172): E2029 Déclaration attendu(e) mais constante chaîne trouvé(e)
Which means
[DCC Erreur] GR32.inc(172): E2029 Declaration expected but constant found instead
It's here:
{$IFNDEF COMPILER6}
{$IFNDEF FPC}
//////////////////////////////////////////////////////////////////////
' Graphics32 may only be installed with Delphi/BCB 6 (or higher) '
' or Free Pascal / Lazarus '
//////////////////////////////////////////////////////////////////////
{$ENDIF}
{$ENDIF}
So it seems like there's a "define" problem.
Any idea where I should look / what I should modify to make it work?
I think the current 1.9 release doesn't correctly support XE. Ther error you see is probably because the .INC file fails to detect the new compiler version.
I found this upload on sourceforge, which has 'compatibility fixes' for Graphics32 on XE.
I have got adapted GR32 for Delphi XE. There is compatibility changes.
As an alternative, you could get the latest source snapshot directly from the project SVN server. It seems that version has XE supported included.
No warranty expressed or implied, though. :-)
Sounds like you have an old version of graphics32 which doesn't have up to date conditional definitions for recent Delphi versions in the GR32.inc include file.
Simplest solution is to download the latest graphics32 which has been updated for XE.
It seems you have to get the latest development version for XE compatibility.
Much as I haven't installed Graphics32 into mine, you can just comment out all those lines :) Take it from there.