My product is being migrated from Delphi 6 to the newer Delphi XE3. The Delphi 6 compiler used to output list of files that were compiled to an executable:
Borland Delphi Version 14.0
Copyright (c) 1983,2002 Borland Software Corporation
ProjectName.dpr(X)
...
PathToSomeUnit.pas(X)
...
PathToSomeIncludedFile.inc(X)
...
X lines, X.XX seconds, X bytes code, X bytes data.
where "X" mean some numbers
We have an internal software for analyzing dependencies between applications and particular files - units and included files. This software uses the dcc32 console output (like this one above) as its input.
With the new Delphi XE3 we no longer call dcc32 directly, but we use MSBuild. Unfortunately, the console output is not the same as with Delphi 6. When the "Quiet compile" option is disabled, the console output has multiple blank lines in place of the compiled file list.
Embarcadero Delphi for Win32 compiler version 24.0
Copyright (c) 1983,2012 Embarcadero Technologies, Inc.
[multiple blank lines]
X lines, X.X seconds, X bytes code, X bytes data. (TaskId:65)
With the /verbosity:diagnostic parameter it looks as follows
Embarcadero Delphi for Win32 compiler version 24.0 (TaskId:65)
Copyright (c) 1983,2012 Embarcadero Technologies, Inc. (TaskId:65)
(TaskId:65)
(TaskId:65)
(TaskId:65)
(TaskId:65)
(TaskId:65)
(TaskId:65)
...
X lines, X.X seconds, X bytes code, X bytes data. (TaskId:65)
When calling dcc32 directly, there was a similar problem, but it was resolved with the "-B" compiler switch (-B = Build all units).
I tried a similar approach with MSBuild by adding /p:DCC_AdditionalSwitches=-B but still it outputs multiple blank lines.
Here's a possible solution:
Back up your files, etc.
Open a .NET Framework SDK v2.0 command prompt.
Disassemble Borland.Build.Tasks.Delphi.dll (located in your $(BDS)\bin directory):
ildasm Borland.Build.Tasks.Delphi.dll /out=Borland.Build.Tasks.Delphi.il
Edit Borland.Build.Tasks.Delphi.dcctask.xml (created by the previous step) and comment out the Ignore subnode of the OutputParsing node.
Reassemble it:
ilasm Borland.Build.Tasks.Delphi.il /dll
Register a strong name exception for it:
sn -Vr Borland.Build.Tasks.Delphi.dll
If you turned off the quiet mode as described in this answer, building your Delphi projects with MSBuild should now show the detailed compiler output.
Add --depends to DCC32 command line or /p:DCC_OutputDependencies=true
to msbuild, it will output a .d file that can be easily parsed, like the example below:
C:\publico\BUILD\temp\YourDPR.exe: YourDPR.dpr \
C:\blabla blabla\FrameWork\Base\biblioteca\dcus\unit15.dcu \
C:\blabla blabla\FrameWork\Base\biblioteca\dcus\unit13.dcu \
C:\bla bla\bla\LIBD5\Units\unit12.dcu \
C:\blabla blabla\FrameWork\Base\biblioteca\rxlib\units\unit1.dcu \
C:\blabla blabla\FrameWork\Base\biblioteca\rxlib\units\unit13.dcu \
C:\bla bla\bla\LIBD5\Units\unit1.dcu \
C:\bla bla\bla\LIBD5\Units\unit12.dcu \
Ps. You can hide those blank msbuild lines with /p:DCC_Hints=false;
Related
If I compile some code with the following:
#include <string_view>
std::string_view strv{ "Test 1" };
I get this error:
Error C2065 'string_view': undeclared identifier...
I tried some other c++17 code and not of it works.
I get the same errors if the C++ Language Standard is set to std:c++14
The Properties-->C/C++-->Command line contains /std:c++17
but the actual compiler command line that runs does not have this option set.
This is a community version of Visual Studio 2019 version 16.7.1
user dxiv pointed out the problem is in the Property pages Platform pulldown it should be set to ALL Platforms (or set C++17 individually for Win32 and x64 platforms).
I installed kbmMW CG for Delphi DX10.
It was installed successful, but when I opened sample demo from \SQL\VCL\ folder I found the same errors:
- "Class TkbmFMXMemo not found ....."
- "Class TkbmFMXDBGrid not found ....."
- ......
How to correct errors?
CocoAncestor.dcu
history.txt
installation.txt
kbmList.dcu
kbmMemBinaryStreamFormat.dcu
kbmMemCSVStreamFormat.dcu
kbmMemDesD10CG.bpl
kbmMemDesD10CG.dcp
kbmMemResEng.dcu
kbmMemRunD10CG.bpl
kbmMemRunD10CG.dcp
kbmMemSQL.dcu
kbmMemTable.dcu
kbmMemtableDoc.url
kbmMemTypes.dcu
kbmMove.dcu
kbmMW.inc
kbmMW.url
kbmMW.wsdl
kbmMWBinaryStreamFormat.dcu
kbmMWClient.dcu
kbmMWClientDataset.dcu
kbmMWConfig.inc
kbmMWConfig.sam
kbmMWConnectionString.dcu
kbmMWCustomConnectionPool.dcu
kbmMWCustomDataset.dcu
kbmMWCustomMemoryStreamFormatter.dcu
kbmMWCustomQueryService.dcu
kbmMWCustomQueryService.dfm
kbmMWCustomSQLMetaData.dcu
kbmMWCustomTransport.dcu
kbmmwd.chm
kbmMWDateTime.dcu
kbmMWDBX.dcu
kbmMWDebug.dcu
kbmMWDebugMapFile.dcu
kbmMWDebugStackTrace.dcu
kbmMWDebugTdsFile.dcu
kbmMWDesD10CG.bpl
kbmMWDesD10CG.dcp
kbmMWDesD10CG.dpk
kbmMWDesD10CG.dproj
kbmMWExceptions.dcu
kbmMWFireDAC.dcu
kbmMWGlobal.dcu
kbmMWHTTPStdTransStream.dcu
kbmMWHTTPUtils.dcu
kbmMWIBX5.dcu
kbmMWInterbaseMetaData.dcu
kbmMWInventoryClient.dcu
kbmMWInventoryService.dcu
kbmMWInventoryService.dfm
kbmMWISAPIClientTransport.dcu
kbmMWISAPIServerTransport.dcu
kbmMWISAPITransport.dcu
kbmMWJSON.dcu
kbmMWJSONStreamFormat.dcu
kbmMWLocalStats.dcu
kbmMWLocalTransport.dcu
kbmMWLog.dcu
kbmMWLZ.dcu
kbmMWLZHCompression.dcu
kbmMWMD.dcu
kbmMWMime.dcu
kbmMWMSSQLMetaData.dcu
kbmMWMT.dcu
kbmMWNullable.dcu
kbmMWObject.dcu
kbmMWObjectUtils.dcu
kbmMWOracleMetaData.dcu
kbmMWPreConfig.inc
kbmMWProxyService.dcu
kbmMWProxyService.dfm
kbmMWQueryService.dcu
kbmMWQueryService.dfm
kbmMWQueryServiceSetup.dcu
kbmMWQueryServiceSetup.dfm
kbmMWResolvers.dcu
kbmMWRunD10CG.bpl
kbmMWRunD10CG.dcp
kbmMWRunD10CG.dpk
kbmMWRunD10CG.dproj
kbmMWSecurity.dcu
kbmMWSequence.dcu
kbmMWServer.dcu
kbmMWServer.dfm
kbmMWServiceSetup.dcu
kbmMWServiceUtils.dcu
kbmMWServiceWizard.dcu
kbmMWSOAPTransStream.dcu
kbmMWSQLITE.dcu
kbmMWSQLUtils.dcu
kbmMWStats.dcu
kbmMWStreamFormat.dcu
kbmMWSubjectUtils.dcu
kbmMWTCPIPIndyClientTransport.dcu
kbmMWTCPIPIndyServerTransport.dcu
kbmMWTCPIPIndyTransport.dcu
kbmMWXML.dcu
kbmMWXMLDomStreamFormatter.dcu
kbmMWXMLStreamFormat.dcu
kbmMWXMLTransStream.dcu
kbmSQLDBAPI.dcu
kbmSQLElements.dcu
kbmSQLFuncAPI.dcu
kbmSQLMemTableAPI.dcu
kbmSQLParser.dcu
kbmSQLStdFunc.dcu
kbmString.dcu
license.txt
This is kbmMW Folder.
We have only 4 bpl-files.
Redownload latest kbmMW CodeGear Edition for D10 Seattle. It will contain updated demos, and a couple of missing files from the original installation, and will be based on the latest kbmMW/kbmMemTable version.
I'm trying to install GLScene into RAD Studio 2010, with the aim of using it from a mostly C++ project. I downloaded the latest snapshot (5991, November 2011) and have been trying to compile and install the two main packages: GLScene_DesignTime and GLScene_RunTime. I haven't even tried some of the other libraries (CUDA, etc), I just want to get the base packages running.
I've encountered a number of problems, one of which I can't solve, and I'm seeking the help of anyone on SO who has successfully installed GLScene, or might know how to solve these Delphi compiler errors.
First problem (solved?)
When compiling, a number of files gave the following error:
[DCC Warning] GLSelection.pas(297): W1025 Unsupported language feature: 'abstract class method'
This is caused by a method declaration something like:
TGLBaseSelectTechnique = class
public
class function IsSupported: Boolean; virtual; abstract;
It seems that a virtual abstract class method is not supported in Delphi 2010, and I have solved it by removing 'abstract' and providing a dummy implementation, e.g. just returning false.
The second problem (not solved) - Delphi compiler fatal errors
I am now encountering two more serious errors. When compiling, the compiler fails like so:
[DCC Fatal Error] Exception EAccessViolation: Access violation at address 05AE8ED9 in module 'dcc140.dll'. Read of address 00000003
[DCC Error] Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
It doesn't say what file caused this, but I think it's caused by Spline.pas. Occasionally and not as often, I get this:
[DCC Fatal Error] Spline.pas(1): F2084 Internal Error: AV062D8ED9-R00000003-0
This indicates Spline.pas, and I think the first error is probably related to the file too, because after getting the first one if I then clean the project, cleaning will fail saying it could not delete Spline.hpp. (I have to close and reopen the IDE.) Spline.hpp just contains the following:
// CodeGear C++Builder
// Copyright (c) 1995, 2009 by Embarcadero Technologies, Inc.
// All rights reserved
// (DO NOT EDIT: machine generated header) 'Spline.pas' rev: 21.00
#ifndef SplineHPP
#define SplineHPP
#pragma delphiheader begin
#pragma option push
#pragma option -w- // All warnings off
#pragma option -Vx // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp> // Pascal unit
#include <Sysinit.hpp> // Pascal unit
and there it stops. It looks to me like it failed when trying to generate the HPP file.
I always get one of these two failures. The second is the only one I can tie to a specific file; the first fails halfway through the project, but I can't see where it got up to when it failed. I am compiling from inside the IDE.
I've looked in Spline.pas, and it seems pretty basic code - I can't see anything unusual at all. You can find it here, and apparently the file hasn't been touched for seven years... so I think it should compile :)
If I change the project settings so it does not generate headers, it compiles fine. (Generating just obj files, and any other of the settings that does not include "headers", all work fine.) But this isn't a good workaround for me - after all, I need to use it from C++ Builder, so my normal setting would be "Generate all C++ Builder files". At a bare minimum, I need HPP and OBJ files.
Has anyone here used GLScene in a recent version of C++ Builder? Have you encountered similar problems? Any idea how to solve this one?
I am using:
RAD Studio 2010 (fully patched and up to date; DDevExtensions and IDEFixPack installed.)
The November 2011 snapshot; I tried the March 2011 snapshot too, and got the same problems. Link to snapshots here.
The Delphi 2010 packages modified only by changing the linker output to generate C++ Builder files; and also the BCB 6 packages. Both give the same errors.
Edit: GLScene now has compatibility with RAD Studio XE3 (including C++ Builder.)
Now there is full compatibility of GLScene with Embarcadero RAD Studio
C++Builder XE3 as in design and runtime mode.
You can download it from http://yadi.sk/d/o1QGI2KA10MK1 (95Mb)
-- from Pal Wassail's post on the Embarcadero forum thread.
{quote:title=David M wrote:}{quote}
Hi,
I'm trying to install GLScene into RAD Studio...
David
And here is more simple Test for EMB developers of Delphi XE3 header generator -
1.Create a VCL Form Application
2.Add in Unit1.pas interface section
type
TVector3f = array[0..2] of single;
TVector4f = array[0..3] of single;
function VectorAdd(const v : TVector3f; const f : Single) : TVector3f; overload;
function VectorAdd(const v : TVector4f; const f : Single) : TVector4f; overload;
3.Add in implementation section
function VectorAdd(const v : TVector3f; const f : Single) : TVector3f;
begin
Result[0]:=v[0]+f;
Result[1]:=v[1]+f;
Result[2]:=v[2]+f;
end;
function VectorAdd(const v : TVector4f; const f : Single) : TVector4f;
begin
Result[0]:=v[0]+f;
Result[1]:=v[1]+f;
Result[2]:=v[2]+f;
Result[3]:=v[3]+f;
end;
Set Delphi Compiler option “Generate C++ .objs, headers, namespaces, export”
Build the project
Then Delphi XE3 compiler generates wrong header file Unit1.hpp with lines:
extern PACKAGE TVector3f __fastcall VectorAdd
(float const v, const float f)/ overload */;
extern PACKAGE TVector4f __fastcall VectorAdd
(float const v, const float f)/ overload */;
If now you are trying to use this header file Unit1.hpp in my.cbproj you get fatal error:
“E2238 Multiple declarations in …”
Yes, if you change vector array types to records:
TVector3f = record
case boolean of
true : (Coord: array[0..2] of single);
false : (X,Y,Z: single);
end;
then the problem could be solved, because in this case Delphi compiler generates
extern PACKAGE Vectortypes::TVector3f __fastcall VectorAdd
(const Vectortypes::TVector3f &v, const float f)/* overload */;
extern PACKAGE Vectortypes::TVector4f __fastcall VectorAdd
(const Vectortypes::TVector4f &v, const float f)/* overload */;
and you could build your C++Builder VCL application without "Multiple declaration " error. It was done for old GLScene version in 2007, but now you need to rewrite some part of code in new library, starting from VectorGeometry.pas module.
There are second way to fix such automatic header's errors - improvement of Delphi compiler in Generating C/C++ headers, namespaces and packages option. But it's in hands of EMB developers.
Here's how I do it:
Download and extract this ZIP file (directly into the root folder of GLScene, allowing it to overwrite as necessary)
Load up the appropriate RAD Studio version (2007 to XE2) and open the file *GLScene_Group.groupproj* (where = your RAD Studio version)
Build/Install each Package in group order
I have carefully assembled these fixed packages to ensure they all install and function properly from 2007 to XE2. Some packages (at the bottom of each group) require additional dependencies to function (such as the Python package) so be mindful of these.
I have tested and confirmed that these work on RAD Studio 2007 to XE2 only.
Don't forget to add the \Source folder (and all subfolders) to the Search Paths (either for the IDE itself or an individual Project, as you desire) otherwise the projects using GLScene components will fail to compile complaining of missing units.
Enjoy!
Not for RAD Studio 2009 but for old GLScene installation in BCB6 she was running well. But current version after installation in RAD Studio XE/XE2/XE3 does not work at all. It seems that the main problem is hidden in overload mechanism of procedures in Vectorgeometry.pas, so Delphi compiler (with using an option for Output of all C++ files and packages) creates coincident strings in Vectorgeometry.hpp and others. Thus you have visual components in C++Builder panel, but your application fails with errors during building. It must be repaired in .pas files by GLScene developers.
When you trying to build an application with GLScene under C++Builder XE3 you will get over 50 BCC32 errors in glcrossplatform.hpp, vectorgeometry.hpp and so on. There is a way to repair the library on your own discretion. Make a new copy of GLScene directory. In GLCrossPlatform.pas rename the procedure RGB to GLRGB (it's work!). Then in VectorGeometry.pas and in many others files of source codes change all overload procedures with slightly different parameter names, so you should't encounter coincident procedures in .hpp files after Delphi option output C++ (last option that includes packages). Then rebuild all GLScene packages. At the end of the process I hope it should work for C++Builder XE3.
I have exact he same errors.
#The second problem
Go to "spline.pas" and change
TCubicSplineMatrix = array of array[0..3] of Single;
to
TCubicSplineMatrixEx = array[0..3] of Single;
TCubicSplineMatrix = array of TCubicSplineMatrixEx;
Now "Rad Studio 2009" can compile and install GLScene for C++Builder. I can start a new C++Builder VCL Application and select GLScene components from the toolbox and drop in my VCL form.
I think, this is the solution for your basic problem, but unfortunately I can not compile my VCL project successful. I get over 50 BCC32 errors in glcrossplatform.hpp and vectorgeometry.hpp. If anyone can help here, that would be great.
#Your First problem
I get this warnings too, but I have nothing changed for it. Just ignore it?!
type
TDelphiSignature=record
Signature:array [0..3] of LongWord;
Version:string;
end;
const
DelphiSignature:array [0..2] of TDelphiSignature=(
(Signature:($384F3D26,$B83782C2,$034224F3,$833A9B17);Version:'Delphi Entreprise'),
(Signature:($235D7823,$19F3A5B6,$0240F343,$C711D126);Version:'Delphi Perso'),
(Signature:($98DF8CA2,$793A3C7B,$093F7126,$17252A0F);Version:'Delphi Pro')
// ...
);
The above are version signatures found in Delphi compiled EXE files in the DVCLAL resource. I'm looking for other signatures, such as ones for Architect editions, and more importantly, for version numbers (6, 7, 8 ...) that are visible in the resource data.
The signature generated by RAD Studio 2010 Architect is the same one you have for Enterprise. The DVCLAL resource only tells you the particular Edition of Delphi/BCB used. Individual Delphi/BCB compiler version numbers are not stored or encoded anywhere in the compiled executable.
Update: I found this to be some useful information about the inner working of the DVCLAL resource:
https://assarbad.net/stuff/miscprogs.zip
(in the \MiscProgs\DVCAL\JeremyRES.html file)
https://web.archive.org/web/20190107185701/https://wiert.files.wordpress.com/2020/11/miscprogs.zip
I have had Delphi 2007 for a while. I tried the Delphi 2009 trial. Then I un-installed the trial. Now I get this in a dbExpress Delphi 2007 application:
---------------------------
Debugger Exception Notification
---------------------------
Project ABC.exe raised exception class TDBXError with message
'Unable to load dbxora.dll (ErrorCode 126). It may be missing
from the system path.'.
---------------------------
Break Continue Help
---------------------------
I do not have dbxora.dll anywhere on my pc; I have dbxora30.dll, instead. Looking at another development machine (which has never had Delphi 2009 on it), I see dbxora30.dll too. FWIW, that file is here:
C:\Program Files\CodeGear\RAD Studio\5.0\bin\dbxora30.dll
And my path does include this location.
So it looks like Delphi 2009 introduced a new "dbxora.dll" which replaced "dbxora30.dll"... and when I un-installed Delphi 2009, it failed to point my system back to the original "dbxora30.dll". But now how do I use dbxora30 again?
Any suggestions?
I fixed the problem on my machine by editing this file:
C:\Users\Public\Documents\RAD Studio\dbExpress\dbxdrivers.ini
Under the section labeled [Oracle], I changed the "LibraryName" parameter from "dbxora.dll" to "dbxora30.dll".
I hope this helps someone else.
I had pretty much the same problem, though I installed the full Delphi 2009 along with the existing Delphi 2007 and found that it broke my previous exe files. I uninstalled Delpi 2009 but had to fix it by editing the same file (though it was in a different directory on my machine: C:\Documents and Settings\All Users\Documents\RAD Studio\dbExpress\dbxdrivers.ini). However, there were more lines than just the one that is mentioned above. Luckily, I had a backup of the ini file from before the Delphi 2009 installation. Here are the two sections in case anybody needs help with this:
[Oracle] - FROM DELPHI 2007
DriverUnit=DBXDynalink
DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl
DriverPackage=DBXCommonDriver110.bpl
DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f
GetDriverFunc=getSQLDriverORACLE
LibraryName=dbxora30.dll
VendorLib=oci.dll
DataBase=Database Name
User_Name=user
Password=password
BlobSize=-1
ErrorResourceFile=
LocaleCode=0000
Oracle TransIsolation=ReadCommited
RowsetSize=20
OS Authentication=False
Multiple Transaction=False
Trim Char=False
Decimal Separator=.
MetaDataPackageLoader=TDBXOracleMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl
MetaDataAssemblyLoader=Borland.Data.TDBXOracleMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
.
[Oracle] - FROM DELPHI 2009
DriverUnit=DBXOracle
DriverPackageLoader=TDBXDynalinkDriverLoader,DBXCommonDriver120.bpl
DriverPackage=DBXCommonDriver110.bpl
DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=12.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f
GetDriverFunc=getSQLDriverORACLE
LibraryName=dbxora.dll
VendorLib=oci.dll
DataBase=Database Name
User_Name=user
Password=password
BlobSize=-1
ErrorResourceFile=
LocaleCode=0000
Oracle TransIsolation=ReadCommited
RowsetSize=20
OS Authentication=False
Multiple Transaction=False
Trim Char=False
Decimal Separator=.
MetaDataPackageLoader=TDBXOracleMetaDataCommandFactory,DbxOracleDriver120.bpl
MetaDataAssemblyLoader=Borland.Data.TDBXOracleMetaDataCommandFactory,Borland.Data.DbxOracleDriver,Version=12.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b