C++Builder 2009 Quality Central Reported Bug Fixes

By: Chris Pattinson

Abstract: List of 172 Quality Central reports fixed in C++Builder 2009 since RAD Studio 2007, Update 3

1029 fixes total were completed for C++Builder 2009.

The 172 listed here are fixes to reports made by customers into the public bug tracking system, Quality Central , since the release of RAD Studio 200 Update 3 as part of the drive to improve the RAD Studio product quality.

A dynamic link to this list can be found here:

http://qc.codegear.com/wc/qcmain.aspx?search=1&stat=30&res=10&proj=15&rib=12

The reports are sorted by Area alphabetically.

These older publicly reported bugs fixed in C++Builder 2009 include:

  • 71 Compiler
  • 42 Documentation
  • 29 IDE

From the set of 1029 fixes total, here are a few areas and number of bugs fixed:

  • 320 Compiler
  • 78 Documentation
  • 228 IDE
  • 13 Linker
  • 58 RTL
  • 37 VCL

QC #:

Date Reported:

Area:

45077

4/26/2007

Documentation

Description:

Steps:

[QC Short Description]
F1 Help in object inspector shows wrong information.

[QC Description]
When using F1 help in object inspector wrong help page is displayed. See Steps to Reproduce.
QC Entry 45077

1) Create new VCL forms application. 2) Select Form1.GlassFrame.Enabled in Object Inspector. 3) Press F1. You will see help for TForm.Enabled instead of TGlassFrame.Enabled. 4) Select Form1.GlassFrame.Left in Object Inspector. 5) Press F1. You will see help for TCustomForm.Left instead of TGlassFrame.Left.

QC #:

Date Reported:

Area:

46227

5/19/2007

Documentation

Description:

Steps:

[QC Short Description]
No index entry for "_wargv"

[QC Description]
Try to type "_wargv" into "Index" no entry for it
QC Entry 46227


[SCHEMAPROBLEM]

Try to type "_wargv" into "Index" no entry for it. The page: ms-help://borland.bds5/devwin32/_argv_xml.html exists, but not entry for its second keyword, and not linked against it.

QC #:

Date Reported:

Area:

46226

5/19/2007

Documentation

Description:

Steps:

[QC Short Description]
Request: Need help for some referenced tool

[QC Description]
In some cases documentation contain reference for a tool (like GREP), but not contain any help for its use.
QC Entry 46226

[BCB6HELP] - Help contents are available in BCB6

Start Documentation E.g. see ms-help://borland.bds5/devwin32/errundefsym_xml.html The documentation suggest to use another inboxed Tool: GREP But, no documentation for help (e.g. with wildcards), while the old IDE's help was contain this like Borland Pascal for Windows 7.0: GREP-like wildcards The GREP-like wildcards are ^, $, ., *, +, [ ], [^], and [-] ^ A circumflex at the start of the string matches the start of a line. $ A dollar sign at the end of the expression matches the end of a line. . A period matches any character. * An asterisk after a character matches any number of occurrences (including zero) of that character. For example, bo* matches bot, b, boo, and also be. + A plus sign after a character matches one or more occurrences (but not zero occurrences) of that character. For example, bo+ matches bot and boo, but not b or be. [ ] Characters in brackets match any one character that appears in the brackets, but no others. For example [bot] matches b, o, or t. [^] A circumflex at the start of the string in brackets means NOT. Hence, [^bot] matches any characters except b, o, or t. [-] A hyphen within the brackets signifies a range of characters. For example, [b-o] matches any character from b through o. \ A backslash before a wildcard character tells Borland Pascal to treat that character literally, not as a wildcard. For example, \^ matches ^ and does not look for the start of a line.

QC #:

Date Reported:

Area:

46179

5/18/2007

Documentation

Description:

Steps:

[QC Short Description]
'Mitglied' is wrong translation for 'member'

[QC Description]
The german documentations uses the term 'Mitglied' for 'member'. This literal translation is not common. Usually, the term 'Element' for 'member' is used.

QC Entry 46179

[cbuergi 2007-08-13]
I agree. There are still over 500 occurences with 'Namensbereich' in the documentation.

[cbuergi 2007-09-19]
There are still a few occurences.

QC #:

Date Reported:

Area:

29381

5/23/2006

Documentation

Description:

Steps:

[QC Short Description]
TProviderOption::poUseQuoteChar missing

[QC Description]
The provider option "poUseQuoteChar" is not documented
QC Entry 29381

QC #:

Date Reported:

Area:

46182

5/18/2007

Documentation

Description:

Steps:

[QC Short Description]
Wrong text for 'TControl.Visible Eigenschaft'

[QC Description]
The documentation for 'TControl.Visible Eigenschaft' says 'Mit der Eigenschaft Visible k nnen Sie die G ltigkeit des Steuerelements zur Laufzeit steuern.'

This is wrong. It should be 'Mit der Eigenschaft Visible k nnen Sie die Sichtbarkeit des Steuerelements zur Laufzeit steuern.'
QC Entry 46182

QC #:

Date Reported:

Area:

46631

5/26/2007

Documentation

Description:

Steps:

[QC Short Description]
Error for Bcc32Error by F1

[QC Description]
Try cancel a build and press F1 for error occurred in Messages
QC Entry 46631

Start Ide Open a project Press Cancel during build This result an error in messages: [BCC32 Error] "bcc32" exited with code 1. Click on it and press F1 This result an error: --------------------------- Error --------------------------- 'MSB6006' is not a valid integer value. --------------------------- OK Details >> --------------------------- [2000D8DD]{rtl100.bpl } SysUtils.ConvertErrorFmt (Line 3246, "sys\sysutils.pas" + 1) + $10 [2000ED54]{rtl100.bpl } SysUtils.StrToInt (Line 5017, "sys\sysutils.pas" + 2) + $1A [20A93201]{coreide100.bpl} IDEServices.TToolCompilerMessageLine.ShowHelp (Line 1422, "IDEServices.pas" + 6) + $24 [20A3FD26]{coreide100.bpl} MsgViewForm.TMessageViewForm.WMHelp (Line 919, "MsgViewForm.pas" + 6) + $2 [2013B20B]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6 [20158AA3]{vcl100.bpl } Forms.TCustomForm.WndProc (Line 3512, "Forms.pas" + 136) + $5 [2013AE98]{vcl100.bpl } Controls.TControl.Perform (Line 5021, "Controls.pas" + 5) + $C [2013BF59]{vcl100.bpl } Controls.TControl.CMMouseEnter (Line 5542, "Controls.pas" + 2) + $8 [2013B20B]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6 [2013F38A]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7304, "Controls.pas" + 111) + $6 [20D69752]{designide100.bpl} DeskUtil.SetFocusHook (Line 435, "DeskUtil.pas" + 4) + $C [2013F38A]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7304, "Controls.pas" + 111) + $6 [20141305]{vcl100.bpl } Controls.TWinControl.CMChildKey (Line 8371, "Controls.pas" + 1) ...

QC #:

Date Reported:

Area:

24028

1/23/2006

Documentation

Description:

Steps:

[QC Short Description]
Lack of Help topics

[QC Description]
In a Help of BCB2006, there is lack of Help topics.

Types::TRect
Types::TPoint
Types::TSmallPoint
QC Entry 24028

QC #:

Date Reported:

Area:

46669

5/28/2007

Documentation

Description:

Steps:

[QC Short Description]
dUnit help code is in Delphi

[QC Description]
On page:

ms-help://borland.bds5/devcommon/dunitov_xml.html

the examples are all in Delphi. Should be some C++ examples
QC Entry 46669

Go to page ms-help://borland.bds5/devcommon/dunitov_xml.html

QC #:

Date Reported:

Area:

46228

5/19/2007

Documentation

Description:

Steps:

Indexes are missing for operators.

For example, following indexes need to be created and linked to the topic, "relational operators" (ms-help://borland.bds5/devwin32/relational_ops_xml.html).

< operator
> operator
<= operator
>= operator

check out BCB6 help index to correct indexes.

[QC Description]
operators like <, <=, ||, +, ++, etc. are linked for documentation of JScript or VBScript only
QC Entry 46228

[SCHEMAPROBLEM]

Start documentation: try to type < operator, <= operator, ++ operator, || etc. These are linked for doucomentation about VBScript or JScript, instead of documentation about C++

QC #:

Date Reported:

Area:

39099

1/21/2007

Documentation

Description:

Steps:

[QC Short Description]
Documentation 'Search' function returns VC++ results.

[QC Description]
When using the Search feature in the documentation, VC++ results are returned.

For example, searching for the C++ hdrstop pragma returns 34 results from Local Help. On the first screen of results, 6 of the 7 entries are for VC++ and only one is for BDS2006. The VC++ hdrstop is returned above the BDS2006 hdrstop entry .
QC Entry 39099

When using the Search feature in the documentation, VC++ results are returned. 1) Open the documentation explorer 2) Click on the 'Search' tool button 3) In the search edit, enter 'hdrstop' 4) Press the 'Search' button Expected: only results for the tool I'm using will be returned. Actual: Of the 34 'Local Help' enteries returned in this example, the majority appear to be for VC++. The VC++ match for 'hdrstop' tops the list, appearing above the BDS2006 entry.

QC #:

Date Reported:

Area:

39419

1/26/2007

Documentation

Description:

Steps:

[QC Short Description]
Missing Index-entries on 64 bit conversions

[QC Description]
try to find _i64toa
QC Entry 39419

Try to find keywords of _i64toa _ui64toa _i64tow _ui64tow They are missing from index, while ms-help://borland.bds5/bds5win32guide/html/_i64toa.htm ms-help://borland.bds5/bds5win32guide/html/_ui64toa.htm are exist in the documentation

QC #:

Date Reported:

Area:

39420

1/26/2007

Documentation

Description:

Steps:

[QC Short Description]
Misstyped entry for _ui64tow

[QC Description]
see the page addressed to _ui64toa

The title is misstyped
QC Entry 39420

See the page: ms-help://borland.bds5/bds5win32guide/html/_ui64toa.htm The title contains _i64toa, _ui64tow instead _ui64toa, _ui64tow

QC #:

Date Reported:

Area:

55463

11/30/2007

Documentation

Description:

Steps:

[QC Short Description]
BCB Help Totally Absent for Stuff Like AnsiString

[QC Description]
There is no help for BCB class AnsiString (at all) nor its member functions
QC Entry 55463

Click on any use of C++ Builder's class AnsiString or any of its member functions/properties and you get referenced to RAD Studio VCL Reference for SysUtils Function. Eg. Define AnsiString foo; and then use foo.UpperCase(). Click on UpperCase and press F1 to get SysUtils.Uppercase Function. Poking around you really cant tell that there is any BCB documentation at all for BCB 2007 ...

QC #:

Date Reported:

Area:

39421

1/26/2007

Documentation

Description:

Steps:

[QC Short Description]
Missed entries on _wtoi, _wtoi64

[QC Description]
_wtoi and _wtoi64 are missed from index entries, while the page contain it is existing.
QC Entry 39421

The page of ms-help://borland.bds5/bds5win32guide/html/atoi.htm contains information about atoi, _wtoi is existing. But typeing _wtoi into Index's Look for the Index no contain this item typeing atoi is drop the link to a page of ms-help://borland.bds5/dnk_cpp_help/stdlib/atoi.html string to 64 bit _atoti64 _wtoti64 also missed while ms-help://borland.bds5/bds5win32guide/html/_atoi64.htm is covers them

QC #:

Date Reported:

Area:

22812

12/26/2005

Documentation

Description:

Steps:

[QC Short Description]
TDUMP is not documented

[QC Description]
There is no documentation for TDUMP.

In searching the docs for TDUMP info, I found one reference (ms-help://borland.bds4/bds4win32devguide/html/cwgTroubleshootingCustomComponents.htm) which tells the user to do:

tdump -ebpl mypack.bpl mypack.dmp

Unfortunately, tdump has no -ebpl option.
QC Entry 22812

1) Go to ms-help://borland.bds4/bds4win32devguide/html/cwgTroubleshootingCustomComponents.htm 2) Execute the suggested TDUMP command.

QC #:

Date Reported:

Area:

4194

4/23/2003

Documentation

Description:

Steps:

[QC Short Description]
Documentation of protected member functions

[QC Description]
The VCL documentation for a component needs to list and document protected member functions which are part of that component as well as protected member functions derived from base class components.

Protected member functions, and their explanation, are just as needed by component developers as public member functions and their explanation are needed by component users.
QC Entry 4194

QC #:

Date Reported:

Area:

46688

5/28/2007

Documentation\Online Help

Description:

Steps:

[QC Short Description]
Apply Option Set help

[QC Description]
On page:

ms-help://borland.bds5/devcommon/applyoptionset_xml.html

you describe the choices from the Apply Options Set dialog, but I'm
not sure what an options set is or why I'd want to apply one. This
page needs a link to an overview of Options Sets and what one can do
with them.

QC Entry 46688

Go to page: ms-help://borland.bds5/devcommon/applyoptionset_xml.html

QC #:

Date Reported:

Area:

2692

5/23/2007

Documentation\Online Help

Description:

Steps:

The help topic "Using CodeGuard From The Command Line" contains dummy content and should not be included in help.

Note the "do_not_publish" in its URL: ms-help://borland.bds5/devwin32/_do_not_publish_usingcodeguardcli_xml.html

QC #:

Date Reported:

Area:

29146

5/16/2006

Documentation\Online Help

Description:

Steps:

[QC Short Description]
Typo in "Declared Constants" online help page.

[QC Description]
On help page:
ms-help://borland.bds4/bds4ref/html/DeclaredConstants.htm#TrueConstants

In section : "Types for integer constants:"
Range of constant(hexadecimal) Range of constant(decimal) Type

Int64 is shown as : "4294967296..2^631"

"2^631" should be "2^63-1"



QC Entry 29146

Go to help page: ms-help://borland.bds4/bds4ref/html/DeclaredConstants.htm#TrueConstants Go to section "Types for integer constants" Observe that Int64 "Range of Constant" is incorrect (2^631)

QC #:

Date Reported:

Area:

46261

5/20/2007

Documentation\Online Help

Description:

Steps:

[QC Short Description]
Together Diagram Appearance Options Help

[QC Description]
On page

ms-help://borland.bds5/devcommon/optionsdiagramappearance_xml.html

the help for 'Diagram detail level' doesn't explain what the various
choices do.

To correct myself, the information is there, it just doesn't appear to
be related to 'Diagram detail level' because it is listed at the same
indentation level in seperate cells. IMO, the information should be
moved into the 'Diagram detail level' cell.
QC Entry 46261

N/A

QC #:

Date Reported:

Area:

40023

2/6/2007

Documentation\Online Help

Description:

Steps:

[QC Short Description]
'int' help in wrong location

[QC Description]
Currently the C++ int help topic is located in 'Developer Stuido 2006 Concepts'. I feel that since it is language specific it should be in 'Developer Studio 2006 C++Builder'.
QC Entry 40023

N/A

QC #:

Date Reported:

Area:

40025

2/6/2007

Documentation\Online Help

Description:

Steps:

[QC Short Description]
'bool, false, true' help in wrong location

[QC Description]
Currently the C++ 'bool, false, true' help topic is located in 'Developer Stuido 2006 Concepts'. I feel that since it is language specific it should be in 'Developer Studio 2006 C++Builder'.
QC Entry 40025

N/A

QC #:

Date Reported:

Area:

29108

5/15/2006

Documentation\Online Help

Description:

Steps:

[QC Short Description]
Extended Types formatting for printf has incorrect prefix character.

[QC Description]
ms-help://borland.bds4/bds4win32guide/html/extendedtypesformattedio.htm

Firstly, the font used makes it difficult to determine if "%I32" uses uppercase 'i' or lowercase 'L'.

However, Copy-and-paste reveals that they are actually lowercase 'L' characters. Which is unfortunate, because they should be upper-case 'i' characters!





QC Entry 29108

View help page: ms-help://borland.bds4/bds4win32guide/html/extendedtypesformattedio.htm a: Observe diffculty of distinguishing 'I' and 'l' b: Copy and paste "%l32d" from page into IDE editor, and use it in a printf format string. Note that it doesn't work as expected. c: Replace lowercase 'L' with uppercase 'i' in "%l32d" format string. d: Observe that format string now works as expected.

QC #:

Date Reported:

Area:

40660

2/15/2007

Documentation\Online Help

Description:

Steps:

No topic found for AnsiString.

[note] lots of complaints in the newsgroup. Make sure to fix it in highlander.

1) Create a C++ project
2) Type 'AnsiString' into the editor
3) Press the F1 key with your cursor over 'AnsiString'

Error
No Help found for AnsiString

should be linking to
ms-help://borland.bds5/delphivclwin32/System_AnsiString.html

QC #:

Date Reported:

Area:

23270

1/9/2006

Documentation\Online Help

Description:

Steps:

[QC Short Description]
Codeguard option page from BCB5/6

[QC Description]
The following help URL describes Codeguard compiler options:

ms-help://borland.bds4/bds4ref/html/codeguard.htm

However, this information is obsolete as it describes the BCB5 dialog options. This page should be removed.

The correct page - available via F1 - is here:

ms-help://borland.bds4/bds4ref/html/bcc32_codeguardcompilesupport.htm

There are further obsolete pages in the help, for which I'll add reports.
QC Entry 23270

1: Start Borland Help 2: Search "Codeguard" 3: Select article "Codeguard", location "Reference". or go to url: ms-help://borland.bds4/bds4ref/html/codeguard.htm

QC #:

Date Reported:

Area:

53853

10/23/2007

Documentation\Online Help

Description:

Steps:

[QC Short Description]
TDateTime::FormatString missing

[QC Description]
The topic for TDateTime's FormatString member function is missing.
QC Entry 53853

1. Open help 2. Switch to the Index tab. 3. Enter FormatString in the Look for: Expected: The TDateTime::FormatString method to be shown Actual: Only two other FormatString items are shown, both for .NET

QC #:

Date Reported:

Area:

53852

10/23/2007

Documentation\Online Help

Description:

Steps:

[QC Short Description]
TDateTime topic missing member functions

[QC Description]
TDateTime topic doesn't contain links to the TDateTime member functions such as FormatString, DateTimeString etc.
QC Entry 53852

Go to ms-help://borland.bds5/delphivclwin32/System_TDateTime.html Expected: All the member functions in TDateTime Actual: No member functions are mentioned

QC #:

Date Reported:

Area:

23723

1/17/2006

Documentation\Online Help\VCL

Description:

Steps:

[QC Short Description]
OnAlignInsertBefore & OnAlignPosition

[QC Description]
Seems cool, gotta just wonder what it is and how you use it. Something more than "When the object is aligned with other objects, it is inserted before other objects." and "Use the OnAlignPosition event handler to respond when a control is aligned to a new position." might make it a bit more useful, or at least an example of using it. Even just some documentation on the TAlignInsertBeforeEvent and TAlignPositionEvent would help a great deal.
QC Entry 23723

QC #:

Date Reported:

Area:

46647

5/27/2007

Documentation\Online Help\VCL

Description:

Steps:

[QC Short Description]
Error in the C++ synopsis of different VCL functions

[QC Description]
In the doc page for DateToStr, CurrToStr and CurrToStrF the C++ synopsis is wrong: the function return type should be AnsiString, not string.

I suspect a systematic hunt for similar cases is in order.
QC Entry 46647

Start the online help, set the filter to C++ and look for DateToStr in the index. Check the C++ synopsis. Repeat for CurrToStr and CurrToStrF.

QC #:

Date Reported:

Area:

3840

3/19/2003

Documentation\Online Help\VCL

Description:

Steps:

[QC Short Description]
Use of "Key" Instead of "Value" in TRegistry::ValueExists

[QC Description]
In the paragraph:

"Call ValueExists o determine if a particular key exists in the registry. Calling Value Exists is especially useful before calling other TRegistry methods that operate only on existing keys."

change "key"/"keys" to "data item"/"data items".

Also, in the second sentence of the above paragraph, change "Value Exists" to "ValueExists".
QC Entry 3840

QC #:

Date Reported:

Area:

1366

5/28/2002

Documentation\Online Help\VCL

Description:

Steps:

[QC Short Description]
TTreeNode::EditText is not documented

[QC Description]
The EditText method of TTreeNode is not documented in the help system.
QC Entry 1366

In BDS 2006 look in: <ms-help://borland.bds4/bds4win32api_cpp/html/CPPWin32_ComCtrlsTTreeNodeMethods.htm> EditText is not listed. In BCB6, select TTreeNode in the code editor and hit F1, click on Methods and see that EditText is not listed.

QC #:

Date Reported:

Area:

46667

5/28/2007

Documentation\Online Help\VCL

Description:

Steps:

[QC Short Description]
Error in TControlBar Help

[QC Description]
On page:
ms-help://borland.bds5/delphivclwin32/ExtCtrls_TControlBar.html

In the Note: paragraph under Description, I'd guess that
TActionToolBar in line 2 below should be AutoSize instead.

1) If you want to use TActionToolBar on a TControlBar component, you
should set the AutoSize property to False.
<snip>
2) display properly on a TControlBar component. When TActionToolBar is
set to False
<snip>
QC Entry 46667

Enter Help and select ms-help://borland.bds5/delphivclwin32/ExtCtrls_TControlBar.html.

QC #:

Date Reported:

Area:

50233

8/8/2007

Documentation\Online Help\VCL

Description:

Steps:

[QC Short Description]
TFileStream constructor docs list fmSharexxxx modes twice.

[QC Description]
Look at ms-help://borland.bds5/delphivclwin32/Classes_TFileStream_Create@string@Word.html

List of "Open Modes" should only include fmCreate, fmOpenxxxx. However, it includes fmShare*** which are repeated in the list of share modes in the second table.
QC Entry 50233

Look at ms-help://borland.bds5/delphivclwin32/Classes_TFileStream_Create@string@Word.html

QC #:

Date Reported:

Area:

35120

10/12/2006

Documentation\Online Help\VCL

Description:

Steps:

[QC Short Description]
TTrackBarOientation enum values are incorrect.

[QC Description]
ms-help://borland.bds4/bds4dnetapi_dnet/html/DelphiNET_BorlandVclComCtrlsTTrackBarOrientationType.htm

This page and others list the enum values as tbHorizontal ad tbVertical. they should be trHorizontal and trVertical. (See comctrls.hpp and .pas)
QC Entry 35120

1: Open folloowing help page: ms-help://borland.bds4/bds4dnetapi_dnet/html/DelphiNET_BorlandVclComCtrlsTTrackBarOrientationType.htm

QC #:

Date Reported:

Area:

39136

1/22/2007

Documentation\IDE Help Contexts

Description:

Steps:

[QC Short Description]
Missing Anchors -> akLeft, akTop, akRight, akBottom help contexts

QC Entry 39136

Create a New form
Expand Anchors
Select akLeft
Hit F1

Comment - Terry Fravel, 4/20/07: These anchors are documented in the Anchors.xml API help file which is linked to from the Anchors node in the Object Inspector. Please link all children of the TForm.Anchors property (akLeft, akTop,akRight, akBottom) to Docs\Common\Reference\API\Controls\classes\TControl\Properties\Anchors.xml.

QC #:

Date Reported:

Area:

20716

10/27/2005

Documentation\IDE Help Contexts

Description:

Steps:

[QC Short Description]
Hard to obtain help in #ifdef

QC Entry 20716

For the attached project try getting context help for the #ifdef in unit3.cpp. All I get is 'ifdef' for Delphi and no obvious way to navigate to the C++ help. //////////////////// I have a possible explanation for this! I have Visual Studio .NET installed on my system. Could that be the problem? It was already installed when I installed DeXter. Note:The attached BMP may help shed some light on this.

QC #:

Date Reported:

Area:

23669

1/16/2006

Documentation\IDE Help Contexts

Description:

Steps:

[QC Short Description]
TDrawCellEvent help page

[QC Description]
Where could I find help page for type TDrawCellEvent ? (I could find it in HPP file, but it's not that what I want.
QC Entry 23669

search for TDrawCellEvent in help

//exp : a topic
//res : none

QC #:

Date Reported:

Area:

44310

4/12/2007

Documentation\IDE Help Contexts

Description:

Steps:

[QC Short Description]
C++ Compiler Errors topic empty

[QC Description]
The C++ Compiler Errors topic is empty. Errors and Warnings is also empty.
QC Entry 44310


[MM]
Build 11.0.2671.6337: only the descriptions are missing.

1. Open the Cogswell help.

2. Switch to the Index tab, and enter C++ Compiler Errors in.

3. Click the topic.

Expected: The topic to be populated with the error messages that the compiler will output.

Actual: The topic simply says "The following topic lists the errors and warnings that the C++ compiler may emit."

Same is true for the Errors and Warnings topic.

QC #:

Date Reported:

Area:

46697

5/28/2007

Documentation\IDE Help Contexts

Description:

Steps:

[QC Short Description]
Codeguard instructions inaccurate

[QC Description]
help says to switch codeguard on

To enable the CodeGuard reporting tool
Tools->CodeGuard Configuration

which there isnt.. it also says

To enable CodeGuard compiler options for your project
Project->Options->C++ Compiler->CodeGuard compile support

where as its

Project->Options->C++ Compiler->debugging-?CodeGuard compile support
QC Entry 46697

codeguard help is innacurate, it says to switch codeguard on To enable the CodeGuard reporting tool Tools->CodeGuard Configuration which there isnt.. it also says To enable CodeGuard compiler options for your project Project->Options->C++ Compiler->CodeGuard compile support where as its Project->Options->C++ Compiler->debugging-?CodeGuard compile support

QC #:

Date Reported:

Area:

45931

5/14/2007

Documentation\Help Output

Description:

Steps:

[QC Short Description]
Help for TRegistry is useless. Import BCB6 TRegistry help contents to highlander/cogswell.

[QC Description]
Go see...

class TRegistry = "This is class Registry.TRegistry"
procedure CloseKey = "This is CloseKey, a member of class TRegistry."

etc etc
QC Entry 45931
-------
BCB6 Help has a full contents on this topic, so just import contents from BCB6.
[BCB6 TRegistry]
TRegistry is a low-level wrapper for the system registry and functions that operate on the registry.

Unit

Registry

Description

Use TRegistry to encapsulate access to the Windows system registry in an application. The registry is a database that an application can use to store and retrieve configuration information. Configuration information is stored in a hierarchical tree. Each node in the tree is called a key. Every key can contain subkeys and data values that represent part of the configuration information for an application.

All keys that an application creates, opens, reads, or writes are subkeys of predefined root keys. By default, a TRegistry object is created with a root key of HKEY_CURRENT_USER.

Only one key is accessible at a time in a TRegistry object. To determine the key that is currently accessible, read the value of the CurrentKey property. TRegistry methods enable an application to open, close, save, move, copy, and delete keys.

One or more data values containing actual configuration information can be stored in a key. TRegistry methods enable an application to query a key to see if it contains data, to read data in a key, and to write data to a key.
[BCB6HELP]

Help | CodeGear Help Look for: TRegistry ms-help://borland.bds5/delphivclwin32/Registry_TRegistry1.html Exp: Full help as in BDS2006 Act: autogenerated help page Select ChangeKey from listbox on left ms-help://borland.bds5/delphivclwin32/Registry_TRegistry_ChangeKey@HKey@string.html Exp: Full help as in BDS2006 Act: autogenerated help page

QC #:

Date Reported:

Area:

47484

6/13/2007

Documentation\Help Output

Description:

Steps:

[QC Short Description]
filtering doesn't seem to work.

[QC Description]
I tried to find help on command line arguments for the cpp compiler.

So filter by Language C++
Looked for "command line"

Found nothing useful but many things that started with command, but many things having nothing to do with C++.
QC Entry 47484

F1 filter by Language C++ Looked for "command line" Found nothing useful but many things that started with command, but many things having nothing to do with C++.

QC #:

Date Reported:

Area:

20392

10/20/2005

IDE

Description:

Steps:

[QC Short Description]
Option "Project|Clean"

[QC Description]
It would be nice to have an option "Project|Clean" that deletes all files that are automatically created by the next compile (tds and project generated object files).

A further environment option should allow to perform such a "Project|Clean" automatically each time a project is closed.

The reason for this request is to save disk space. Don't say that this doesn't matter any more today. Students in computer pools often have quite limited resources. My students often waste a lot of precious time locating and deleting tds files.
QC Entry 20392

QC #:

Date Reported:

Area:

31642

7/24/2006

IDE

Description:

Steps:

[QC Short Description]
C++Builder (BDS2006) save errors with some folder names

[QC Description]
When saving a new project in a folder containing "unusual" charachers the IDE throws an error:
Caption: StarTeam
Text: Index was outside the bounds of the array.
Buttons: Report Bug - OK

Report Bug text:
Time of report generation: 2006-07-24 10:20:56Z
GUI Build: Borland.StarTeam.UI, Version=8.0.0.92, Culture=neutral, PublicKeyToken=da6d84f72e0f3c5a
SDK Build: 8.0.0-58
Exception Class: System.IndexOutOfRangeException
================

Exception Message:
==================
Index was outside the bounds of the array.

Stack Trace:
============
at Borland.Studio.StarTeam.DelphiUIUpdater.GetFileEvents(VcsProject vcsProject)
at Borland.StarTeam.IDE.VcsProject.UpdateFileEvents(String oldProjectFilePath, String newProjectFilePath)
at Borland.StarTeam.IDE.VcsProject.Rename(String newProjectFilePath)
at Borland.Studio.StarTeam.Initialize.On_RenameProjectOrGroup(Object sender, EventArgs e)

System Properties:
==================
starteam.reports.dir: c:\programmi\borland\bds\4.0\bin\Reports
path.separator: ;
java.vendor.url: http://www.microsoft.com/
line.separator: [0xd,0xa]
user.dir: C:\Documents and Settings\MYNAME
starteam.ape.dir: c:\programmi\borland\bds\4.0\bin
java.version: 1.1.4
user.home: C:\WINDOWS\Java
java.class.path: C:\Documents and Settings\MYNAME;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\
com.ms.applet.enable.serversockets: false
java.home: C:\WINDOWS\Java
com.ms.windir: C:\WINDOWS
os.version: 5.1
com.ms.sysdir: C:\WINDOWS\system32
java.class.version: 45.3
os.name: Windows XP
os.arch: x86
awt.toolkit: com.ms.vjsharp.windowing.win32.Win32Toolkit
user.language: it
starteam.plugins.search.dir: c:\programmi\borland\bds\4.0\bin
user.timezone: ECT
com.ms.locale.variant:
user.name: MYNAME
java.resource.path: C:\Documents and Settings\MYNAME;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\\wfcresources.zip
starteam.vis.dir: c:\programmi\borland\bds\4.0\bin
user.region: IT
awt.appletWarning: Warning: Applet Window
browser: ActiveX Scripting Host
java.vendor: Microsoft Corp.
file.separator: \
file.encoding: Cp1252
http.agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)
QC Entry 31642

Start a NEW VCL form project. Save it in a folder named "C:\BDS2006 TEST\= TEST 1 =". (Pls note that BCB6 works good with this folder name)

QC #:

Date Reported:

Area:

27190

4/10/2006

IDE

Description:

Steps:

[QC Short Description]
View Form (Shift F12) does not work.

[QC Description]
Click on the "View Form" button, or press Shift F12, to switch to a different form in the project. The code editor comes up
by default instead of the form editor. Shift F12 appears to function as Ctrl F12.

This was not the case in C++ Builder 6.
QC Entry 27190

Press shift F12 in the IDE to select a form.

QC #:

Date Reported:

Area:

23101

1/4/2006

IDE

Description:

Steps:

[QC Short Description]
Doubleclicking 'unknown' file types in project manager should launch associated application.

[QC Description]
You can add random filetypes (like PDFs or JPEG images) to a BDS2006 project, to keep all project-related files referenced from one place.

However, once you've done this, you cannot 'open' those files from BDS. The "Open" item on the context menu is still enabled, but either nothing happens when you select it (JPEGS), or the file opens as raw text (PDFs) or binary data (BMPs). None of these are very helpful.

I suggest that trying to open a file with an unknown extension invokes the application associated with editing it.
QC Entry 23101

QC #:

Date Reported:

Area:

30600

6/26/2006

IDE

Description:

Steps:

[QC Short Description]
IDE opens multiple copies of standalone header file added to project

[QC Description]
When a stand-alone header file is added to a project and has standard BCB type header guards, the ide will open multiple copies of the file if errors are found during compile.
QC Entry 30600

Open the attached project or File | New | VCL Forms app C++ Add include for the attached file prior to vcl include: #include "File1.h" // won't err if after vcl.h #include <vcl.h> Save all Copy the attached file "File1.h" into the project directory Project | Build Error in File1.h will be shown Alt-F8 to show next error - second copy of File1.h opens Add a comment to the line with the error (do _not_ save) Alt-F8 - another copy opens - note that the commented line is not commented in this version - easy to end up with multiple buffers each with a different version of the file Change the name of the header guards in File1.h and the ide will no longer open multiple copies of the file.

QC #:

Date Reported:

Area:

55197

11/23/2007

IDE\Dialogs

Description:

Steps:

[REGRESSION]
[QC Short Description]
Build Configuration Dialog has no minimum size

[QC Description]
The Build Configuration Manager window is resizeable, but has no minimum size constraints.
It is therefore possible to resize it until only the title bar is visible.
QC Entry 55197

//check also 256835
File->New->VCL Forms Application - C++Builder
Project->Configuration Manager...
Now right click on the bottom right corner of the Build Configuration Manager window
Resize the window until only part of the title bar is visible
N.B. that re-sizing the window to it's original size, can leave drawing artifacts on the right hand panel

QC #:

Date Reported:

Area:

46098

5/16/2007

IDE\Dialogs

Description:

Steps:

[QC Short Description]
Wrong message for "Clean"

QC Entry 46098
[similar to 250440]

1. Open a project 2. In Project Manager, right click "Build Configurations", select "Clean" Observation: Compiling message pops up. That status is "Done: Compiled". If invoke "Clean" command from main menu or popup menu for project node in Project Manager, that status is "Done: Clean"

QC #:

Date Reported:

Area:

46815

5/30/2007

IDE\Dialogs\Project Options

Description:

Steps:

[QC Short Description]
C++ Compatiblity options persists even after canceling

[QC Description]
When I select "Non-const calls from const object" to comoile code. Then I deseclect this - code still compiles as for selected option
QC Entry 46815

1) File | New | Other | C++ Builder | Console Application
paste in the following above main
-------------------------------------
class TMyObject
{
public :
void MyProc(){};

};

void DoSomething( const TMyObject *myobj )
{
myobj->MyProc();
}
-------------------------------------------
Build
This will cause compilation error

2) Click Project | Options | C++ Compiler | C++ Compatibility
2b) Check option to "Non-const calls for const object"
3) Build all - sucess
4) uncheck"Non-const calls for const object"
5) Build all
//exp: Error comes up again
//act: Build Success with Warning for 8037

QC #:

Date Reported:

Area:

44042

4/9/2007

IDE\Dialogs\Project Options

Description:

Steps:

[QC Short Description]
Settings made in new (non-tool-linked) Paths and Defines node do not show in tool paths

[QC Description]
Project Options dialog now shows a new node at the tope of the treeview for setting include and library paths that are not tool-specific. Settings in this node, however should be shown as inherited for the same settings in the tool-specific nodes, but they are not.
QC Entry 44042

File | New | VCL Forms App - C++ Project | Options | Paths and Defines - note that Include path, Library path and Conditional defines all have settings Project | Options | C++ Compiler | Paths and Defines Exp: Merge will be checked and Include path will show entries from above, defines as well Act: Merge is checked for both, but both the Include path and the Defines boxes are empty Click on [...] button by Include path Exp: Inherit will be checked and bottom listbox will show inherited paths, same expected for Defines Act: Inherit is checked, but no inherited paths are shown. Blank for Defines as well Same is true for Paths and Defines unde Delphi Compiler, Resource Compiler and TASM

QC #:

Date Reported:

Area:

20905

11/1/2005

IDE\Dialogs\BOE

Description:

Steps:

[QC Short Description]
context help for tlib options missing

[QC Description]
The context help for tlib options is missing, pressing help produces "topic not available"
QC Entry 20905

- Project->Options->Librarian->Other Options->Help

results in "Topic not available"

actually this is true for any dialo below librarian

QC #:

Date Reported:

Area:

45859

5/11/2007

IDE\Project Management

Description:

Steps:

[QC Short Description]
Cogswell places PCH files in different directories than BCB2006

[QC Description]
Although I specified a directory for precompiled headers in my BCB2006 project, when I convert it to Cogswell, these are placed in a different directory, which I never explicitly set.

I believe this problem to be related to QC#45113.
QC Entry 45859

----------- ADDITIONAL ------------------
DOC: PLEASE SEE COMMENTS under Resolution tab for this to become apart of the Project Options documentation.

----------------------------------------------------
+ Extract the attachment.
+ OPen in Cogswell and import the .bdsproj
+ Click Project | Options | C++ Compiler | Precompiled Headers
+ Examine PCH filename edit box:
// exp: should say: temp\vcl100.csm (as it does in BDS2006)
//act: nothing is displayed.



----------------- ADDITIONAL --------------------
RAID 236344's fix was to generate .pch files in their own output directory. Looks like importer is broken for -H=

---------- ORGINAL STEPS -------------
Change directory to QC45859. Open Project1.bdsproj in BCB2006 and build it.
A bin and a temp directories are created underneath the current one. bin contains the following files:
Project1.dll
Project1.lib
Project1.tds
The temp directory contains the following ones:
Unit1.obj
vcl100.#00
vcl100.csm
Exit BCB2006, delete the bin and temp directories and open the same project in Cogswell. Build it. The .dll, .lib, .tds and .obj files are correctly placed. However the Project1.#00 and Project1.pch files are placed in the Debug_Build directory, which is not the one specified in the original BCB2006 project.

In BDS2006:
+ Click Project | Options | C++ Compiler | Precompiled Headers
+ Specified path & name = temp\vcl100.csm

In Cogswell:
Project | Options | C++ Compiler | Precompiled Headers

Exp: Cogswell will show same pch file name imported from BDS2006
Act: No pch file name shown in Cogswell

QC #:

Date Reported:

Area:

54310

11/2/2007

IDE\Project Management\Project Manager

Description:

Steps:

[QC Short Description]
Form cannot be accessed in IDE

[QC Description]
After an attempt to save a unit with a disallowed name followed by an allowed save, the form and header file show up in the project manager but are no longer accessible.

The cause seems to be that the failed attempt to save the form causes the #ifndef in the header file to contain the bad name and it does not get updated on the subsequent successful save. This results in the form and header becoming disassociated from their CPP file.
QC Entry 54310

File | New | VCL Forms App - C++ Builder File | Save All Save form as "Form1.cpp" instead of "Unit1.cpp" Ok to error dialog File | Save All Accept default file names this time Close Unit1.cpp Double-click in PM to reopen Unit1.cpp Note that the tab for the header file is not shown F12 to show form Exp: Form designer will be shown Act: Nothing happens Double-click Unit1.h node in PM Exp: Header file will open in editor Act: Nothing happens Double-click Unit1.dfm node in PM Exp: Form designer will be shown Act: Focus goes to Unit1.cpp in editor

QC #:

Date Reported:

Area:

53935

10/24/2007

IDE\Project Management\Project Manager

Description:

Steps:

[QC Short Description]
Configurable option to control project manager node expansion

[QC Description]
When a programmer has multiple units open in the code editor and changes the active unit the Project Manager auto expands the project that the unit is a member of and selects the unit. This behavior is extremely counter-productive.

In previous versions of the IDE (BCB6 for instance) the default behavior was to leave the project manager the way the developer chose to view it. Projects would not auto-open whenever the IDE decided.

When developing I routinely jump back and forth between open units of different projects. When the time comes to do
anything with the Project Manager (right click compile, make all from here, open a specific unit, etc) I have to collapse nodes in the Project Manager and/or scroll around until I find the project I would like to do something with.

For a typical application I might have 20 projects in a project group of which each project has 10 to 50 units. Collapsed, this number of projects normally fits nicely in the Project Manager pane.

My request is to add a configurable option to "Tools | Options" under Editor or Environment options that is a simple flag that would read something like:

Auto-select code editor files in project manager

QC Entry 53935

- Create any new project - Add a few units - Save the project and close - Reopen the project - Open a few units for editing in the Code Editor. - Collapse the project node in the Project Manager pane - Choose one of the open units At this point the project node will have expanded and the unit you selected will be selected in the Project Manager. Now, to imagine the frustration level add 10 more projects and add at least 20 units to each project.

QC #:

Date Reported:

Area:

44554

4/17/2007

IDE\Project Management\Project Manager

Description:

Steps:

[QC Short Description]
Multiple select when adding projects

[QC Description]
I have a project group and want to add 20 projects, I do have a menu item add existing project, but then I can only select one project at a time, would be much easier if I can do multiple select
QC Entry 44554

add a new project group, then add existing projects from disk

QC #:

Date Reported:

Area:

25111

2/19/2006

IDE\Project Management\Project Manager

Description:

Steps:

[QC Short Description]
The path display in the project manager is very weak

[QC Description]
The path display of files in the project manager creates for each path change an extra subfolder in the window.
QC Entry 25111

The path display of files in the project manager creates for each path change an extra subfolder in the window. So when someone takes a file from a completely extra directory, the subfolder display starts with ..\..\..\..\..\..\.. I would make the display as it was in BorlandC++ 5.x. With groups and all these fancy things. This project management was by far the best - so even MS copied it into VC.

QC #:

Date Reported:

Area:

26665

3/28/2006

IDE\Project Management\Project Manager

Description:

Steps:

[QC Short Description]
The ProjectManager bug with shared files.

[QC Description]
When one file is used by 2 or more projects, when double clicking on the file in the project manager, the selection will jump to the last project containing the file instead of remaining on the one that has been clicked on.
The ProjectManager should check if the file belongs to the currently selected project for editing instead of always jumping to the last project in the project group.
QC Entry 26665

1. Create a project group. 2. Add 2 C++ Builder VCL form projects. 3. Create a new CPP unit. 4. Add the CPP unit to both projects (The unit is shared). 5. Try to select the unit in the first project in the ProjectManager. - The ProjectManager will always jump on the last project. This is very confusing especially with very large projects, and renders the ProjectManager very difficult to use.

QC #:

Date Reported:

Area:

49438

7/23/2007

IDE\Project Management\Project Manager

Description:

Steps:

[QC Short Description]
Big problem adding libraries to the project manager

[QC Description]
In previous version, like C++Builder 4.0, I simply can add libraries to my projekt using the USELIB statement.
The importent matter was, that I can add libraries without full path.
In C++2007, I can add Libraries, but only with pathes. So, if I have my libs on - for example - c:\mylibs and other developers in different places, I can't share thies project.
Thats absolute horrible .
QC Entry 49438

there are no steps. That is a missing function or bad handling problem

{ See Resolution comment - MD }

QC #:

Date Reported:

Area:

49926

8/1/2007

IDE\Project Management\Project Manager

Description:

Steps:

[QC Short Description]
Project Manager performs unnecesary re-compilations

[QC Description]
Changes to a project that do not affect the C++ compiler will cause the project manager to recompile all source files.
QC Entry 49926

Create a C++ target project for a static library. Build the project. A) Delete a file from the list of source files. Make the project. Note that all source files are recompiled. or B) Change the TLIB pagesize option from the current value (eg, from the default of 32 to 64). Make the project. Note that all source files are recompiled.

QC #:

Date Reported:

Area:

20272

10/18/2005

IDE\Project Management\Project Manager

Description:

Steps:

[QC Short Description]
Nested folder display makes PM very difficult to use

[QC Description]
When I add a file from a different directory to a project the PM displays a folder instead of the name of the file. Usually opening that node results in a nother folder being displayed, level after level until the PM is unusable.

This is particularly annoying, since lib and obj files can only be used if they are added in the PM - there is no linker option to tell the linker to link them into the project.

Please have the file name displayed when I add a file to the project, even if it is in a different directory.
QC Entry 20272

create a C++ project in DeXter Add a file from a different directory to the project Try to find the filename see attached image

QC #:

Date Reported:

Area:

30248

6/18/2006

IDE\Project Management\Project Options

Description:

Steps:

[QC Short Description]
Using options that are different in two projects loaded in the same project group can cause the main project to AV.

[QC Description]
Using options that are different in two projects loaded in the same project group can cause the main project to AV.

In this case, the main project uses a static library. The main project uses Dynamic RTL, but not the static library. As a result, an AV occurs when the project is run.

Therefore, a way to copy/duplicate project options to all projects in the same project group should be provided so that this kind of user errors do not occur.
QC Entry 30248


CLARIFY 632090

0. Start IDE, or close all projects if IDE is active.
1. Unzip attached project to D:\cases\632090 for example.
2. In Project Manager, right click and choose Add to Project, and select testCoutlib.bdsproj, and click ok.
3. In Project Manager, right click and choose Add to Project and select testCoutProj.bdsproj, and click ok.
4. Build all.
5. Make testCoutProj the active project.
6. Run project.

Project AVs. (not the IDE)

7. Make testCoutlib the active project
8. Activate Project Options using IDE menu, or Shift Ctrl F11.
9. Go to Librarian (tlib), Other options, and check Use Dynamic RTL.
10. Build all.
11. Switch active project to testCoutProj.
12. Run project.

No AVs.

QC #:

Date Reported:

Area:

51797

9/10/2007

IDE\Project Management\Project Options

Description:

Steps:

[QC Short Description]
TASM fails in "Compile to ASM and ASM to OBJ option"

[QC Description]
In an existing C++ VCL application with the ASM option *on* I get the two errors:

[TASM32 Error] **Fatal** out of hash space
[BCC32 error] "bcc32 exited with code 1

In a brand new C++ project on another machine I get more verbose build and output pane results (many complaints from ILINK32) but the end result is the same: nothing workable.

If it matters, I wanted to see the code generation in ASM to understand better a memory consumption behavior in a database program I had not seen until this build of RAD Studio.

[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x0000033b / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x000000b5 / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x0000000e / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x00000021 / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000084 / 0x00004000
[ILINK32 Warning] Warning: Import symbols : 0x0000030c / 0x00100000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000b94 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x00001a30 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x0000ebb0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000820 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000030 / 0x00400000
[ILINK32 Warning] Warning: UNKNOWN : 0x00000006 / 0x00400000
[ILINK32 Warning] Warning: Virdefs : 0x00000060 / 0x00020000
[ILINK32 Warning] Warning: CODE : 0x00000330 / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x000000dc / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00000b7c / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x0000091a / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x0000027c / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x00000013 / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x0000004c / 0x00004000
[ILINK32 Warning] Warning: External types : 0x0000002c / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000096 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x00000044 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x00000264 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000370 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000050 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x00000097 / 0x00100000
[ILINK32 Warning] Warning: Virdefs : 0x00000044 / 0x00020000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilc: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ild: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilf: 0x0001a000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ils: 0x00369000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.tds: 0x00010000 / 0x06000000
[ILINK32 Warning] Warning: unknown heap name : 0x03000000 / 0x03000000
[ILINK32 Error] Fatal: Error detected (IMP845)
[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x0000033b / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x000000b5 / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x0000000e / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x00000021 / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000084 / 0x00004000
[ILINK32 Warning] Warning: Import symbols : 0x0000030c / 0x00100000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000b94 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x00001a30 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x0000ebb0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000820 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000030 / 0x00400000
[ILINK32 Warning] Warning: UNKNOWN : 0x00000006 / 0x00400000
[ILINK32 Warning] Warning: Virdefs : 0x00000060 / 0x00020000
[ILINK32 Warning] Warning: CODE : 0x00000330 / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x000000dc / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00000b7c / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x0000091a / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x0000027c / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x00000013 / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x0000004c / 0x00004000
[ILINK32 Warning] Warning: External types : 0x0000002c / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000096 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x00000044 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x00000264 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000370 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000050 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x00000097 / 0x00100000
[ILINK32 Warning] Warning: Virdefs : 0x00000044 / 0x00020000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilc: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ild: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilf: 0x0001a000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ils: 0x00369000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.tds: 0x00010000 / 0x06000000
[ILINK32 Warning] Warning: unknown heap name : 0x03000000 / 0x03000000
[ILINK32 Error] Fatal: Error detected (IMP845)
[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x0000033b / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x000000dc / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00000b7c / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x0000091a / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x0000027c / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x00000021 / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000084 / 0x00004000
[ILINK32 Warning] Warning: External types : 0x0000002c / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x0000030c / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000096 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000b94 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x00001a30 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x0000ebb0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000820 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000050 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x00000097 / 0x00100000
[ILINK32 Warning] Warning: UNKNOWN : 0x00000006 / 0x00400000
[ILINK32 Warning] Warning: Virdefs : 0x00000060 / 0x00020000
[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x000008ef / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x00000208 / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00001713 / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x00000e96 / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x00001cdb / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x0000005a / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000168 / 0x00004000
[ILINK32 Warning] Warning: External types : 0x000000bc / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000186 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x000000a0 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x000005a0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000564 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000106 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x0000024d / 0x00100000
[ILINK32 Warning] Warning: Virdefs : 0x0000009c / 0x00020000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilc: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ild: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilf: 0x0001a000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ils: 0x0036f000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.tds: 0x00010000 / 0x06000000
[ILINK32 Warning] Warning: unknown heap name : 0x03000000 / 0x03000000
[ILINK32 Error] Fatal: Error detected (IMP845)
[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x0000033b / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x000000dc / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00000b7c / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x0000091a / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x0000027c / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x00000021 / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000084 / 0x00004000
[ILINK32 Warning] Warning: External types : 0x0000002c / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x0000030c / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000096 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000b94 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x00001a30 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x0000ebb0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000820 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000050 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x00000097 / 0x00100000
[ILINK32 Warning] Warning: UNKNOWN : 0x00000006 / 0x00400000
[ILINK32 Warning] Warning: Virdefs : 0x00000060 / 0x00020000
[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x000008ef / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x00000208 / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00001713 / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x00000e96 / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x00001cdb / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x0000005a / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000168 / 0x00004000
[ILINK32 Warning] Warning: External types : 0x000000bc / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000186 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x000000a0 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x000005a0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000564 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000106 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x0000024d / 0x00100000
[ILINK32 Warning] Warning: Virdefs : 0x0000009c / 0x00020000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilc: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ild: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilf: 0x0001a000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ils: 0x0036f000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.tds: 0x00010000 / 0x06000000
[ILINK32 Warning] Warning: unknown heap name : 0x03000000 / 0x03000000
[ILINK32 Error] Fatal: Error detected (IMP845)
[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x0000033b / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x000000dc / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00000b7c / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x0000091a / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x0000027c / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x00000021 / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000084 / 0x00004000
[ILINK32 Warning] Warning: External types : 0x0000002c / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x0000030c / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000096 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000b94 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x00001a30 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x0000ebb0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000820 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000050 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x00000097 / 0x00100000
[ILINK32 Warning] Warning: UNKNOWN : 0x00000006 / 0x00400000
[ILINK32 Warning] Warning: Virdefs : 0x00000060 / 0x00020000
[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x000008ef / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x00000208 / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00001713 / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x00000e96 / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x00001cdb / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x0000005a / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000168 / 0x00004000
[ILINK32 Warning] Warning: External types : 0x000000bc / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000186 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x000000a0 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x000005a0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000564 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000106 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x0000024d / 0x00100000
[ILINK32 Warning] Warning: Virdefs : 0x0000009c / 0x00020000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilc: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ild: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilf: 0x0001a000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ils: 0x0036f000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.tds: 0x00010000 / 0x06000000
[ILINK32 Warning] Warning: unknown heap name : 0x03000000 / 0x03000000
[ILINK32 Error] Fatal: Error detected (IMP845)
[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x0000033b / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x000000dc / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00000b7c / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x0000091a / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x0000027c / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x00000021 / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000084 / 0x00004000
[ILINK32 Warning] Warning: External types : 0x0000002c / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x0000030c / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000096 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000b94 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x00001a30 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x0000ebb0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000820 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000050 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x00000097 / 0x00100000
[ILINK32 Warning] Warning: UNKNOWN : 0x00000006 / 0x00400000
[ILINK32 Warning] Warning: Virdefs : 0x00000060 / 0x00020000
[ILINK32 Warning] Warning: BSS : 0x00000000 / 0x00400000
[ILINK32 Warning] Warning: CODE : 0x000008ef / 0x00400000
[ILINK32 Warning] Warning: DATA : 0x00000208 / 0x00400000
[ILINK32 Warning] Warning: DEBNAM : 0x00001713 / 0x00400000
[ILINK32 Warning] Warning: DEBSYM : 0x00000e96 / 0x00400000
[ILINK32 Warning] Warning: DEBTYP : 0x00001cdb / 0x00400000
[ILINK32 Warning] Warning: Extdef flags : 0x0000005a / 0x00004000
[ILINK32 Warning] Warning: Extdefs : 0x00000168 / 0x00004000
[ILINK32 Warning] Warning: External types : 0x000000bc / 0x00040000
[ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Line number cache : 0x00000186 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Public GSX : 0x000000a0 / 0x000c0000
[ILINK32 Warning] Warning: Publics : 0x000005a0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs : 0x00000564 / 0x00400000
[ILINK32 Warning] Warning: StringBlock : 0x00000106 / 0x00400000
[ILINK32 Warning] Warning: Type names : 0x0000024d / 0x00100000
[ILINK32 Warning] Warning: Virdefs : 0x0000009c / 0x00020000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilc: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ild: 0x00010000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ilf: 0x0001a000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.ils: 0x0036f000 / 0x03000000
[ILINK32 Warning] Warning: e:/Highlander/Debug/Project17.tds: 0x00010000 / 0x06000000
[ILINK32 Warning] Warning: unknown heap name : 0x03000000 / 0x03000000
[ILINK32 Error] Fatal: Error detected (IMP845)
QC Entry 51797

1. start 2804 2. new C++ VCL app--resize the form just a little bit for fun 3. Project | Options | C++ Compiler | Advanced Compilation | Assembler | Compile to .asm - checked 4. Run | Run Exp: Clean build and run Act: See description - list of errors and warnings too long to fit in steps

QC #:

Date Reported:

Area:

53017

10/4/2007

IDE\Project Management\Project Options

Description:

Steps:

[QC Short Description]
Project option : PCH : "use but don't generate" option does not work

[QC Description]
Project option "precompiled headers" -> "use but don't generate" option does not work.

The source of the problem is bcc32 options order: -Hu -H= instead of -H= -Hu, so -H= overrides -Hu, forcing compiler to generate PCH



QC Entry 53017

File | New | Other | C++ Builder Projects | Console Application
Check "Use VCL"
Project | Options | C++ Compiler | Pre-compiled Headers
set to "Use but don't generate" precompiled headers
set "PCH filename" to "test.pch"
Ok to save settings
Project | Build Project1
examine project directory

Exp: Test.pch will not be created (or updated if present)
Act: Newly created or updated pch file is present

QC #:

Date Reported:

Area:

21364

11/13/2005

IDE\Project Management\Build Options Explorer

Description:

Steps:

[QC Short Description]
Discrepancies between C++ compiler > Compiling options page and Help file

[QC Description]
There are some discrepancies between the Help file and the Project > Options > C++ compiler > Compiling page, including items in one and not the other. The order of the options in the Help also differs from that in the program.

Help file...

Perform C++ compile regardless of source extension (-P)
Extended compiler error information (-Q)
Enums always integer sized (-b)*
Merge duplicate strings (-d)
Stack Frames (-k)
Pass options to the linker; example: -ls -l-x (-l)
>> PREVIOUS OPTION NOT ON COMPILING PAGE
Suppress compiler identification banner (-q)
Return non-zero from compiler on warnings (-w!)

Program...

Show general messages
>> NO HELP GIVEN FOR PREVIOUS OPTION
Extended compiler error information (-Q)
Merge duplicate strings (-d)
Stack Frames (-k)
Enums always integer sized (-b)*
Suppress compiler identification banner (-q)
Perform C++ compile regardless of source extension (-P)
Return non-zero from compiler on warnings (-w!)

QC Entry 21364

1. File | new | vcl forms app
2. Project | Options | C++ Compiler | Help

QC #:

Date Reported:

Area:

25953

3/10/2006

IDE\Project Management\Build Options Explorer

Description:

Steps:

[QC Short Description]
Basic package settings are difficult to find

[QC Description]
In C++Builder versions prior to BDS2006 changing the settings of a package was a relatively painless process. Most or all of the commonly used settings were in one location.

For example, when designing a package opening "Project | Options" would yield the "Description" tab which would allow the developer to change the project "Description", package "Usage Options", and "Package Name" settings.

In BDS2006 these options have been split for C++Builder personality packages. The "Usage Options" are now under "Linker | Package Options". The "Package Name" settings are now under "Application". And, the package description (the most commonly modified option for all design-time packages) is in "Linker | PE file options | Set image description".

I am all for progress and adding new project options but it seems to me that splitting up these settings, and in the case of "description" burying it, is counterproductive. Especially since the Delphi personality package settings are still in the same location: "Project | Options | Description".
QC Entry 25953

In BCB3, 4, 5, 6 create a package and open the project options dialog by navigating to "Project | Options" in the menu. Note the "Description" tab that package designers need access to. In BDS2006 create a C++Builder personality package and open the project options dialog again via "Project | Options". Note that there is no "Description" area. Navigate to the various sections to see the standard package options: Application Linker | Package Options Linker | PE file options | Set image description To see how easy it "could" be create a Delphi personality package and open project options. All of these settings are in the "Description" page.

QC #:

Date Reported:

Area:

51084

8/25/2007

IDE\File Handling

Description:

Steps:

[QC Short Description]
IDE opens multiple instances of the same file

[QC Description]
Attached project demonstrates this problem.

This may result in corrupted files.
QC Entry 51084

1. Open a project 2. Add a .cpp file that includes a header file with the same name 3. Make sure the header is located in a folder other than .cpp 4. Make sure the header has the 'unit-like' header guards 5. Introduce a syntax error (or more) in the header 6. Compile 7. Double click on the errors in the message pane 8. Observe that each double click opens new instance of the header file

QC #:

Date Reported:

Area:

38449

1/8/2007

IDE\Performance

Description:

Steps:

[QC Short Description]
Opening COM Wrapper Files for MS Office takes very long

[QC Description]
Adding a C++ wrapper unit for COM of a Microsoft Office type library to a project or opening such a unit after it has been added to a project takes several minutes or even longer. See the files VBIDE_TLB.h/.cpp attached for an example.

[sysop note]
I am able to reproduce this in BDS 2006, but it appears to be fixed in the current version (build 2558) of Highlander. David Dean asked that it be opened for regression testing.

Please note:

- The files have been created with BDS 2006 using Components / Import components.
- The effect also can be seen when adding/opening other files created from type libraries of Microsoft Office 2003.
- Only opening the file (while no project is loaded in the IDE) is *sometimes* as fast as one would expect.
- This has nothing to do with the size of the file -- other files with the same size or even larger open within a second.
- The IDE also hangs sometimes when switching between files.
- Turning off Code Insight won't help.
QC Entry 38449

1. Create a new VCL project. 2. Add VBIDE_TLB.cpp as a c++ unit to the project. 3. Notice that the IDE hangs for about 6 minutes on a 3 GHz machine until the file is opened.

QC #:

Date Reported:

Area:

46367

5/22/2007

IDE\Code Completion

Description:

Steps:

[QC Short Description]
Find declaration takes too long

[QC Description]
'Find declaration' can take 120 seconds
QC Entry 46367

I have a test case project but it is over 200MB. I can provide it when necessary.

QC #:

Date Reported:

Area:

45052

4/25/2007

IDE\Build Tools

Description:

Steps:

[QC Short Description]
Files modified outside the IDE are not picked for compilation

[QC Description]
When a non-form unit (which is part of the opened project) is changed externally and when we click Run, the modified file is not compiled. Some times even if the modified source is opened in the IDE, the file is not picked for compilation.
QC Entry 45052

1) Open the attached project 2) F9 to make and run. 3) Now the application will display Hello and then show the empty form. 4) Close the running app 5) Open Unit2.cpp using NotePad and Change the Line ShowMessage("Hello"); to ShowMessage("World"); and save the file. 6) Yes when prompted to reload - note that the edited file is shown 7) F9 to make and run Expected: The IDE Build should check for the changed files and compile them. The Program should display "World" in a msg dlg. Actual: The IDE does not build the changed files and just executes the previously compiled executable and there by shows the msg "Hello". ps: Sometimes the same effect is happening even if the extUnit.cpp is opened in the IDE. After the external changes, the IDE complains someone has changed the file and then after reloading, it wont recompile.

QC #:

Date Reported:

Area:

47062

6/5/2007

IDE\Block Completion

Description:

Steps:

[QC Short Description]
Block completion adds unnecessary } if there is a string "\"" in lines before

[QC Description]
See steps to reproduce
QC Entry 47062

1) Create following Console Application: #pragma hdrstop #pragma argsused int main(int argc, char* argv[]) { char *p = "\""; <Cursor here> return 0; } 2) Place cursor in source code where I've marked. 3) Press ENTER Block completion will add extra closing bracket: #pragma hdrstop #pragma argsused int main(int argc, char* argv[]) { char *p = "\""; } return 0; }

QC #:

Date Reported:

Area:

45873

5/13/2007

Install

Description:

Steps:

[QC Short Description]
Uninstall takes 40 minutes to complete

[QC Description]
(These comments refer to Cogswell running on Vista - can't set these options inthe QC interface)

It has just taken me 40 minutes to uninstall 2664, which is a ridiculously long time to take.

Here's what happens (uninstalling from a Vista machine)...

uninstall started 6.18pm
progress buttons on left panel = "Collecting" and "Preparing" marked in green
caption at bottom of main panel = "Validating install" (sic)

after 27 minutes...
progress bar at 100% at 6.45pm, then jumps to 0%
progress buttons on left = "Preparing"
caption = "Updating components"
caption gives name of file (presumably being uninstalled?)
is the installer **really** still preparing?

after 36 minutes...
progress bar reaches 100% and jumps back to 0%

after 38 minutes...
6.56 progress bar reaches 100% and jumps back to 0%

after 40 minutes...
progress 100%
Finish > button enabled
buttons on left now say "Installing"
QC Entry 45873

1. Uninstall Cogswell 2. Use a watch to time the progress

QC #:

Date Reported:

Area:

45551

5/6/2007

Install

Description:

Steps:

[QC Short Description]
Setup doesn't warn you when not enough free space

[QC Description]
I got:
~700 mb free on disk C: (windows is here)
9Gig free on disk D:

On the "Select Features" page setup shows "Remaining Disk Space" "-1,816,876,936 bytes"

On the Select Directory tab I am choosing to install Cogswell to disk D:\Programs\CodeGear - no warnings or errors

After all, setup HANGS when free space is not enough to extract temporary files to
"C:\Documents and Settings\All Users\Application Data\{...}"

Conclusion - setup ALWAYS need 2G on system drive to install Cogswell correctly
QC Entry 45551

I got: ~700 mb free on disk C: (windows is here) 9Gig free on disk D: On the "Select Features" page setup shows "Remaining Disk Space" "-1,816,876,936 bytes" On the Select Directory tab I am choosing to install Cogswell to disk D:\Programs\CodeGear - no warnings or errors After all, setup HANGS when free space is not enough to extract temporary files to "C:\Documents and Settings\All Users\Application Data\{...}" Conclusion - setup ALWAYS need 2G on system drive to install Cogswell correctly

QC #:

Date Reported:

Area:

251196

5/31/2007

Install

Description:

Steps:

Start menu item for Documentation is not translated on German

// Should be: "RAD Studio Dokumentation"

QC #:

Date Reported:

Area:

45942

5/14/2007

Install

Description:

Steps:

[QC Short Description]
setup.exe(1): the system cannot find the path specified

[QC Description]
On starting Cogswell IDE on Vista, the messages window displays the message:

[2686] setup.exe(1): the system cannot find the path specified
QC Entry 45942

1. Open Cogswell 2. Observe the contesnts of the Messages window

QC #:

Date Reported:

Area:

45872

5/13/2007

Install\Uninstall

Description:

Steps:

[QC Short Description]
Inappropriate user interface in Uninstall program

[QC Description]
(These comments refer to Cogswell)

The main page that is shown during uninstall refers exclusively to installing the program, when it should be re-lablled to refer to uninstalling.

Progress buttons on left hand panel read:
o Collecting information
o Preparing installation
o Installing
o Finalizing installation

The final three options should read:
o Preparing removal
o Uninstalling/removing
o Finalizing removal

In addition, the caption at the bottom of the main panel reads (for a very long time):

"Validating install"

Change this to "Validating existing installation" or "Validating removal"
QC Entry 45872

1. Uninstall Cogswell
2. Obsrve the user-interface!

Suggestion (from newsgroup) for solution: change labels to

Collecting information
Preparing actions
Processing files
Finalizing actions

QC #:

Date Reported:

Area:

643

4/10/2002

VCL

Description:

Steps:

[QC Short Description]
The TLibModule declaration doesn't match help or BCB5.

[QC Description]
In sysclass.h TLibModule is defined as:
struct PACKAGE TLibModule
{
TLibModule *next;
long instance;
long resinstance;
long reserved;
};

Both the help file and System.pas says that TLibModule should be defined as:
struct PACKAGE TLibModule
{
TLibModule *next;
long instance;
long codeinstance;
long datainstance;
long resinstance;
long reserved;
};

The header file sysclass.h should be corrected. The problem didn't exist in BCB5.
QC Entry 643

Open sysclass.h and system.pas. Find the definition for TLibModule.
See the difference?

QC #:

Date Reported:

Area:

1826

7/16/2002

VCL\Core VCL Classes\TApplication

Description:

Steps:

[QC Short Description]
HandleException() throws an AV itself

[QC Description]
I ran through the accompanied code, and I can see that both ExceptAddr() and ExceptObject() are returning NULL inside of HandleException(), because the internal RaiseList() function is returning a NULL list of exceptions from the stack. Then later, ShowException() calls ExceptionErrorMessage(), which in turn is calling StrLFmt() passing it the ExceptObject.ClassName. But since the ExceptObject is NULL, a runtime error is generated from it trying to dereference a NULL pointer, thus throwing another exception from inside of the original catch() block that called HandleException() to begin with. Which is not catching new exceptions so it falls through to the main catch() block inside of WinMain() and terminates the program.

I've been able to reproduce this in both BCB 5 and 6 (both Enterprise)
QC Entry 1826
[previous must fix]

[C++ Compiler Top Ten]

void __fastcall TForm1::TForm1(TComponent *Owner)
: TForm(Owner)
{
Application->OnMessage = AppMessage;
}

void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
try
{
throw Exception("Test");
}
catch (Exception &e)
{
Application->HandleException(&e);
}
}

QC #:

Date Reported:

Area:

35325

10/16/2006

VCL\Emulation Classes

Description:

Steps:

[QC Short Description]
Linker unresolved external function call which is not called explicitly from code

[QC Description]
[Linker Error] Error: Unresolved external '__fastcall Forms::TScrollBox::PaintWindow(void *)' referenced from C:\PROGRAM FILES\BORLAND\BDS\4.0\CUSTCOMP\ ...

the function is declared in Forms.hpp

class PASCALIMPLEMENTATION TScrollBox : public TScrollingWinControl
{
...
protected:
...
virtual void __fastcall PaintWindow(HDC DC);
...

Is it a problem with types in VCL or too strict linker approach (name mangling)?
As you can see PaintWindow argument is HDC DC, which somewhere gets translated to void *.

I do not call the function from my code at all. I just use the TScrollBox as a base class and do not override the function.

Linker in BCB 5 and BCB 6 did not report any such error.

Versions:

activeds.dll, 5.1.2600.2180, C:\WINDOWS\system32\
adortl100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
adsldpc.dll, 5.1.2600.2180, C:\WINDOWS\system32\
ADVAPI32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
appHelp.dll, 5.1.2600.2180, C:\WINDOWS\system32\
asmview100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
ATL.DLL, 3.5.2284.0, C:\WINDOWS\system32\
bcbcoment100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
bcbcompro100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
bcbent100.bpl, 10.0.2166.28377, c:\program files\borland\bds\4.0\Bin\
bcbide100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
bcbidl100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
bcbpro100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
bcbsmp100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
bcbvclide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
bccide.dll, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
bdertl100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
bds.exe, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
bdsproj2mak_addin100.bpl, 10.0.2287.36685, c:\program files\borland\bds\4.0\bin\
bdsravereg.dll, 1.0.2284.18210, c:\program files\borland\bds\4.0\bin\
boreditu.dll, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
Borland.Caliber.IDE100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
borland.data.common.dll, 10.0.2288.42451, c:\windows\assembly\gac\borland.data.common\2.5.0.0__91d62ebb5b0d1b1b\
borland.data.datasync.dll, 2.5.0.0, c:\windows\assembly\gac\borland.data.datasync\2.5.0.0__91d62ebb5b0d1b1b\
borland.data.provider.dll, 10.0.2288.42451, c:\windows\assembly\gac\borland.data.provider\2.5.0.0__91d62ebb5b0d1b1b\
borland.data.web.dll, 10.0.2288.42451, c:\windows\assembly\gac\borland.data.web\2.0.0.0__91d62ebb5b0d1b1b\
borland.data.web.eco.dll, 10.0.2151.25345, c:\windows\assembly\gac\borland.data.web.eco\2.0.0.0__91d62ebb5b0d1b1b\
borland.delphi.dll, 10.0.2151.25345, c:\windows\assembly\gac\borland.delphi\10.0.4143.0__91d62ebb5b0d1b1b\
borland.eco.handles.dll, 10.0.2288.42451, c:\windows\assembly\gac\borland.eco.handles\10.0.4143.0__91d62ebb5b0d1b1b\
borland.eco.interfaces.dll, 10.0.2288.42451, c:\windows\assembly\gac\borland.eco.interfaces\10.0.4143.0__91d62ebb5b0d1b1b\
borland.eco.persistence.bdp.dll, 10.0.2151.25345, c:\windows\assembly\gac\borland.eco.persistence.bdp\10.0.4143.0__91d62ebb5b0d1b1b\
borland.eco.persistence.dll, 10.0.2288.42451, c:\windows\assembly\gac\borland.eco.persistence\10.0.4143.0__91d62ebb5b0d1b1b\
borland.eco.persistence.sqlserver.dll, 10.0.2151.25345, c:\windows\assembly\gac\borland.eco.persistence.sqlserver\10.0.4143.0__91d62ebb5b0d1b1b\
borland.eco.persistence.xml.dll, 10.0.2151.25345, c:\windows\assembly\gac\borland.eco.persistence.xml\10.0.4143.0__91d62ebb5b0d1b1b\
borland.eco.web.dll, 10.0.2288.42451, c:\windows\assembly\gac\borland.eco.web\10.0.4143.0__91d62ebb5b0d1b1b\
borland.eco.windows.forms.dll, 10.0.2288.42451, c:\windows\assembly\gac\borland.eco.windows.forms\10.0.4143.0__91d62ebb5b0d1b1b\
borland.globalization.dll, 10.0.2151.25345, c:\program files\borland\bds\4.0\bin\
borland.sci.dll, 10.0.2151.25345, c:\program files\borland\bds\4.0\bin\
borland.starteam.core.dll, 8.0.0.69, c:\windows\assembly\gac\borland.starteam.core\8.0.0.69__c4c57974ea1e3017\
borland.starteam.ide.dll, 8.0.0.28, c:\program files\borland\bds\4.0\bin\
borland.starteam.ui.dll, 8.0.0.103, c:\program files\borland\bds\4.0\bin\
borland.studio.cpp.dll, 10.0.2288.42451, c:\program files\borland\bds\4.0\bin\
borland.studio.delphi.dll, 10.0.2288.42451, c:\program files\borland\bds\4.0\bin\
borland.studio.delphi.gate.dll, 10.0.2151.25345, c:\program files\borland\bds\4.0\bin\
borland.studio.host.dll, 10.0.2288.42451, c:\program files\borland\bds\4.0\bin\
borland.studio.interop.dll, 10.0.2341.30612, c:\program files\borland\bds\4.0\bin\
borland.studio.refactoring.dll, 10.0.2288.42451, c:\program files\borland\bds\4.0\bin\
borland.studio.starteam.dll, 10.0.2288.42451, c:\program files\borland\bds\4.0\bin\
borland.studio.toolsapi.dll, 10.0.2151.25345, c:\program files\borland\bds\4.0\bin\
borland.studio.toolsets.dll, 10.0.65535.34930, c:\program files\borland\bds\4.0\bin\
borland.studio.typemappings.dll, 10.0.2151.25345, c:\program files\borland\bds\4.0\bin\
borland.studio.vcl.design.refactoring.dll, 10.0.2288.42451, c:\program files\borland\bds\4.0\bin\
borland.vclrtl.dll, 10.0.2288.42451, c:\windows\assembly\gac\borland.vclrtl\10.0.4143.0__91d62ebb5b0d1b1b\
borlndmm.dll, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
BrcIde.Dll, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
browseui.dll, 6.0.2900.2937, C:\WINDOWS\system32\
c1.c1printdocument.dll, 1.0.20033.142, c:\windows\assembly\gac\c1.c1printdocument\1.0.20023.101__1a6f4158ebe6d3b8\
c1.common.dll, 1.0.20042.118, c:\windows\assembly\gac\c1.common\1.0.20031.116__e272bb32d11b1948\
c1.data.dll, 1.0.20033.92, c:\windows\assembly\gac\c1.data\1.0.20022.0__900b028620cd3a1b\
c1.data.express.dll, 1.0.20033.92, c:\windows\assembly\gac\c1.data.express\1.0.20022.0__253763f1c3e4ceec\
c1.win.c1chart3d.dll, 1.0.20033.13155, c:\windows\assembly\gac\c1.win.c1chart3d\1.0.20033.13147__a22e16972c085838\
c1.win.c1command.dll, 1.0.20033.31, c:\windows\assembly\gac\c1.win.c1command\1.0.20023.1__e808566f358766d8\
c1.win.c1flexgrid.classic.dll, 2.1.20033.144, c:\windows\assembly\gac\c1.win.c1flexgrid.classic\2.1.20031.104__c9c7ad9c0a5706c9\
c1.win.c1flexgrid.dll, 2.1.20033.144, c:\windows\assembly\gac\c1.win.c1flexgrid\2.1.20031.104__c9c7ad9c0a5706c9\
c1.win.c1input.dll, 1.0.20033.53, c:\windows\assembly\gac\c1.win.c1input\1.0.20031.0__7e7ff60f0c214f9a\
c1.win.c1list.dll, 1.1.20033.23, c:\windows\assembly\gac\c1.win.c1list\1.1.20023.6__6b24f8f981dbd7bc\
c1.win.c1printpreview.dll, 1.0.20033.142, c:\windows\assembly\gac\c1.win.c1printpreview\1.0.20023.101__3af768410ba0a64f\
c1.win.c1report.dll, 1.1.20033.100, c:\windows\assembly\gac\c1.win.c1report\1.1.20023.28__c9c7ad9c0a5706c9\
c1.win.c1spell.dll, 1.2.20033.38, c:\windows\assembly\gac\c1.win.c1spell\1.2.20023.29__f6f2c1ef135ddbd4\
c1.win.c1thesaurus.dll, 1.2.20033.38, c:\windows\assembly\gac\c1.win.c1thesaurus\1.2.20023.29__c644e6d97aec9e47\
c1.win.c1truedbgrid.dll, 1.2.20033.30829, c:\windows\assembly\gac\c1.win.c1truedbgrid\1.2.20033.30829__75ae3fb0e2b1e0da\
CC3270MT.DLL, 7.0.0.2, C:\WINDOWS\system32\
CLBCATQ.DLL, 2001.12.4414.308, C:\WINDOWS\system32\
codeguardide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
codetemplates100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
comcore100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
comctl32.dll, 5.82.2900.2982, C:\WINDOWS\system32\
comctl32.dll, 6.0.2900.2982, C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\
comdlg32.dll, 6.0.2900.2180, C:\WINDOWS\system32\
comentcore100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
COMP32X.DLL, 5.8.2.0, C:\Program Files\Borland\BDS\4.0\Bin\
COMRes.dll, 2001.12.4414.258, C:\WINDOWS\system32\
coreide100.bpl, 10.0.2445.40105, C:\Program Files\Borland\BDS\4.0\Bin\
coreproide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
CRYPT32.dll, 5.131.2600.2180, C:\WINDOWS\system32\
CRYPTUI.dll, 5.131.2600.2180, C:\WINDOWS\system32\
CSCDLL.dll, 5.1.2600.2180, C:\WINDOWS\System32\
cscui.dll, 5.1.2600.2180, C:\WINDOWS\System32\
DataExplorer100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dbexpress100.bpl, 10.0.2288.42451, C:\WINDOWS\system32\
dbkdebugide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
dbkdebugproide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
dbrtl100.bpl, 10.0.2288.42451, C:\WINDOWS\system32\
dbx100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
dbxcds100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
dcc100.dll, 10.0.2418.27083, C:\Program Files\Borland\BDS\4.0\Bin\
DCIMAN32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
dcl31w100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dclact100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
dclado100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\bin\
dclbcbsmp100.bpl, 10.0.2092.21476, c:\program files\borland\bds\4.0\Bin\
dclbde100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
dcldb100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
dcldbx100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
dclemacsedit100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dclib100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dclIntraweb_80_100.bpl, , c:\program files\borland\bds\4.0\Bin\
dclmcn100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dclmid100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dclmlwiz100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dclnet100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
dclRave.bpl, , c:\program files\borland\bds\4.0\RaveReports\Lib\
dclrx2006.bpl, 1.0.0.0, C:\Program Files\Borland\BDS\4.0\mybpl\
dclsmp100.bpl, 9.0.1655.26747, c:\program files\borland\bds\4.0\Bin\
dclsmpedit100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dclsoap100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
dclstd100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dcltee100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
dclwbm100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
dclwebsnap100.bpl, 6.0.0.0, c:\program files\borland\bds\4.0\Bin\
DDRAW.dll, 5.3.2600.2180, C:\WINDOWS\system32\
delphicoreide100.bpl, 10.0.2445.40105, C:\Program Files\Borland\BDS\4.0\Bin\
delphidotnetcore100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
delphivclide100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
deployapi100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
DeployCore100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
deployftptarget100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
deployide100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\bin\
DeployIndy100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
designide100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
dhtmlcomps100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
diasymreader.dll, 7.10.3052.4, C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\
DotNetCoreAssemblies100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
dotnetcoreide100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
dsnap100.bpl, 10.0.2288.42451, C:\WINDOWS\system32\
dsnapcon100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
exceptiondiag100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
fusion.dll, 1.1.4322.2032, C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\
GDI32.dll, 5.1.2600.2818, C:\WINDOWS\system32\
gdiplus.dll, 5.1.3102.2180, C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82\
gds32.dll, 7.5.1.80, C:\WINDOWS\system32\
GLU32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
historyide100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
htmide100.bpl, 10.0.2329.20030, c:\program files\borland\bds\4.0\Bin\
HTMLDlgs100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
htmlhelp2100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
htmlide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
htmltidy100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
ibxml.dll, 7.5.1.80, C:\WINDOWS\system32\
ibxpress100.bpl, 10.0.2288.42451, C:\WINDOWS\system32\
idectrls100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
idefilefilters100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
IDETools100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
IMAGEHLP.DLL, 5.1.2600.2180, C:\WINDOWS\system32\
ImgUtil.dll, 6.0.2900.2180, C:\WINDOWS\system32\
imm32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
inet100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
inetdb100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
inetdbbde100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
inetdbxpress100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
Intraweb_80_100.bpl, , C:\WINDOWS\system32\
IntrawebDB_80_100.bpl, , C:\WINDOWS\system32\
iphlpapi.dll, 5.1.2600.2912, C:\WINDOWS\system32\
jscript.dll, 5.6.0.8831, C:\WINDOWS\system32\
kernel32.dll, 5.1.2600.2945, C:\WINDOWS\system32\
libtidy.dll, , C:\Program Files\Borland\BDS\4.0\Bin\
MFC42.DLL, 6.2.4131.0, C:\WINDOWS\system32\
midimap.dll, 5.1.2600.2180, C:\WINDOWS\system32\
mlang.dll, 6.0.2900.2180, C:\WINDOWS\system32\
MLCC100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
mpr.dll, 5.1.2600.2180, C:\WINDOWS\system32\
MSACM32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
msacm32.drv, 5.1.2600.0, C:\WINDOWS\system32\
MSASN1.dll, 5.1.2600.2180, C:\WINDOWS\system32\
mscoree.dll, 1.1.4322.2032, C:\WINDOWS\system32\
MSCORJIT.DLL, 1.1.4322.2032, C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\
mscorlib.dll, 1.1.4322.2032, c:\windows\microsoft.net\framework\v1.1.4322\
mscorlib.dll, , c:\windows\assembly\nativeimages1_v1.1.4322\mscorlib\1.0.5000.0__b77a5c561934e089_a6ed24c2\
mscorsn.dll, 1.1.4322.573, C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\
mscorwks.dll, 1.1.4322.2032, C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\
MSCTF.dll, 5.1.2600.2180, C:\WINDOWS\system32\
mshtml.dll, 6.0.2900.2963, C:\WINDOWS\system32\
mshtmled.dll, 6.0.2900.2937, C:\WINDOWS\system32\
msi.dll, 3.1.4000.2435, C:\WINDOWS\system32\
msimg32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
msimtf.dll, 5.1.2600.2180, C:\WINDOWS\system32\
msls31.dll, 3.10.349.0, C:\WINDOWS\system32\
msv1_0.dll, 5.1.2600.2180, C:\WINDOWS\system32\
MSVCI70.dll, 7.0.9466.0, C:\Program Files\Borland\BDS\4.0\Bin\
MSVCP60.dll, 6.2.3104.0, C:\WINDOWS\system32\
MSVCR70.dll, 7.0.9466.0, C:\Program Files\Borland\BDS\4.0\Bin\
MSVCR71.dll, 7.10.3052.4, C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\
msvcrt.dll, 7.0.2600.2180, C:\WINDOWS\system32\
msxml3.dll, 8.70.1113.0, C:\WINDOWS\system32\
msxml4.dll, 4.20.9818.0, C:\WINDOWS\system32\
NETAPI32.dll, 5.1.2600.2952, C:\WINDOWS\system32\
ntdll.dll, 5.1.2600.2180, C:\WINDOWS\system32\
ole32.dll, 5.1.2600.2726, C:\WINDOWS\system32\
oleacc.dll, 4.2.5406.0, C:\WINDOWS\system32\
oleaut32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
oledlg.dll, 5.1.2600.0, C:\WINDOWS\system32\
olepro32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
opengl32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
optimizeitide100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
plugview100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
pngfilt.dll, 6.0.2900.2937, C:\WINDOWS\system32\
PSAPI.DLL, 5.1.2600.2180, C:\WINDOWS\system32\
RASAPI32.DLL, 5.1.2600.2180, C:\WINDOWS\system32\
rasman.dll, 5.1.2600.2180, C:\WINDOWS\system32\
Rave65VCL100.bpl, , C:\WINDOWS\system32\
refactoride100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
RICHED20.dll, 5.30.23.1221, C:\WINDOWS\system32\
RPCRT4.dll, 5.1.2600.2180, C:\WINDOWS\system32\
rsaenh.dll, 5.1.2600.2161, C:\WINDOWS\system32\
rtl100.bpl, 10.0.2288.42451, C:\WINDOWS\system32\
rtutils.dll, 5.1.2600.2180, C:\WINDOWS\system32\
rxctl2006.bpl, 1.0.0.0, C:\WINDOWS\system32\
sanctuarylib.dll, , C:\Program Files\Borland\BDS\4.0\Bin\
SCRRUN.DLL, 5.6.0.8820, C:\WINDOWS\system32\
Secur32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
sensapi.dll, 5.1.2600.2180, C:\WINDOWS\system32\
serwvdrv.dll, 5.1.2600.0, C:\WINDOWS\system32\
SETUPAPI.dll, 5.1.2600.2180, C:\WINDOWS\system32\
shdoclc.dll, 6.0.2900.2180, C:\WINDOWS\system32\
shdocvw.dll, 6.0.2900.2987, C:\WINDOWS\system32\
shell32.dll, 6.0.2900.2951, C:\WINDOWS\system32\
SHFOLDER.dll, 6.0.2900.2180, C:\WINDOWS\system32\
SHLWAPI.dll, 6.0.2900.2937, C:\WINDOWS\system32\
soaprtl100.bpl, 10.0.2288.42451, C:\WINDOWS\system32\
startpageide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
stide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
StSDKOSEnvironment_01.dll, 8.0.0.58, C:\Program Files\Borland\StarTeam SDK 2005 R2\Lib\
StWinProfile.dll, 6.0.0.0, C:\Program Files\Borland\BDS\4.0\Bin\
sxs.dll, 5.1.2600.2180, C:\WINDOWS\system32\
system.data.dll, 1.1.4322.2032, c:\windows\assembly\gac\system.data\1.0.5000.0__b77a5c561934e089\
system.design.dll, 1.1.4322.2032, c:\windows\assembly\gac\system.design\1.0.5000.0__b03f5f7f11d50a3a\
system.design.dll, , c:\windows\assembly\nativeimages1_v1.1.4322\system.design\1.0.5000.0__b03f5f7f11d50a3a_ee37ca55\
system.dll, 1.1.4322.2032, c:\windows\assembly\gac\system\1.0.5000.0__b77a5c561934e089\
system.dll, , c:\windows\assembly\nativeimages1_v1.1.4322\system\1.0.5000.0__b77a5c561934e089_8aab158d\
system.drawing.dll, 1.1.4322.2032, c:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\
system.drawing.dll, , c:\windows\assembly\nativeimages1_v1.1.4322\system.drawing\1.0.5000.0__b03f5f7f11d50a3a_f4769dd9\
system.web.dll, 1.1.4322.2037, c:\windows\assembly\gac\system.web\1.0.5000.0__b03f5f7f11d50a3a\
system.windows.forms.dll, 1.1.4322.2032, c:\windows\assembly\gac\system.windows.forms\1.0.5000.0__b77a5c561934e089\
system.windows.forms.dll, , c:\windows\assembly\nativeimages1_v1.1.4322\system.windows.forms\1.0.5000.0__b77a5c561934e089_861171cb\
system.xml.dll, 1.1.4322.2032, c:\windows\assembly\gac\system.xml\1.0.5000.0__b77a5c561934e089\
system.xml.dll, , c:\windows\assembly\nativeimages1_v1.1.4322\system.xml\1.0.5000.0__b77a5c561934e089_437b57a5\
TAPI32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
tee100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
teedb100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
teeui100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
tlbview100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
tlib100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
todoide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
umdmxfrm.dll, 5.1.2600.0, C:\WINDOWS\system32\
URLMON.DLL, 6.0.2900.2960, C:\WINDOWS\system32\
USER32.dll, 5.1.2600.2622, C:\WINDOWS\system32\
USERENV.dll, 5.1.2600.2180, C:\WINDOWS\system32\
uxtheme.dll, 6.0.2900.2180, C:\WINDOWS\system32\
vcl100.bpl, 10.0.2288.42451, C:\WINDOWS\system32\
vclactnband100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
vcldb100.bpl, 10.0.2288.42451, C:\WINDOWS\system32\
vcldbx100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
vcldesigner100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
vclhie100.bpl, 10.0.2151.25345, C:\Program Files\Borland\BDS\4.0\Bin\
vclib100.bpl, , C:\WINDOWS\system32\
vclide100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
vclie100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
vcljpg100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
vclmenudesigner100.bpl, 10.0.2151.25345, c:\program files\borland\bds\4.0\Bin\
VclSmp100.bpl, 9.0.1655.26747, C:\WINDOWS\system32\
vclx100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
version.dll, 5.1.2600.2180, C:\WINDOWS\system32\
vjscor.dll, 1.1.4322.0, c:\windows\assembly\gac\vjscor\1.0.5000.0__b03f5f7f11d50a3a\
vjscor.dll, , c:\windows\assembly\nativeimages1_v1.1.4322\vjscor\1.0.5000.0__b03f5f7f11d50a3a_3f9de9ad\
vjslib.dll, , c:\windows\assembly\gac\vjslib\1.0.5000.0__b03f5f7f11d50a3a\
vjslib.dll, , c:\windows\assembly\nativeimages1_v1.1.4322\vjslib\1.0.5000.0__b03f5f7f11d50a3a_90aaa79b\
vjsnativ.dll, 1.1.4322.0, C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\
vport_r_6.dll, , C:\Program Files\Borland\BDS\4.0\Bin\
wdmaud.drv, 5.1.2600.2180, C:\WINDOWS\system32\
webdsnap100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
websnap100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
win32debugide100.bpl, 10.0.2288.42451, C:\Program Files\Borland\BDS\4.0\Bin\
win32debugproide100.bpl, 10.0.2288.42451, c:\program files\borland\bds\4.0\Bin\
winhttp.dll, 5.1.2600.2180, C:\WINDOWS\system32\
wininet.dll, 6.0.2900.2937, C:\WINDOWS\system32\
winmm.dll, 5.1.2600.2180, C:\WINDOWS\system32\
winspool.drv, 5.1.2600.2180, C:\WINDOWS\system32\
WINTRUST.dll, 5.131.2600.2180, C:\WINDOWS\system32\
WLDAP32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
WS2_32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
WS2HELP.dll, 5.1.2600.2180, C:\WINDOWS\system32\
Wship6.dll, 5.1.2600.2180, C:\WINDOWS\system32\
wsock32.dll, 5.1.2600.2180, C:\WINDOWS\system32\
xmlrtl100.bpl, 10.0.2151.25345, C:\WINDOWS\system32\
xpsp2res.dll, 5.1.2600.2180, C:\WINDOWS\system32\
QC Entry 35325

-Create a new VCL project
-Paste in this:
class PACKAGE TScrollBox1 : public TScrollBox
{
public:
__fastcall TScrollBox1(TComponent* Owner):TScrollBox(Owner){};
};
-Build
//exp:
No errors
//act:
[Linker Error] Error: Unresolved external '__fastcall Forms::TScrollBox::PaintWindow(void *)' referenced from C:\DOCUMENTS AND SETTINGS\USER\MY DOCUMENTS\BORLAND STUDIO PROJECTS\DEBUG_BUILD\UNIT1.OBJ

(NOTE: You'll probably want to make sure that you create an instance of TScrollBox1. Something like this will do:

delete new TScrollBox1(0);

QC #:

Date Reported:

Area:

41669

3/2/2007

VCL\Emulation Classes

Description:

Steps:

[QC Short Description]
TVarRec does not support WideString and __int64

[QC Description]
Unlike in delphi, C++ does not support WideString and __int64 values for TVarRec. It makes it impossible to use these kinds of values in functions expecting an OpenArray, like Format() and WideFormat().
QC Entry 41669

C++ version: WideString Test = L"World"; __int64 TestInt = 281474976710655LL; ShowMessage(WideFormat("Hello %s - %d", ARRAYOFCONST((Test, TestInt)))); Does not work: > [C++ Error] Unit1.cpp(17): E2285 Could not find a match for 'OpenArray<TVarRec>::OpenArray(WideString,__int64)' > [C++ Error] Unit1.cpp(17): E2285 Could not find a match for 'OpenArrayCount<TVarRec>::OpenArrayCount(WideString,__int64)' > [C++ Error] Unit1.cpp(17): E2285 Could not find a match for 'WideFormat(char *,undefined,undefined)' Delphi version: var Test: WideString; TestInt: Int64; begin Test := 'World'; TestInt := 281474976710655; ShowMessage(WideFormat('Hello %s - %d', [Test, TestInt])); end; Work as expected.

QC #:

Date Reported:

Area:

2259

9/3/2002

VCL\Emulation Classes

Description:

Steps:

[QC Short Description]
Add no-throw swap() method to AnsiString

[QC Description]
This would make it possible to write exception-safe code with AnsiString that uses the swap idiom. While it is possible to use std::string, it is inconvenient with code that must interface the VCL anyway.
QC Entry 2259

QC #:

Date Reported:

Area:

4582

5/27/2003

VCL\Emulation Classes

Description:

Steps:

[QC Short Description]
AnsiString::SetLength() can throw EAccessViolation instead of EOutOfMemory
[Verified in BCB6]
[QC Description]
When passing large values near MaxInt to th
e SetLength() method, it throws an EAccessViolation instead of the expected EOutOfMemory.
QC Entry 4582

AnsiString S; S.SetLength(MaxInt);

QC #:

Date Reported:

Area:

19384

4/7/1997

Debugger\CPU

Description:

Steps:

In the Windows 95 High Contrast Black color scheme, the CPU View is unreadable -- shows up as black on black. [QC Entry 19384]

Switch your color scheme to windows 95 high contrast black.
Have a good stiff drink so you can stand to look at the colors.
Bring up the IDE and look in the CPU view.
Click around a bit so you can see that things highlight, but the underlying text is unreadable.

Note: to reproduce this on XP, change the Color of "3D Objects" to black (and the font color to white).

QC #:

Date Reported:

Area:

16309

9/28/2005

Debugger\Exceptions

Description:

Steps:

[QC Short Description]
Add stop in assertion functionality

[QC Description]
I would like the debugger to stop on assertions, just like it does on exceptions, controlled by a switch.

If it was possible I'd also like to be given the option of ignoring the assertion altogether, that is skip the call to abort (or whatever it is that terminates the process)
QC Entry 16309

QC #:

Date Reported:

Area:

52501

9/25/2007

Linker

Description:

Steps:

[QC Short Description]
[ILINK32 Error] Fatal: Access violation. Link Terminated.

[QC Description]
This is a "MOTHER OF ALL BUGS" bug, a complete showstopper.
How can you deliver a product which cannot give any information about the possible source of the problem ?????
How can you expect a user to give you any relevant feedback ?????
How can you ignore this superbug for so long (2 years at least, since BDS2006) ?????
Ever considered to use a reporting tool such as EurekaLog ?????
Your linker is CRAP, CRAP, CRAP !!!!!!!
QC Entry 52501

I have just uploaded my example to the location you sent me.
File name : PS_LinkSet.zip
Password : CodeGear
There is a readme.txt file with some info.

QC #:

Date Reported:

Area:

32020

8/2/2006

Linker

Description:

Steps:

[QC Short Description]
Fatal Linker Error LME1598

[QC Description]
After a day of work, I am suddenly getting this output when linking my C++-Builder project:

[Linker Warning] Warning: BSS : 0x00000000 / 0x00400000
[Linker Warning] Warning: CODE : 0x0003dfc3 / 0x00400000
[Linker Warning] Warning: DATA : 0x00005be0 / 0x00400000
[Linker Warning] Warning: DEBNAM : 0x0002a947 / 0x00400000
[Linker Warning] Warning: DEBSYM : 0x0002d364 / 0x00400000
[Linker Warning] Warning: DEBTYP : 0x00058751 / 0x00400000
[Linker Warning] Warning: Extdef flags : 0x000003bb / 0x00004000
[Linker Warning] Warning: Extdefs : 0x00000eec / 0x00004000
[Linker Warning] Warning: External types : 0x00000734 / 0x00040000
[Linker Warning] Warning: Import symbols : 0x0000030c / 0x00100000
[Linker Warning] Warning: Line number cache : 0x000130b0 / 0x00060000
[Linker Warning] Warning: OBJ symbols : 0x000232dc / 0x00100000
[Linker Warning] Warning: Public GSX : 0x00001c4c / 0x000c0000
[Linker Warning] Warning: Public types : 0x000012f8 / 0x00080000
[Linker Warning] Warning: Publics : 0x0000feac / 0x000c0000
[Linker Warning] Warning: SegRelocs : 0x0003ff20 / 0x00400000
[Linker Warning] Warning: StringBlock : 0x000008e6 / 0x00400000
[Linker Warning] Warning: TLS : 0x00000008 / 0x00400000
[Linker Warning] Warning: Type names : 0x00004393 / 0x00100000
[Linker Warning] Warning: UNKNOWN : 0x00000006 / 0x00400000
[Linker Warning] Warning: Virdefs : 0x00001c4c / 0x00020000
[Linker Warning] Warning: D:/Projekte/Eurocopter/Software/EADS/Debug_Build/Preform_EADS.ilc: 0x0018f000 / 0x03000000
[Linker Warning] Warning: D:/Projekte/Eurocopter/Software/EADS/Debug_Build/Preform_EADS.ild: 0x0002b000 / 0x03000000
[Linker Warning] Warning: D:/Projekte/Eurocopter/Software/EADS/Debug_Build/Preform_EADS.ilf: 0x00270000 / 0x03000000
[Linker Warning] Warning: D:/Projekte/Eurocopter/Software/EADS/Debug_Build/Preform_EADS.ils: 0x00379000 / 0x03000000
[Linker Warning] Warning: D:/Projekte/Eurocopter/Software/EADS/Debug_Build/Preform_EADS.tds: 0x005d0000 / 0x06000000
[Linker Warning] Warning: Extdef flags : 0x00000000 / 0x00004000
[Linker Warning] Warning: Extdefs : 0x00000000 / 0x00004000
[Linker Warning] Warning: Import symbols : 0x00000000 / 0x00100000
[Linker Warning] Warning: OBJ symbols : 0x00000784 / 0x00100000
[Linker Warning] Warning: Public GSX : 0x00000000 / 0x000c0000
[Linker Warning] Warning: Publics : 0x00000000 / 0x000c0000
[Linker Warning] Warning: StringBlock : 0x00000009 / 0x00400000
[Linker Warning] Warning: Virdefs : 0x00000000 / 0x00020000
[Linker Warning] Warning: unknown heap name : 0x03000000 / 0x03000000
[Linker Fatal Error] Fatal: Error detected (LME1598)
[Linker Fatal Error] Fatal: Access violation. Link terminated.

Obviously not being able to link my project is a show stopper. Restarting the BDS did not help. Neither did deleting the object .obj files.
QC Entry 32020

open attached BigProject.cbproj F9 to build and run (takes over an hour to compile) Exp: Clean build and run Act: Clean compile, then: [ILINK32 Error] Fatal: Error detected (LME1511) ... [ILINK32 Warning] Warning: unknown heap name : 0x03000000 / 0x03000000 [ILINK32 Error] Fatal: Error detected (LME1744) [ILINK32 Error] Fatal: Access violation. Link terminated.

QC #:

Date Reported:

Area:

1737

7/7/2002

Resourcing\BRCC/BRCC32

Description:

Steps:

[QC Short Description]
brc32 does not work when adding an .rc file to a dll

[QC Description]
Attempting to use brc32 to add an .rc file with resources to an aleady created DLL does not work although no error message is reported.

This works fine in Bcb4 but is broken in Bcb5

Also of note from the comments:

This is not just for dll. It is the same for exe files.
If you try this line brc32 main.res main.exe you will see that it's not working.
What brc32 is doing behind the curtain is this:

ilink32 -Rr ,main.exe,,,,main.res

And this does not work. So in fact it is the ilink32 to blame. The
replace resources (-Rr) option is not working. That is too bad.
QC Entry 1737

// added new steps (old steps in commet)
// build a little dll
1. bcc32 -tWD dllmain.cpp
2. (using windows explorer) hover over dllmain.dll
//exp and res: no mention of Company or Description in tooltip

// compile resource and bind it to dll :
3. brc32 -I<path to Dexter>\include testbrc.rc dllmain.dll
4. hover over dllmain.dll
//exp : mention of Company or Description in tooltip
//res : no mention

// ok force the linker to replace the resource (-Rr)
5. ilink32 -Rr , dllmain.dll, , , , testbrc.res
6. hover over dllmain.dll
//exp : mention of Company or Description in tooltip
//res : still no mention

// use brute force
7. ilink32 -Tpd dllmain.obj c0d32, dllmain.dll, , import32.lib cw32.lib, , testbrc.RES
8. hover over dllmain.dll
//exp and res: Company or Description in tooltip

This essentially renders brc32.exe useless and shows that ilink's -Rr switch is busted

QC #:

Date Reported:

Area:

30234

6/17/2006

ActiveX

Description:

Steps:

[QC Short Description]
TWordApplication: Different behaviour Delphi/C++Builder (EVENTS)

[QC Description]
Different behaviour Delphi/C++Builder (EVENTS)

The following events are tested with either a
Delphi and C++Builder test application. Delphi
works well, but C++Builder not. Main problem is
that event
OnWindowSelectionChange
is ignored. Additionally, there is one Debugger
Exception Notification. When the C++Builder app
is running outside the IDE,
OnWindowBeforeDoubleClick
OnWindowBeforeRightClick
are ignored, too:

OnWindowActivate ............ - works
OnWindowBeforeDoubleClick ... - unknown due to Exception OnWindowBeforeRightClick
OnWindowBeforeRightClick .... - Debugger Exception Notification
Project ... raised exception class
EVariantTypeCastError with message 'Could not convert
variant of type (ByRef Boolean) into type (ByRef Smallint)'.
OnWindowDeactivate .......... - works
OnWindowSelectionChange...... - IGNORED (works well with Delphi)
OnWindowSize................. - works
QC Entry 30234

--------- UPDATe ---------
Download attached tiburingimported C++ app
Run with the steps below. If you need a VM with XP, let me know. I think I could set up a TP tree with it if needed.
Same problems as described below

<QA: See Comments>
------ ORIGINAL -----------
Pls. run the attached demos, one for C++Builder
and one for Delphi. Both demos are the same,
C++Builder uses the "Borland C++Builder Office
XP Servers Package"
and
Delphi uses "Microsoft Office XP Sample
Automation Server Wrapper Components".

There is a memo on each form which explains the steps:

1. Press "Connect"
WORD is started
Open a new document
Type some chars on different lines
2. You will see the corresponding events triggered,
BUT compared with Delphi with M A N Y PROBLEMS:
OnWindowActivate ............ - works
OnWindowBeforeDoubleClick ... - unknown due to Exception OnWindowBeforeRightClick
OnWindowBeforeRightClick .... - Debugger Exception Notification
Project ... raised exception class
EVariantTypeCastError with message 'Could not convert
variant of type (ByRef Boolean) into type (ByRef
Smallint)'
OnWindowDeactivate .......... - works
OnWindowSelectionChange...... - IGNORED (works well with Delphi)
OnWindowSize................. - works

QC #:

Date Reported:

Area:

24676

2/9/2006

ActiveX\IDE\Wizards\ActiveX Control

Description:

Steps:

[QC Short Description]
Missing wizard to Generate an ActiveX control from a VCL control

[QC Description]
1 - Cannot find any Active X control wizard in "C++ Builder Projets | ActiveX" tool palette.

2 - Documentation mentions this wizard in several places although it never gives much detail about it.

3 - In the "TActiveXControl Class" documentation page, the link "Generating an ActiveX Control from a VCL Control" near the bottom of the page is pointing to a missing page/document.
QC Entry 24676

1 - From "C++Builder Projets | ActiveX" tool palette, create an ActiveX library. 2 - same tool palette gives then access to several wizards but no "ActiveX Control" wizard. I tried the other wizards but I don't get what I need from them.

QC #:

Date Reported:

Area:

55012

11/19/2007

ActiveX\Type Library Editor

Description:

Steps:

[QC Short Description]
COM object implementation doesn't generated after IDE restart

[QC Description]
see steps to reproduce
QC Entry 55012

Open attached project
double click on project6.tlb
right click on IZTest
choose New->Method
give new method a name
note that new method was not added to ZTestingImpl unit

----------- UPDATE ------------
After opening the .ridl file and adding the new method, I then do a refresh button click. I get the error:
[Type Library Editor] Project6.ridl(1): Unable to update language source of 'Project6.ridl'
NOTE: I go back to do it a second time and the file appears to be updated

It seems time related though. I do find that once I go to ZTestImpl.cpp, I do see an upate even though I get that error.

Then as I am searching through the rest of the files, the TypeLIbrary tab will magically clear itself and I cna then add as many new methods as I want - no error.

QC #:

Date Reported:

Area:

35142

10/12/2006

Midas\TDataSetProvider

Description:

Steps:

[QC Short Description]
TBaseProvider::DoOnUpdateData not virtual

[QC Description]
The documentation suggests overriding this method in descendants to perform class-specific actions. However, because the method is not virtual, this cannot be done.
QC Entry 35142

1: browse to:- ms-help://borland.bds4/bds4win32api_cpp/html/CPPWin32_ProviderTBaseProviderDoOnUpdateDataMethod.htm The documentation says (in german amd english): "berschreiben Sie diese Methode, um als Reaktion auf Aktualisierungsanforderungen klassenspezifische Aktionen auszuf hren." "Override this method to perform class-specific actions in response to update requests." 2: Examine the header file "bds\4.0\include\vcl\provider.hpp" void __fastcall DoOnUpdateData(TPacketDataSet* Delta); 3: Note that the function is NOT defined as virtual and thus cannot be overridden in the desired way. Please now don't change the documentation but add the "virtual" in the code!!

QC #:

Date Reported:

Area:

18566

10/18/1999

Tools CL\ImpLib

Description:

Steps:

implib -a option doesn't put the leading underscore on all symbols in the DLL in all cases, whereas impdef does. [QC Entry 18566]

[using IMPLIB alone:]
implib -a -c -f qtmlClient.lib qtmlClient.dll
tdump qtmlClient.lib | grep GetMovieBox
//res: (symbol is GetMovieBox with no leading '_')
00CEF0 THEADR GetMovieBox
Internal Name: GetMovieBox

[Whereas, using IMPDEF/IMPLIB combination works as expected:]
impdef -a -h qtmlClient.def qtmlClient.dll
grep GetMovieBox qtmlClient.def
//res:
_GetMovieBox = GetMovieBox

implib -a -c -f qtmlClient.lib qtmlClient.def
tdump qtmlClient.lib | grep GetMovieBox
//res:
00CFA0 THEADR _GetMovieBox
Internal Name: _GetMovieBox
Imported name: GetMovieBox

QC #:

Date Reported:

Area:

52308

9/20/2007

Compiler

Description:

Steps:

[QC Short Description]
"Internal compiler error" when use global array in cpp file from c file

[QC Description]
C++builder 2007 11.0.2804.9245

I use a global array, which is defined in a c file, from a cpp file. When I build the Debug target, It always said:

[BCC32 Error] unitMain.cpp(37): F1004 Internal compiler error at 0x4faec22 with base 0x4f20000
QC Entry 52308

C++builder 2007 11.0.2804.9245 1, I define a global arry in a c file: char g_array[][100] = {"unk", "L1", "L2", "L3", "gate", "socks4", "socks5", "tunnel", "ssl", "smtp"}; 2, and declare it in the h file: #ifdef __cplusplus extern "C" { #endif extern char g_array[][100]; #ifdef __cplusplus } #endif 3, I use it in a cpp file: sprintf(buf, g_array[1]); 4, When I build the Debug target, It shows: [BCC32 Error] unitMain.cpp(37): F1004 Internal compiler error at 0x4faec22 with base 0x4f20000

QC #:

Date Reported:

Area:

51641

9/6/2007

Compiler\C++

Description:

Steps:

[QC Short Description]
Memory leak on temporary instantiation/destruction in function call with __property and two or more parameters

[QC Description]
Properties passed to functions as arguments that need to create temporaries will produce a memory leak if there are two or more parameters passed.

This can leak a lot of memory fast in a looping condition.

00401D01 E872300600 call $00464d78
TestMLeakFrm.cpp.53: Rogue<TA>(B.A,B);
00401D06 66C745B80C00 mov word ptr [ebp-$48],$000c
00401D0C 8D55A0 lea edx,[ebp-$60]
00401D0F 52 push edx
00401D10 8D4DEC lea ecx,[ebp-$14]
00401D13 51 push ecx
00401D14 E8F3000000 call TB<TA>::GetA()
00401D19 83C408 add esp,$08
00401D1C 8D45EC lea eax,[ebp-$14]
00401D1F 50 push eax
00401D20 FF45C4 inc dword ptr [ebp-$3c]
00401D23 8D55E0 lea edx,[ebp-$20]
00401D26 52 push edx
00401D27 E824020000 call TC<TA>::TC<TA>(const TA &)
00401D2C 83C408 add esp,$08
00401D2F FF45C4 inc dword ptr [ebp-$3c]
00401D32 8D45E0 lea eax,[ebp-$20]
00401D35 8D55A0 lea edx,[ebp-$60]
00401D38 E8FB050000 call Rogue<TA>(const tc<ta> &,tb<ta> &)
00401D3D FF4DC4 dec dword ptr [ebp-$3c]
00401D40 6A02 push $02
00401D42 8D4DE0 lea ecx,[ebp-$20]
00401D45 51 push ecx
00401D46 E8B9020000 call TC<TA>::~TC<TA>()
00401D4B 83C408 add esp,$08
TestMLeakFrm.cpp.54: Rogue<AnsiString>(Edit1->Text,B1);
00401D4E 66C745B81800 mov word ptr [ebp-$48],$0018
00401D54 8D45D8 lea eax,[ebp-$28]
00401D57 E838030000 call System::AnsiString::AnsiString()
00401D5C 8BD0 mov edx,eax
00401D5E FF45C4 inc dword ptr [ebp-$3c]
00401D61 6A04 push $04
00401D63 53 push ebx
00401D64 6864030000 push $00000364
00401D69 E8D61D0000 call $00403b44
00401D6E 8B8364030000 mov eax,[ebx+$00000364]
00401D74 E87F9D0400 call Controls::TControl::GetText()
00401D79 8D55D8 lea edx,[ebp-$28]
00401D7C 52 push edx
00401D7D 8D4DCC lea ecx,[ebp-$34]
00401D80 51 push ecx
00401D81 E88A030000 call TC<System::AnsiString>::TC<System::AnsiString>(const System::AnsiString &)
00401D86 83C408 add esp,$08
00401D89 FF45C4 inc dword ptr [ebp-$3c]
00401D8C 8D45CC lea eax,[ebp-$34]
00401D8F 8D5598 lea edx,[ebp-$68]
00401D92 E831060000 call Rogue<System::AnsiString>(const TC<System::AnsiString> &,TB<System::AnsiString> &)
00401D97 FF4DC4 dec dword ptr [ebp-$3c]
00401D9A 6A02 push $02
00401D9C 8D4DCC lea ecx,[ebp-$34]
00401D9F 51 push ecx
00401DA0 E81F040000 call TC<System::AnsiString>::~TC<System::AnsiString>()
00401DA5 83C408 add esp,$08
QC Entry 51641

Download and open the attached project
F9 to build and run

Exp: Each constructed TA will be destructed:
TA(100) constructed
TA(300) constructed
TA(300) destructed
TA(100) destructed

Act: Default constructed TA is destructed, but temporary copy-constructed TA is not:
TA(100) constructed
TA(300) constructed
TA(100) destructed

or

During debug, break at the function call to Rogue, and observe the CPU view.

See see description for result. ~TA() is not called.

QC #:

Date Reported:

Area:

40780

2/17/2007

Compiler\C++

Description:

Steps:

[QC Short Description]
Internal compiler error using template type definition

[QC Description]
An internal compiler error will result when trying to create a object from a template class that contains a template type definintion.
QC Entry 40780

[Top 10] 15 Votes

bcc32 raid245898.cpp

exp:

Clean compile

Act:

CodeGear C++ 5.A0 for Win32 Copyright (c) 1993, 2007 CodeGear
raid245898.cpp:
Fatal F1004 raid245898.cpp 11: Internal compiler error at 0x410edc with base 0x4
00000 in function main()
Fatal F1004 raid245898.cpp 11: Internal compiler error in function main()

QC #:

Date Reported:

Area:

37180

11/30/2006

Compiler\C++

Description:

Steps:

[QC Short Description]
Virtual Method Tables failing to resolve to correct implementation of virtual function with multiple inheritance

[QC Description]
Given: A parent class P that inherits from TFrame and from a virtual base class V with pure virtual method x(), parent class P implements the method x()

Given: A child class C bar that inherits from P

Given: A child class OverrideC that inherits from P and overrides the method x()

At runtime I store instatiations of the parent, and children in a TList, and call x() as a notification of an update event to all registered listeners stored in the list. The real problem that arises is that the overriden version of x() from child OverrideC is NEVER called.

In the attachment you will find 2 sample projects. One is a vcl TFrame based implementation that demonstrates the problem found above. One is a simple console app that has no problem with the function resolution. I am not sure if this difference is caused by the number of methods in a TFrame versus the 2 functions in my sample console object.
QC Entry 37180

// old steps in comment

1. bcc32 -tCV 243794.cpp
2. 243794.exe

//exp :
Call from pointer to CppChild: TCppChild::VirtualFunction()
Call same object from pointer to Interface class (works properly witn C++ multiple inheritance): TCppChild::VirtualFunction()
Call from pointer to VclChild: TVclChild::VirtualFunction()
Call same object from pointer to Interface class (VCL MI kills virtual function call): TVclChild::VirtualFunction()

//res :
Call from pointer to CppChild: TCppChild::VirtualFunction()
Call same object from pointer to Interface class (works properly witn C++ multiple inheritance): TCppChild::VirtualFunction()
Call from pointer to VclChild: TVclChild::VirtualFunction()
Call same object from pointer to Interface class (VCL MI kills virtual function call): TVclMI::VirtualFunction() // <-- note this one is off

QC #:

Date Reported:

Area:

28082

4/26/2006

Compiler\C++

Description:

Steps:

[QC Short Description]
Fails to compile const expression when it should compile

[QC Description]
Hello,
given the C file below the expression
objv += 2;
does not compile for
char * const objv[]
(see someFct2).

However, for the equivalent definition of objv (see someFct3)
char * const * objv
it does - as well it should.

For completeness the ancient (K&R) style definition is included, too (see someFct1) - maybe it helps you locating the problem.

Best regards
Helmut Giese

<sysop>
The function in question compiles without error using gcc and Comeau, so I believe that this should be investigated.
</sysop>
QC Entry 28082

bcc32 -c 240309.c

exp: compile without error

act:

Error E2024 240309.c 15: Cannot modify a const object in function someFct2

QC #:

Date Reported:

Area:

4438

5/14/2003

Compiler\C++

Description:

Steps:

[QC Short Description]
Nested template class, with templated base class instantiated with deduced typename fails

[QC Description]

The following code (which compiles with gcc 3.2, vc7, vc7.1) fails to compile.

struct o
{
typedef int pos;
};

template <typename T>
struct m
{};

template<typename V>
struct A
{
template< typename Other >
struct B
: m<typename Other::pos>
{
};
};

int main(int, char**)
{
A<int>::B<o> a;
}


giving,

Error E2402 nested_template_classes.cpp 15: Illegal base class type: formal type 'm<typename Other::pos>' resolves to 'm<typename Other::pos>' in function main(int,char * *)


The nested template classes, and the deduced typename are necessary to reproduce the problem


QC Entry 4438

1. bcc32 -c 237279.cpp


//exp : clean compile
//res :
Error E2402 237279.cpp 15: Illegal base class type: formal type 'm<typename Other::pos>' resolves to 'm<typename Other::
pos>' in function main(int,char * *)

QC #:

Date Reported:

Area:

9285

10/8/2004

Compiler\C++

Description:

Steps:

[QC Short Description]
_di_IHelpManager cannot be instantiated

[QC Description]
When declaring an instance of _di_IHelpManager, the compiler produces an error inside of the DelphiInterface class.

IHelpManager declares a Release(int) method, but it also inherits a Release(void) method from IUnknown. The compiler is never seeing the IUnknown::Release(void) method for IHelpManager, so it fails to compile when _di_IHelpManager is used.
QC Entry 9285

1. File | new | VCL forms app
2. double -click form
3. add this under #include <vcl.h>

#include <Helpintfs.hpp>

_di_IHelpManager HelpManager;

4. F9
.
//exp : clean compile
//res :
[C++ Error] systobj.h(259): E2193 Too few parameters in call to '_fastcall IHelpManager::Release(const int)'

QC #:

Date Reported:

Area:

33831

9/12/2006

Compiler\C++

Description:

Steps:

[QC Short Description]
IDE compiler does not support escaped defines

[QC Description]
The IDE compiler does not support escaped defines, but the external preprocessor (cpp32) and bcc32 both support it.

Eg:
A DATA=test(\"123\") define produces Illegal character messages from the IDE, but not from the command-line compiler.

See the Steps to reproduce for more detail.
QC Entry 33831

1. build attached project
//exp :clean build
//res errors
[C++ Error] File1.cpp(10): E2206 Illegal character '\' (0x5c)
[C++ Error] File1.cpp(10): E2380 Unterminated string or character constant
[C++ Error] File1.cpp(11): E2121 Function call missing )

QC #:

Date Reported:

Area:

40876

2/19/2007

Compiler\C++\Back End

Description:

Steps:

[QC Short Description]
codegen bug on returning int64

[QC Description]
sometimes when bcc32 compiles code returning 64-bit value and
optimization is on it generates invalid code corrupting DX register
using it as temporary register in order to clear the stack

below's snippet from real code

#include <string.h>
typedef unsigned __int64 ea_t;

#define BADADDR ea_t(-1)

struct llabel_t {
const char *name;
ea_t ea;
};

struct func_t {
int llabelqty;
llabel_t llabels[];

};

bool is_func_entry(func_t *);
void read_llabels(func_t *);

ea_t get_llabel_ea(func_t *pfn, const char *name)
{
if ( is_func_entry(pfn) )
{
read_llabels(pfn);
llabel_t *v = pfn->llabels;
for ( int i=0; i < pfn->llabelqty; i++,v++ )
if ( strcmp(v->name, name) == 0 )
return v->ea;
}
return BADADDR;

}

if compiled with bcc32 -O2 -pr -S (if -O2 -pr omitted you'll get
different code) you can see the following code generated:

?live16385@112: ; EBX = v, ESI = i
@7:
@11:
inc esi
add ebx,16
@6:
mov eax,dword ptr [esp]
cmp esi,dword ptr [eax]
jl short @5
;
; }
; return BADADDR;
;
?live16385@128: ;
@13:
@2:
mov eax,-1
mov edx,eax
;
; }
;
@14:
@10:
pop ecx
pop edx ; >>> here upper part of result became
corrupted!!! it uses couple of POP instead of add esp,8 <<<
pop ebp
pop edi
pop esi
pop ebx
ret
@@get_llabel_ea$qqrp6func_tpxc endp
@get_llabel_ea$qqrp6func_tpxc ends
_TEXT ends

QC Entry 40876

bcc32 -O2 -pr qc40876.cpp

qc40876

Exp:
output = 0x0123456789abcdef

Act: first 8 digits ar random - in recent test I got: 0x004180c089abcdef

Tested also with only -O2 and with only -pr, but only the combination of both parameters results in an error.

A project is also included for testing within the IDE (remove the comment on the getch() line). Results are the same as with command line.

See description for codegen info.

QC #:

Date Reported:

Area:

46548

5/25/2007

Compiler\C++\Back End

Description:

Steps:

[QC Short Description]
Internal Backend Error T928

[QC Description]
On compiling foo.cpp bcc32 will stop with "Internal backend error T928 compiling foo.cpp(22)"

Used command line: bcc32 -c foo.cpp

QC Entry 46548

This is still present in Cogswell build 2696, but the error code is now T937.

workaround is to compile with source code debuggin on:
bcc32 -c -v foo.cpp

bcc32 -c foo.cpp

QC #:

Date Reported:

Area:

1315

5/20/2002

Compiler\C++\Back End

Description:

Steps:

[QC Short Description]
Back end error

[QC Description]
Posted by a user as a problem in BC++, this invalid code generates a back end error. in BCB6.

---------
C:\Projects\Lookat\temp3
>type test24.cpp

a(a)
void a;
{
a;
}

C:\Projects\Lookat\temp
>bcc32 -c test24
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
TEST24.CPP:
Warning W8054 TEST24.CPP 2: Style of function definition is now obsolete
Warning W8070 TEST24.CPP 6: Function should return a value in function a()
Internal backend error C6993 compiling TEST24.CPP(5)
*** 1 errors in Compile ***

C:\Projects\Lookat\temp
>
---------
QC Entry 1315

QC #:

Date Reported:

Area:

21926

12/4/2005

Compiler\C++\Front End

Description:

Steps:

[QC Short Description]
private typedefs leak through inheritance

[QC Description]
typedefs declared in a private section of a class are accessible in derived classes as if they were merely protected.

See sample code in steps for example.

They are correctly diagnosed as inaccessible when looked up outside the class.
QC Entry 21926

bcc32 -c RAID238175.cpp

exp:
CodeGear C++ 6.10 for Win32 Copyright (c) 1993-2008 CodeGear
RAID238175.cpp:
Error E2247 RAID238175.cpp 13: 'base::hidden' is not accessible
*** 1 errors in Compile ***

act:

Clean Compile

QC #:

Date Reported:

Area:

19288

12/9/1998

Compiler\C++\Front End

Description:

Steps:

bcc32 reports wrong line number if type name in catch statement is incorrect.
[QC Entry 19288]

bcc32 bcb42736.cpp

bcc32 reports the following errors. Line number should be 7.

Error E2303 bcb42736.cpp 6: Type name expected in function main(int,char * *)
Error E2377 bcb42736.cpp 6: Catch statement missing ) in function main(int,char * *)

QC #:

Date Reported:

Area:

18387

1/25/2000

Compiler\C++\Front End

Description:

Steps:

The following code generates an invalid error: [C++ Error] Project1.cpp(20): E2232 Constant member ' ::szCompanyName'
in class without constructors.

#if 1
#define cLenName (( short) 32)
#define cLenCompanyName ((const short) 32)

#else
const int cLenName = 32;
const int cLenCompanyName = ((const short) 32);
#endif

typedef char tChar;
typedef struct
{
// destination information
tChar szToName [cLenName];
char szCompanyName [cLenCompanyName];
} Bug; [QC Entry 18387]

bcc32 79324.cpp
//res:
Error E2232 79324.cpp 15: Constant member ' ::szCompanyName' in class without constructors

bcc32 -DWORKS 79324.cpp
//res: no error

QC #:

Date Reported:

Area:

19429

7/20/1998

Compiler\C++\Front End\Diagnostics

Description:

Steps:

Plum Hall test shows that BCC32 fails WP Nov97 3.9 (7) [QC Entry 19429]

[ANSI]
bcc32 -c bcb37625.cpp
Result: no diagnostic

Expected result:
Error bcb37625.cpp(4) : cannot convert int(*)[2] to int *[]

QC #:

Date Reported:

Area:

21572

11/19/2005

Compiler\C++\Front End\Diagnostics

Description:

Steps:

[QC Short Description]
incorrect STL warning

[QC Description]
The std::sort function produces an incorrect warning about the input beeing an output iterator when passed vector::iterator. See steps for an example.
QC Entry 21572

- create file foo.cpp #include <vector> #include <algorithm> using namespace std; int main() { vector<int> foo; sort(foo.begin(),foo.end()); } - compile with bcc32 -w foo.cpp - produces a warning, although the code is ok

QC #:

Date Reported:

Area:

21823

11/30/2005

Compiler\C++\Front End\Diagnostics

Description:

Steps:

[QC Short Description]
F1004 error after common coding [error?]

[QC Description]
Not sure if fully qualified names are allowed by the standard in the declaration of a class, but new to build 2158, this now results in an internal compiler error:

class TForm1 : public TForm
{
public:
__fastcall TForm1(TComponent* Owner);
int TForm1::Test();
};

Previous builds of DeXter have allowed this construction, compiling without comment.

Appears to be reverted to previous action in 10.0.2158.40629.

According to Alex Bakaev, this should raise a diagnostic from the compiler, so I guess this is still a bug.
QC Entry 21823

File | New | VCL Forms Application - C++ Add this function to TForm1 cpp file: int TForm1::Test(){} Copy the line to the public: section of the TForm1 declaration in the .h file: int TForm1::Test(); Forget to remove the namespace quallifier. Compile [C++ Fatal Error] Unit1.h(18): F1004 Internal compiler error at 0xa9405f9 with base 0xa8c0000 In 10.0.2158.40629 this no longer errs, but compiles without a diagnostic, but Comeau complains that "qualified name is not allowed in member declaration".

QC #:

Date Reported:

Area:

4344

2/18/2005

Compiler\C++\Front End\Exception Handling

Description:

Steps:

Received "E2202 Goto to into an Exception Handler is not allowed" error when the code has if{} construct with "goto" commands.

[QC Description]
I have problems compiling code as below, although it is a legal code structure with correct syntax.

Compiling it using the 1. version of the if()-construct, the compiler always produces errors "E2202 Goto zu Exception-Behandlungsroutine nicht zulässig" (Goto to Exception-Handler not allowed).
Using the 2. version of the if()-construct instead, compilation succeeds.

So it seems it depends on the structure (using brackets for the if/for/while statments in connection with jumps by goto and the usage of exception handling).

compile the following:
//exp: clean compile
//res: compiler error E2202

int y;
void Button1Click()
{
try
{
LAB:
#ifndef WORKS
{
#endif
if (y)
goto LAB;
#ifndef WORKS
}
#endif
goto LAB;
}
catch (...)
{
}
}

---- old steps --------
1. copy the code below and compile.
2. 1. version of the if()-construct (you find in in the code of the description area) =>you will receive compiler errors (E2202)
3. Compile code with the 2. version of the if()- construct => compilation succeeds
4. Use other code structures (e.g. insert some for / while / if sections on several places) => compilation might also fail with error E2202.
-----

//void __fastcall TForm1::Button1Click(TObject *Sender)
Button1Click()
{
try
{
int x,y,z;

M01:
if(x==1)
goto M03;

M02:
for(int i=1; i<3; i++)
{
if(x==2)
goto M01;
}

M03:
do
{
x++;
} while(x<10);


//--- 1. Version ---
if(x==3)
{
if(y < 2)
{
goto M02;
}
else
{
goto M01;
}
}

/*--- 2. Version ---
if(x==3)
if(y < 2)
goto M02;
else
goto M01;
-------------------*/

if(x==4)
goto M01;

if(x==5)
goto M02;

} //try


catch (Exception &exception)
{
//MessageBox(NULL, exception.Message.c_str(), __FUNC__,
// MB_OK | MB_ICONERROR | MB_SYSTEMMODAL);
}
}
-----

QC #:

Date Reported:

Area:

18402

1/29/2000

Compiler\C++\Front End\Exception Handling

Description:

Steps:

This code shows a non-conformance with 15.5.1:
-- when unexpected throws an exception which is not allowed by the previously violated exception-specification, and std::bad_exception is not included in that exception-specification (15.5.2),

Example code:


/* 05-02-97 edj
BCB-6237
15.5.2 "If the exception-specification does not include the class
std::bad_exception then the function terminate() is called, otherwise
the thrown exception is replaced by an implementation-defined object
of the type std::bad_exception and the search for another handler will
continue at the call of the function whose exception-specification
was violated."

NOTE: This currently will not compile because std::bad_except is not
implemented.
*/
#ifdef __BORLANDC__
#include <except.h>
#else
#include <eh.h>
#include <exception>
#endif
#include <process.h>
#include <stdio.h>

int i = 0;

std::unexpected_handler oldunexpected;

void my_unexpected()
{
puts("here");
throw 1.02; // should generate bad_exception
}

void foo() throw (char, int, std::bad_exception)
{
if (++i == 500)
{
#pragma option -w-thr -w-rch
throw 17L;
#pragma option -wthr
#pragma option -w-thr -w-rch
exit((puts("failed"),1)); // shouldn't get here.
#pragma option -w-thr -wrch
}
else
foo();
}

int main()
{
oldunexpected = std::set_unexpected(my_unexpected);
try
{
foo();
exit((puts("failed"),1)); // shouldn't get here.
}
catch(std::bad_exception&)
{
return ((puts("passed"),0));
}
return ((puts("failed"),1)); // shouldn't get here.
} [QC Entry 18402]

bcc32 79767.cpp
79767.exe
//res:
here
here
...
here
here
passed (Win2000, crashes)

//exp:
here
passed

QC #:

Date Reported:

Area:

18397

1/27/2000

Compiler\C++\Front End\Exception Handling

Description:

Steps:

Compiler causes the wrong object from an auto_ptr to be destroyed, if the object throws an exception from its constructor. [QC Entry 18397]


bcc32 79570.cpp
79579.exe

// act:
Creating this: 8204724
Creating this: 8205076
Exception this: 8205076
Destroying this: 8205076 // <-- destructor of incomplete object called
Some error

// exp:
Creating this: 8204724
Creating this: 8205076
Exception this: 8205076
Destroying this: 8204724 // <--- !!
Some error

QC #:

Date Reported:

Area:

4467

5/17/2003

Compiler\C++\Front End\Exception Handling

Description:

Steps:

old description in comment

return statement in a try block with a __finally block causes register corruption. Original test case crashed because of it.

requires -O2 and __fastcall

old steps in comment

1. bcc32 231177.cpp
2. 231177.exe

//exp : output where the lines match (first number is an address of an object)
1245064 : 10
1245064 : 10

//res : second line is all garbage
1245064 : 10
4284404 : 1532845663


// retry with any of the following options and watch this test pass
-DNOO2
-DNOFASTCALL
-DNOTRYRETURN

QC #:

Date Reported:

Area:

18654

12/21/1999

Compiler\C++\Front End\Exception Handling

Description:

Steps:

Compiler generates wrong code for "goto", "break" or "continue" inside "try". [QC Entry 18654]

Please look at this two code examples. The only diference between them is "goto" statement. In my opinion code generated for both examples should be the same, but it isn't. In the first example compiler generates one additional instruction (and this is the correct behavior):
mov word ptr [ebp-0x34], 0x0000

In the second example compiler forgets to "pop" the exception handling frame; it fails to emit
mov word ptr [ebp-0x34], 0x0000

EXAMPLE 1
==========
try
{
ShowMessage("Inside try");
} // <- code is generated for this line: mov and jmp
catch (...)
{
ShowMessage("Inside catch");
}
ShowMessage("After try");

EXAMPLE 2
==========
try
{
ShowMessage("Inside try");
goto after_try; // <- only jmp is generated
}
catch (...)
{
ShowMessage("Inside catch");
}
after_try:
ShowMessage("After try");

EXAMPLE 3 (by Stefan Hoffmeister)
=================================
When you run that program, you will see

entering try+catch
inside try
outside try+catch
inside catch
and the "inside catch" is a tad bit wrong because we left the EH block some time ago already.

#include <iostream>
using std::cout;
void Test(void)
{
cout << "entering try+catch\n";
try
{
cout << " inside try\n";
goto OutOfTryCatchBlock;
}
catch(...)
{
cout << "inside catch\n";
{ char c; std::cin >> c; }
}
OutOfTryCatchBlock:
cout << "outside try+catch\n\n";
throw "Exception!";
}
#pragma argsused
int main(int argc, char* argv[])
{
Test();
return 0;
}
Example 4 (by Stefan Hoffmeister)
=================================
The problem also exists with "while", "do", "for" combined with "break" - for instance
for (;;)
{
try{ break; }
catch(...) { }
}

as well as "while", "do", "for" combined with "continue", for instance
int i = 0;
do
{
try
{
i++;
continue;
}
catch(...) { }
} while (i == 0);

QC #:

Date Reported:

Area:

15800

9/8/2005

Compiler\C++\Front End\Exception Handling

Description:

Steps:

[QC Short Description]
Exception thrown in constructor causes memory leak (affects all RTL_DELPHIRETURN classes -- AnsiString / WideString etc.)

[QC Description]
When an exception is thrown in a constructor which has an AnsiString / WideString / Currency (any classes in VCL declared with RTL_DELPHIRETURN) as parameter, the object which is being instantiated (by the 'new' keyword) will not be cleaned up, thus leaking memory the size of the object. In our case, our object is a 10MB char array. Each leak is 10MB in size.

If the parameter of LeakMe is changed to int / char * (or anything else for that matter) will cause the problem to go away. The discussions in Borland Newsgroup have concluded that it is in fact 100% reproducable and it will only be reproducable if a type cast is done by the compiler while the parameter is being passed into the constructor. If the parameter object is created prior to passing it into the constructor

e.g.
Fail:
new LeakMe("test"); // type cast from char * to AnsiString
Pass:
AnsiString TestStr = "test";
new LeakMe(TestStr);

the problem will go away.

Also, if LeakMe is derived from TObject:

class LeakMe : public TObject

the compiler seems to create the proper code as well.

Running the example below will cause the program to crash eventually. Windows will start resizing the virtual memory a few seconds into running it.

I'm guessing it's a compiler bug. Traced through the ASM code it generates and noticed for the failed case, the call to free memory is missing. Tested on both Borland's Free Compiler and BCB's built-in compiler.

This is most probably another one of Borland's many failed attempts to make C++ Builder compatible with Delphi.
QC Entry 15800

bcc32.exe -v -vG -c RAID231326.cpp

ilink32.exe -lDebug -v -Gn c0x32.obj vcl.bpi rtl.bpi bcbie.bpi vclx.bpi vclactnband.bpi dbrtl.bpi vcldb.bpi vcldbx.bpi bdertl.bpi dsnap.bpi dsnapcon.bpi adortl.bpi vclie.bpi websnap.bpi webdsnap.bpi xmlrtl.bpi inet.bpi inetdbbde.bpi inetdbxpress.bpi soaprtl.bpi dbexpress.bpi DbxCommonDriver.bpi dbxcds.bpi memmgr.lib sysinit.obj RAID231326.obj , 231326.exe , , cg32.lib import32.lib cp32mti.lib , ,

231326.exe

(codeguard log will show leaks)

QC #:

Date Reported:

Area:

18606

11/12/1999

Compiler\C++\Front End\Exception Handling

Description:

Steps:

When an exception is thrown during construction of an object, the destructor for that incomplete object should not be called. This code shows that the compiler does not always honor this rule:
#include <cstdio>
using std::puts;

bool pass = true;
struct AA{ AA(){ throw 1; } AA( const AA& ){} ~AA(){ pass = false; }};
struct BB{ BB(){} BB( const BB& mo ){} ~BB(){} };
struct CC{ CC( AA* p ){} CC( const CC& ){} ~CC(){}};
void bar( BB mo ){ try{ CC moo( new AA ); } catch( const int ){}}
int main()
{
BB mo;
bar( mo );
return pass? (puts( "passed" ), 0): (puts( "failed" ), 1);
} [QC Entry 18606]

bcc32 74516.cpp
74516.exe 1
//res:
main
BB ctor: 1245060
BB copy ctor: 1245016
test2
AA ctor: 10432916
AA dtor: 10432916
Exception in AA ctor
BB dtor: 1245016
BB dtor: 1245060

//exp:
main
BB ctor: 1245040
BB copy ctor: 1245024
test2
AA ctor: 3146544
Exception in AA ctor
BB dtor: 1245024
BB dtor: 1245040

QC #:

Date Reported:

Area:

18550

10/1/1999

Compiler\C++\Front End\Exception Handling

Description:

Steps:

A continue in a catch block (that is nested inside a for loop), where the catch argument is a class by value, causes that catch argument not to be destructed. Something like:
for (int i=0; i<1; i++)
{
try
{
throw foo();
}
catch( foo bar)
{
continue;
}
}

causes "bar" not to be destructed. [QC Entry 18550]

bcc32 72199.cpp
72199.exe

//act:
failed

//exp:
passed

QC #:

Date Reported:

Area:

18877

3/30/1999

Compiler\C++\Front End\Exception Handling

Description:

Steps:

When catching a Delphi style exception by catch (...), the exception object is not destructed correctly.


[QC Entry 18877]

[C++ Compiler Top Ten]

1. Create a new application and drop a button.
2. DblClick the button and write the following code.

AnsiString s = "x";
try {
int i = s.ToInt();
}
catch (...) {
}

3. Run

At exceptionHandled() in xx.cpp, the destructor is not called.
When catching the exception object by catch (Exception& e), the destructor is called.

QC #:

Date Reported:

Area:

18839

3/12/1999

Compiler\C++\Front End\Exception Handling

Description:

Steps:

The line number for the error in this code is off by one. Compiler reports error on line 3 when the error is on line 4.
int main()
{
try{}
catch(1){}
return 0;
} [QC Entry 18839]

bcc32 -c 46838.cpp
// exp: error below, but for line 4
// act:
Error E2303 46838.cpp 3: Type name expected in function main()
Error E2377 46838.cpp 3: Catch statement missing ) in function main()

QC #:

Date Reported:

Area:

19448

8/17/1998

Compiler\C++\Front End\Exception Handling

Description:

Steps:

Plum Hall tests of FDIS 15.4 (3) fail. [QC Entry 19448]

[ANSI]
bcc32 -c m15041.cpp
Result: no error
Expected: Error 9: exception specification for pf2_154Y33_z is less restrictive than pf_154Y33_z

QC #:

Date Reported:

Area:

19447

8/17/1998

Compiler\C++\Front End\Exception Handling

Description:

Steps:

Plum Hall tests of FDIS 15.4 (2) fail. [QC Entry 19447]

[ANSI]
bcc32 -c m15037.cpp
Result: no error
Expected: Error 3: redeclaration of pf differs in throw specification

QC #:

Date Reported:

Area:

19446

8/17/1998

Compiler\C++\Front End\Exception Handling

Description:

Steps:

Plum Hall test fails. Negative test of FDIS 15.3. [QC Entry 19446]

[ANSI]
bcc32 -c m15022.cpp
Result:
no error
Expected: incomplete type cannot be part of an exception declaration

QC #:

Date Reported:

Area:

19445

8/17/1998

Compiler\C++\Front End\Exception Handling

Description:

Steps:

Plum Hall test fails. Negative test of FDIS 15.4. If you follow all the little grammar rules through you'll see that a type-id can go to a class-specifier which basically means you can't put the ID of an incomplete class in the throw specification. [QC Entry 19445]

[ANSI]
bcc32 -c m15031.cpp
Result:
no error
Expected: incomplete type cannot be part of a throw specification.

QC #:

Date Reported:

Area:

19546

8/7/1997

Compiler\C++\Front End\Exception Handling

Description:

Steps:

Plumhall c++ _153Y31c_s

gcc3.4.4 executes fine


Plum Hall 4.0 code gets an error when it shouldn't. WP Dec96 15.1 (3).
[previous must fix]

[QC Entry 19546]

bcc32 -c 6741.cpp OR python runplumhall _153Y31c_s

CodeGear C++ 5.A0 for Win32 Copyright (c) 1993, 2007 CodeGear
\narrow\6741.cpp:
Error E2018 \narrow\6741.cpp 21: Cannot throw 'D *' -- ambiguous base class 'A'
in function main()
*** 1 errors in Compile ***

C:\TESTSCPP\bcc\harness\bcctests>

[ANSI]
bcc32 bcb6741.cpp
Result: Error bcb6741.cpp 21: Cannot throw 'D *' -- ambiguous base class 'A'

Expected Result: clean compile and when run 'passed'

QC #:

Date Reported:

Area:

19387

5/2/1997

Compiler\C++\Front End\Exception Handling

Description:

Steps:

DWP 15.4: "An exception-specification shall appear only on a function declarator in a function, pointer, reference or pointer to member declaration or definition. An exception-specification shall not appear in a typedef declaration." The code below, taken from the DWP, should report an error on the line:
typedef int (*pf)() throw(int); // ill-formed [QC Entry 19387]

bcc32 -c 6241.cpp



Result: no error
Expected result: error on indicated line


gcc3.4.4 gives the expected error
5.9.1, 5.9.0, 5.9.a does not report any errors

QC #:

Date Reported:

Area:

35369

10/17/2006

Compiler\C++\Front End\Exception Handling

Description:

Steps:

[QC Short Description]
Rethrowing an VCL based exception with "throw <variable>" causes an abnormal program termination.

[QC Description]
In C++ Builder 2006, an abnormal program termination occurs shortly after catching a rethrown exception.

That is, given the try/catch block:

try {
...
} catch (Exception &e) {
}

if the statement, 'throw e;', is added to the catch block, an abnormal program termination will occur.

Replacing 'throw e;' with 'throw;' works as intended.

Either:
A) 'throw e;' should be equivalent to 'throw;'
B) The compiler should balk at 'throw e;'
C) A more useful error message should occur indicating the problem, and allow the program to terminate gracefully.
QC Entry 35369

1. bcc32 -tCV -DVCL 242604.cpp
2. 242604.exe

//exp : app executes normally and returns 4
//res :
Abnormal program termination


// now retry without VCL based Exception

3. bcc32 242604.cpp
4. 242604.exe

//exp and res : app executes normally and returns 4

QC #:

Date Reported:

Area:

5122

7/9/2003

Compiler\C++\Front End\Exception Handling

Description:

Steps:

[QC Short Description]
Destructor is called if an object allocated from the heap throws in constructor.

[QC Description]
This happens only if involved from the Form constructor.
This happens in Builder 5 as well as in Builder 6.
There is no problem with automatic objects.
The problem with the destructor called on a partially constructed object is that program terminates if destructor throws. As the object was not fully constructed, it is likely destructor will cause an exception.
QC Entry 5122

1. Build and run attached app.
//exp : no destructor called on Test obj (exception thrown in constructor)
//res : destructor is called

2. Click button
//exp and res : no dtor is called
//note : that the button click handler has the same code as the Form ctor

QC #:

Date Reported:

Area:

1574

6/19/2002

Compiler\C++\Front End\Exception Handling

Description:

Steps:

[QC Short Description]
Stack unwinding with multiple inheritance

[QC Description]
Stack unwinding is not handled properly in obscure situations when an object is multiple-inherited and one of its base classes throws an exception in its constructor, and a temporary object is constructed in the member initialization list.

This bug only is seen if debugging (-v) is turned on.

This bug is present in BCB 3, 4, 5, and 6.

QC Entry 1574
[C++ Compiler Top Ten]

1. bcc32 -v 238482.cpp
2. 238482.exe

//exp :
Starting (but not completing) SErr::SErr for 12ff78
Passed
//res :
Starting (but not completing) SErr::SErr for 12ff78
In SErr::~SErr for 12ff78
Failed

QC #:

Date Reported:

Area:

4662

6/5/2003

Compiler\C++\Front End\Exception Handling

Description:

Steps:

[QC Short Description]
exception in loop

[QC Description]
Incorrect sequence catch.
see Steps
QC Entry 4662

void try_test() {
try {
for(int i = 0; ; i++) {
try {
break;
} catch(exception &e) { // we break to here
cout<<"exception in loop"<<endl;
if(i > 10)
throw;
}
}
ThrowMyException();
} catch(exception &e) {
cout<<"to catch a exception"<<endl;
}
}

1. bcc32 237281.cpp
2. 237281.exe
//exp :
to catch a exception

//res :
exception in loop
exception in loop
exception in loop
exception in loop
exception in loop
exception in loop
exception in loop
exception in loop
exception in loop
exception in loop
exception in loop
exception in loop
to catch a exception

QC #:

Date Reported:

Area:

1579

6/19/2002

Compiler\C++\Front End\Exception Handling

Description:

Steps:

[QC Short Description]
std::unhandled_exception never returns true in RTL DLL

[QC Description]
The library function std::unhandled_exception always returns false, even if the program is in the process of stack unwinding, but *only* with the DLL version of the RTL.

Statically linking to the RTL makes the std::unhandled_exception function work properly.

This bug is present in BCB 5 and 6.
QC Entry 1579

bcc32.exe -D_RTLDLL test.cpp
test.exe

This is what I get:
Failed

Which indicates that std::unhandled_exception returned false during stack unwinding.

QC #:

Date Reported:

Area:

5790

9/1/2003

Compiler\C++\Front End\Language

Description:

Steps:

[QC Short Description]
Aggregates can have private member functions

[QC Description]
Aggregate types are allowed to have private member functions (but not private data members), as the attached code the bcc32 5.6.4 compiler incorrectly rejects aggregates with private member functions.
QC Entry 5790


// comeau likes it
// broken in BCB6

// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and // distribute this software is granted provided this copyright notice appears // in all copies. This software is provided "as is" without express or implied // warranty, and with no claim as to its suitability for any purpose. // MACRO: BOOST_NO_PRIVATE_IN_AGGREGATE // TITLE: private in aggregate types // DESCRIPTION: The compiler misreads 8.5.1, treating classes // as non-aggregate if they contain private or // protected member functions. namespace boost_no_private_in_aggregate{ struct t { private: void foo(){ i = j; } public: void uncallable(); // silences warning from GCC int i; int j; }; int test() { t inst = { 0, 0, }; (void) &inst; // avoid "unused variable" warning return 0; } }

QC #:

Date Reported:

Area:

1573

6/19/2002

Compiler\C++\Front End\Language

Description:

Steps:

[QC Short Description]
Library: namespace std issues in stdio.h

[QC Description]
Several issues with namespace std are incorrect in stdio.h. In particular: putc, getc, ferror, and feof are not allowed to be macros.

The relevant parts of the ISO C++ Standard are: [17.4.1.2/4] - [17.4.1.2/6] (esp. see footnote 159); [C.2/1] - [C.2/7]; and [D.5]

This library bug is found in BCB 4, 5, and 6.
QC Entry 1573

bcc32 -c test.cpp

//exp : clean compile
//res :
Error E2272 test.cpp 8: Identifier expected in function main()
Error E2378 test.cpp 8: Return statement missing ; in function main()

QC #:

Date Reported:

Area:

10267

1/11/2005

Compiler\C++\Front End\Language

Description:

Steps:

[QC Short Description]
The compiler obligatorily converts member arrays to pointers

[QC Description]
The identifiers in this piece correspond to errors they generate. The message log is appended. The constructs used in this code do not compile mainly because the compiler does not recognize a member array as an array but it converts a reference to the member to the corresponding pointer. It does not happen with local arrays, global arrays and static arrays qualified by type name.

[C++ Warning] nocr.cpp(8): W8028 Temporary used to initialize 'E2034'
Full parser context
nocr.cpp(6): parsing: void testlocam()
[C++ Error] nocr.cpp(8): E2034 Cannot convert 'int *' to 'int[1]'
Full parser context
nocr.cpp(6): parsing: void testlocam()
[C++ Error] nocr.cpp(9): E2027 Must take address of a memory location
Full parser context
nocr.cpp(6): parsing: void testlocam()
[C++ Error] nocr.cpp(10): E2031 Cannot cast from 'int *' to 'int ( &)[1]'
Full parser context
nocr.cpp(6): parsing: void testlocam()
[C++ Error] nocr.cpp(11): E2285 Could not find a match for 'E2285<T,N>(int *)'
Full parser context
nocr.cpp(6): parsing: void testlocam()
[C++ Error] nocr.cpp(12): E2285 Could not find a match for 'E2285<T,N>(int *)'
Full parser context
nocr.cpp(6): parsing: void testlocam()
[C++ Warning] nocr.cpp(13): W8004 'E2031' is assigned a value that is never used
Full parser context
nocr.cpp(6): parsing: void testlocam()
[C++ Warning] nocr.cpp(13): W8004 'E2027' is assigned a value that is never used
Full parser context
nocr.cpp(6): parsing: void testlocam()
[C++ Warning] nocr.cpp(13): W8004 'E2034' is assigned a value that is never used
Full parser context
nocr.cpp(6): parsing: void testlocam()
QC Entry 10267

bcc32.exe -c 237290.cpp

exp: no errors
act:

E2031 Cannot cast from 'int *' to 'int ( &)[1]'

QC #:

Date Reported:

Area:

4092

4/11/2003

Compiler\C++\Front End\Language

Description:

Steps:

[QC Short Description]
"multiple declaration" while completing array declarations

QC Entry 4092

This compiles: extern const int x[]; const int x[3] = {1, 2, 3}; but this doesn't: extern const int x[]; const int x[(int)3] = {1, 2, 3}; It generates an error: Multiple declaration for 'x' This example seems far fetched, but it actually occured in a situation where the size specifier was introduced earlier with a #define.

QC #:

Date Reported:

Area:

54835

11/14/2007

Compiler\C++\Front End\Language

Description:

Steps:

[QC Short Description]
sometimes when C-array is used in templates its size can be set only with literal

[QC Description]
one of the simple ways to get information in compile time is to return a reference to array of different size and take its sizeof,
for example

template<typename T>
char (&f(T const&))[1];

unfortunately in BDS2006 that could cause internal compiler error if the size of array is anyhing but literal

enum
{
Q =2
};
int const P =2;

template<typename T> char ( &f( T& ) )[ 2 ]; //1
//template<typename T> char ( &f( T& ) )[ 1+1 ]; //2
//template<typename T> char ( &f( T& ) )[ Q ]; //3
//template<typename T> char ( &f( T& ) )[ P ]; //4

int main(int argc, char* argv[])
{
int v;
int p =sizeof( f( v ) );
}

compiles and runs fine, when array size is literal

comment line //1 and uncomment line //2 - array size is expression
compilations gives
[C++ Fatal Error] Unit1.cpp(15): F1004 Internal compiler error at ...

the same errors when size is enum and constant (line //3 and //4)

QC Entry 54835
[Top 10] 15 Votes

Expression:
bcc32 -c qc54835a.cpp

Exp: Clean compile
Act:
Fatal F1004 qc54835c.cpp 15: Internal compiler error at 0x43e8ad with base 0x400000 in function main(int,char *)
Fatal F1004 qc54835c.cpp 15: Internal compiler error in function main(int,char*)

with enum:
bcc32 -c qc54835b.cpp
same results

with const:
bcc32 -c qc54835c.cpp
same results

//Test case description error: compile should NOT be clean, legitimate warning is raised.

QC #:

Date Reported:

Area:

30044

6/12/2006

Compiler\C++\Front End\Object Generation

Description:

Steps:

[QC Short Description]
Compiler will not inline even the most simple constructor

[QC Description]
The C++ compiler refuses to inline even the simplest constructor, even with option -O2 (generate fastest code) enabled. E.g. in the following example:

#pragma option -vi // enable inline expansion
struct Null
{
int value;
inline Null (): value(0) {}
operator int () { return value; }
};

the compiler will generate a full blown constructor, including a call to __InitExceptBlockLDTC (exception handler setup). Although this is not technically a bug, it does make the code a lot slower and more bloated. I detected this 'feature' because my benchmarks ran markedly slower when my code was compiled with C++Builder 2006 than with C++Builder 5.

I fiddled around with the compiler options but to no avail. I could not convice the compiler to inline this constructor although the operator was expanded inline as expected.
QC Entry 30044

Make the attached project, set a breakpoint on the declaration of the null variable and display the CPU view.

QC #:

Date Reported:

Area:

18728

6/16/1999

Compiler\C++\Front End\Preprocessor

Description:

Steps:

CPP32 converts __inline to inline when preprocessing 'C' files. This generates an error on compile. [QC Entry 18728]

cpp32 62190.c
//res: 'inline' in 62190.i file
//exp: '__inline' in 62190.i file

QC #:

Date Reported:

Area:

18729

6/16/1999

Compiler\C++\Front End\Preprocessor

Description:

Steps:

Using -Sd with CPP32 the first few lines of the file (showing builtin defines) are only terminated with a newline while the rest of the file uses carriage return/newline. [QC Entry 18729]

cpp32 -Sd 62191.c
tdump -h 62191.i | grep "2F 0A 2F"
//res:
{ many lines with the pattern "2F 0A 2F" /<LF>/ }

//exp:
{ no lines matching pattern "2F 0A 2F" }

QC #:

Date Reported:

Area:

50734

8/18/2007

Compiler\C++\Front End\Templates

Description:

Steps:

[QC Short Description]
[Boost][1.34.1] iostreams/code_converter_test - SFINAE error?

[QC Description]
Compiling the attaced preprocessed file results in the following error:
CodeGear C++ 5.92 for Win32 Copyright (c) 1993, 2007 CodeGear
code_converter_test.i:
Error E2299 code_converter_test.i 196098: Cannot generate template specialization from 'is_std_io<T>' in function void codecvt_test1<utf8_codecvt_facet<wchar_t, char> >()

This appears to involve SFINAE/enable_if, but I'm not 100% certain.
QC Entry 50734

Unpack the attached example and run bcc32 -P code_converter_test.i exp: clean compile act: the error message

QC #:

Date Reported:

Area:

18525

9/10/1999

Compiler\C++\Front End\Templates

Description:

Steps:

A using statement within a derived template class causes an internal compiler error.
template <class T>
class TA
{
protected:
typedef T TBase;
};

template <class T>
class TB: public TA<T>
{
public:
using TA<T>::TBase; // This statement causes the fault.
}; [QC Entry 18525]

bcc32 -c 70596.cpp
//res:
Fatal F1004 70596.cpp 13: Internal compiler error at 0x45d205 with base 0x4000
//exp: no errors

QC #:

Date Reported:

Area:

46970

6/3/2007

Compiler\C++\Front End\Templates

Description:

Steps:

[QC Short Description]
Wrong ambiguity error

[QC Description]
Try to compile the following code (it works with Comeau Online and VC++ 2005):

struct MyString
{
const char* c_str (void) const;
};

class PtrClass;
class MyClass;

namespace mynamespace
{

template <typename T, const char* (T::*toCharFunc) (void) const>
inline void doSomething (PtrClass* PtrClass, T& val);

} // namespace mynamespace


class MyClass
{
protected:
PtrClass* PtrClass;

virtual void virtualFunction (void) = 0;

template <typename T, const char* (T::*toCharFunc) (void) const>
void doSomething (T& val)
{ mynamespace::doSomething <T, toCharFunc> (PtrClass, val); } // the error is raised here
};



namespace mynamespace
{


template <typename T, const char* (T::*toCharFunc) (void) const>
inline void doSomething (PtrClass* PtrClass, T& val)
{
}

} // namespace mynamespace


struct MyDerivedClass : MyClass
{
MyString myString;

virtual void virtualFunction (void)
{
doSomething <MyString, &MyString::c_str> (myString);
}
};

int main (void)
{
MyDerivedClass mdc;
mdc.virtualFunction ();
}



You will receive the following error:
[BCC32 Fehler] demo.cpp(30): E2335 berladene Funktion 'mynamespace::void doSomething<MyString,&MyString::c_str>(PtrClass *,MyString &)' ist in diesem Kontext mehrdeutig (overloaded function '...' is ambiguous in this context)
QC Entry 46970
[Top 10] 20 Votes

download attachment bcc32 -c qc46970 - or - - Create a new .cpp file, insert the following code: // ---------------------------------------------------------------------------------------------- struct MyString { const char* c_str (void) const; }; class PtrClass; class MyClass; namespace mynamespace { template <typename T, const char* (T::*toCharFunc) (void) const> inline void doSomething (PtrClass* PtrClass, T& val); } // namespace mynamespace class MyClass { protected: PtrClass* PtrClass; virtual void virtualFunction (void) = 0; template <typename T, const char* (T::*toCharFunc) (void) const> void doSomething (T& val) { mynamespace::doSomething <T, toCharFunc> (PtrClass, val); } // the error is raised here }; namespace mynamespace { template <typename T, const char* (T::*toCharFunc) (void) const> inline void doSomething (PtrClass* PtrClass, T& val) { } } // namespace mynamespace struct MyDerivedClass : MyClass { MyString myString; virtual void virtualFunction (void) { doSomething <MyString, &MyString::c_str> (myString); } }; int main (void) { MyDerivedClass mdc; mdc.virtualFunction (); } // ---------------------------------------------------------------------------------------------- Exp: clean compile Act: The compiler raises E2335.

QC #:

Date Reported:

Area:

50868

8/21/2007

Compiler\C++\Front End\Templates

Description:

Steps:

[QC Short Description]
error occurs on passing non-static member to template function which accepts reference to array

[QC Description]
template<typename T,unsigned N>
void h( T (&a) [N])
{
}

struct A
{
void f()
{
h( a ); // E2285 Could not find a match for 'h<T,N>(int *)'
}
int a[10];
};

- typeid(a).name() is int[10]
- sizeof(a) gives 40,
- nontemplate function h(int(&)[10]) works ok,
- the template function for non-member or static member works ok,
- ms vs2005 & comeau online compile this code without a warning
QC Entry 50868

1. bcc32 -c 254406.cpp

exp:
clean
res:
E2285 (bcc32 5.91, 5.9.2, 5.A, 5.6)

C:\Temp>bcc32 test.cpp
CodeGear C++ 5.91 for Win32 Copyright (c) 1993, 2007 CodeGear
test.cpp:
Error E2285 test.cpp 10: Could not find a match for 'h<T,N>(int *)' in function
A::f()
Warning W8057 test.cpp 21: Parameter 'argc' is never used in function main(int,c
har * *)
Warning W8057 test.cpp 21: Parameter 'argv' is never used in function main(int,c
har * *)
*** 1 errors in Compile ***

C:\Temp>set PATH=C:\Program Files\Borland CBuilder6 Evaluation\INSTALL\program f
iles\Borland\CBuilder6\Bin;%PATH%

C:\Temp>bcc32 test.cpp
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
test.cpp:
Error E2285 test.cpp 10: Could not find a match for 'h<T,N>(int *)' in function
A::f()
Warning W8057 test.cpp 21: Parameter 'argc' is never used in function main(int,c
har * *)
Warning W8057 test.cpp 21: Parameter 'argv' is never used in function main(int,c
har * *)
*** 1 errors in Compile ***

C:\Temp>








QC #:

Date Reported:

Area:

526

4/6/2002

Compiler\C++\Front End\Templates

Description:

Steps:

[QC Short Description]
Function address resolution for template function fails

[QC Description]
The compiler has trouble resolving overloaded function for a function template which takes the address of a function as a parameter wth one of the parameters the template type.

Taken from http://www.boost.org/more/borland_cpp.html
QC Entry 526

Example to compile:

template<class Arg>
void f( void(*g)(Arg) );

void h(int);
void h(double);

#pragma argsused
int main(int argc, char* argv[])
{

f<double>(h); // should work (std:13.4-1.3)
f(static_cast<void(*)(double)>(h)); // should work (std:13.4-1.6 with 5.2.9)

}

-------------------------------------------------------------------------------------------

[C++ Error] Testbcb5ConsoleExe.cpp(18): E2299 Cannot generate template specialization from 'h(int)'

for

f<double>(h);

[C++ Error] Testbcb5ConsoleExe.cpp(18): E2285 Could not find a match for 'f<Arg>(void (*)(int))'

for

f<double>(h);

[C++ Error] Testbcb5ConsoleExe.cpp(19): E2335 Overloaded 'h' ambiguous in this context

for

f(static_cast<void(*)(double)>(h));

QC #:

Date Reported:

Area:

2945

11/18/2002

Compiler\C++\Front End\Templates

Description:

Steps:

[QC Short Description]
Failed assertion in command-line compiler BCC32.EXE

[QC Description]
The attached file causes the command-line compiler BCC32.EXE to fail with "failed assertion".
QC Entry 2945

Happens in BCB6

bcc32 -c bcb237264.cpp

res:

CodeGear C++ 5.A0 for Win32 Copyright (c) 1993, 2007 CodeGear
bcb237264.cpp:
Fatal F1004 bcb237264.cpp 8: Internal compiler error at 0x41150c with base 0x400
000 in function f()
Fatal F1004 bcb237264.cpp 8: Internal compiler error in function f()

QC #:

Date Reported:

Area:

8982

2/18/2005

Compiler\C++\Front End\Templates

Description:

Steps:

[QC short Description]
internal error when using default integer template parameters and partial specialization

[QC Description]
when instantiating a template using a default integer parameter causes an internal error.

these errors seem to be caused by either the default parameter or the lack of a "general" definition for the class A

cl can compile it.

template<class B,int I = 0>
class A;

template<class B>
class A<B,0>
{
public:
};

int main()
{
#if 1
A<char> pr; //does NOT compile
#else
A<char,0> pr; //does compile
#endif
}

produces the following error messages
Fatal F1004 test005.cpp 13: Internal compiler error at 0x43e0ae with base 0x400000 in function main()
Fatal F1004 test005.cpp 13: Internal compiler error in function main()

QC #:

Date Reported:

Area:

535

4/6/2002

Compiler\C++\Front End\Templates

Description:

Steps:

[QC Short Description]
Template compiles when its form is clearly incorrect

[QC Description]
The compiler will successfully compile template code which is not in any way a valid declaration. This is otherwise known as the BCB template emoticon bug. See Detail for an example
QC Entry 535

Attempting to compile this code:

template <class T> class A { };

A<A<A<int ]:-> x;

int main() {}

compiles successfully. It is clearly erroneous.

QC #:

Date Reported:

Area:

24795

2/12/2006

Compiler\C++\Front End\Templates

Description:

Steps:

[QC Short Description]
const references should be same type as reference-to-const

[QC Description]
The program in Steps will deduce 2 different types:

int & const
int const &

The first type is nonesense - there is no such thing as a 'const reference', only references to const objects.

The fact that these two distinct types exist breaks many common metaprogramming techniques.

It is probably at the root of a lot of other bug reports against the compiler and (ab)use of const in type deduction. For instance, the type int & const will select the wrong overload almost every time.
QC Entry 24795

bcc32 main.cpp

exp: true
act: false : same_type<int & const,int &>

QC #:

Date Reported:

Area:

1192

5/10/2002

Compiler\C++\Front End\access

Description:

Steps:

[QC Short Description]
private static const data member not private

[QC Description]
The compiler should give an error on the line indicated because the test member is private. Also, if the initialiser is given on the line marked #1 instead of within the class (and the member is made public) then most compilers (Comeau, G++, VC ) accept the code but BCB gives an error.
QC Entry 1192


class A
{
static const int test = 1;
};
//const int A::test=1; // #1

int main()
{
int i=1;
switch (i)
{
case A::test: // should give error
break;
default:
break;
}
}

QC #:

Date Reported:

Area:

18371

1/20/2000

Compiler\C++\Front End\Destructors

Description:

Steps:

Temporary objects created as a default argument to a constructor to a base class are not destructed.

ANSI/ISO 12.4.10 sentence 1, item 3. [QC Entry 18371]

bcc32 78986.cpp
78986.exe
//res: failed
//exp: passed

QC #:

Date Reported:

Area:

3167

12/18/2002

Compiler\C++\Front End\Extensions

Description:

Steps:

[QC Short Description]
Thread-local storage for static class members causes ICE

QC Entry 3167

[BCMF]

bcc32 -c bcb232959.cpp

struct T
{
static char __thread buf;
};
char __thread T::buf;

The code above elicits this response from the compiler:

[C++ Fatal Error] ThreadTestUnit.cpp(6): F1004 Internal compiler error at 0x12a1c3f with base 0x1200000

QC #:

Date Reported:

Area:

2828

11/5/2002

Compiler\C++\Front End\Initialization

Description:

Steps:

[QC Short Description]
A reference to non-const should not bind to temporary variable

[QC Description]
class A
{
};

void foo( A& a)
{
}

void bar ( const A& a)
{
}
int main()
{
foo( A( ) ) ; // This is an Error but not flagged as one.
bar( A( ) ) ; // This is fine

A a ;
bar( a ) ; // This is also fine


}
QC Entry 2828

1. bcc32 237330.cpp

//exp : error
initial value of reference to non-const must be an lvalue
//res : clean compile

QC #:

Date Reported:

Area:

18469

11/19/1996

Compiler\C++\Front End\Initialization

Description:

Steps:

(WP12.6.1p2) Compiler does not do initialization of aggregates containing class types. [QC Entry 18469]

[ANSI]
bcc32 pron1944
pron1944=> "passed", return 0.

QC #:

Date Reported:

Area:

18655

12/21/1999

Compiler\C++\Front End\Initialization

Description:

Steps:

This code from the standard 14.1(6) should get an error:

template <int i>
void f()
{
int &ri = i; //error
}


int main()
{
f<6>();
return 0;
}

instead, the compiler issues a warning that says a temporary was used to initialize ri. [QC Entry 18655]

bcc32 77170.cpp
//res: a warning
//exp: an error

QC #:

Date Reported:

Area:

19550

8/15/1997

Compiler\C++\Front End\Initialization

Description:

Steps:

Plum Hall 4.0 test of WP Dec96 12.6.1 (2) fails with error message. [QC Entry 19550]

[ANSI]
bcc32 -c bcb6854.cpp
Result: Objects of type 'B' cannot be initialized with { }
Expected Result: no errors

QC #:

Date Reported:

Area:

51854

9/11/2007

Compiler\C++\Front End\Initialization

Description:

Steps:

[QC Short Description]
Value-initialization: POD struct should be zero-initialized

[QC Description]
When testing boost::value_initialized on a Borland compiler, it appeared to me that the compiler does not correctly implement value-initialization.

Suppose we have a very simple POD struct, TData:

struct TData {
int i;
};

Suppose TData is itself wrapped inside another struct, TWrapper, defined as follows:

struct TWrapper {
TData data;
TWrapper() : data() {}
};

The data should be zero-initialized by the constructor of TWrapper. Unfortunately, when using Borland C++, the following assert typically fails:

TWrapper wrapper;
assert(wrapper.data.i == 0);

Nicola Musatti (http://bcbboost.sourceforge.net) did the test on C++Builder 2007 Update 2 (compiler version 5.91). I tested the free Turbo C++ Explorer (compiler version 5.82). Both compiler versions appear to have the bug.

--
Niels Dekker
http://www.xs4all.nl/~nd/dekkerware
Scientific programmer at LKEB, Leiden University Medical Center
QC Entry 51854

[Top 10] 20 Votes

bcc32 qc51854.cpp qc51854 Exp: Run without error Act: asssert fails #include <cassert> struct TData { int i; }; struct TWrapper { TData data; TWrapper() : data() {} }; int main() { TWrapper wrapper; // Assert should not fails, but it does! assert(wrapper.data.i == 0); return wrapper.data.i; }

QC #:

Date Reported:

Area:

18711

6/7/1999

Compiler\C++\Front End\Overloading

Description:

Steps:

BCB incorrectly flags an ambiguity when the a function is being passed a bool when the declaration of the function is either int or float.
f(int) should be a better match than f(float) since
bool to an int is a promotion and bool to a float a conversion.
#if ( __BORLANDC__ >= 0x530 ) || ( _MSC_VER > 1200 )
#include <cstdio>
using std::puts;
#else
#include <stdio.h>
#endif

bool pass = false;
void f(int) { pass = true; }
void f(float){}

int main()
{
f( false );
return pass? (puts( "passed" ), 0): (puts( "failed" ), 1);
}
[QC Entry 18711]

bcc32 61837.cpp
//res:
Error 61837.cpp 14: Ambiguity between 'f(int)' and 'f(float)' in function main()
//exp: buids, when run, prints passed

--- original text ---
1) Create a project with the following code:

void f(int) {}
void f(float) {}

int main()
{
f(false);
}

2) Compile and get: [C++ Error] test.cpp(6): E2015 Ambiguity between 'f(int)' and 'f(float)'.

QC #:

Date Reported:

Area:

18980

6/7/1999

Compiler\C++\Front End\Overloading

Description:

Steps:

[C++ Error] Project2.cpp(27): E2015 Ambiguity between 'Bar::bar(void (Derived::*)())' and 'Bar::bar(int Derived::*)'.The following code reports an ambiguity.
[C++ Error] Project2.cpp(28): E2015 Ambiguity between 'Bar::bar(void (Derived::*)())' and 'Bar::bar(int Derived::*)'.

class Base {
public:
void foo();
int i;
};

class Derived : public Base {};

class Bar {
public:
void bar(void (Derived::*)(void));
void bar(int Derived::*);
};


int main()
{
Bar a;

a.bar(&Derived::foo); //line 27
a.bar(&Derived::i); //line 28
}
[QC Entry 18980]

bcc32 61785.cpp
//res:
Error E2015 61785.cpp 27: Ambiguity between 'Bar::bar(void (Derived::*)())' and 'Bar::bar(int Derived::*)' in function main()
Error E2015 61785.cpp 28: Ambiguity between 'Bar::bar(void (Derived::*)())' and 'Bar::bar(int Derived::*)' in function main()
//exp: builds, when run prints passed

--- original text ---
compile sample code in Description pane

QC #:

Date Reported:

Area:

18923

5/7/1999

Compiler\C++\Front End\Overloading

Description:

Steps:

This code shows that the compiler is incorrectly giving an ambiguity on a ctor that can take both a const and a const volatile parameter.
#include <cstdio>
using std::puts;

int fb = 0;
struct AA
{
struct T
{
int i;
T() : i(2) {}
T(const T&r) : i(r.i) {}
T(const volatile T&r) : i(r.i) {}
virtual ~T() { }
};
T oe;
AA() : oe() { }
void a()
{
const volatile T *p = &oe;
throw *p;
}
void s()
{
try {
a();
}
catch (T &r)
{
r.i == 2;
fb = 31;
}
}
};

int main()
{
AA oe;
oe.s();
return fb == 31? (puts( "passed" ), 0): (puts( "failed" ), 1);
}
[QC Entry 18923]

Error E2015 49118.cpp 20: Ambiguity between 'AA::T::T(const AA::T &)' and 'AA::T::T(const volatile AA::T &)' in function AA::a()

QC #:

Date Reported:

Area:

18870

3/24/1999

Compiler\C++\Front End\Overloading

Description:

Steps:

This code gets an ambiguity error. The conversion operator returns value which should match more closely with the derived class than with the base class.
class Base {};
class Derived: public Base {};
class DerivedPointer
{
private:
Derived* ptr_;
public:
operator Derived*&() { return ptr_; }
};

void f(Base*) {}
void f(Derived*) {}

int main()
{
DerivedPointer d;
f(d);
return 0;
}
[QC Entry 18870]

bcc32 47176.cpp
//res:
Error 47176.cpp 18: Ambiguity between 'f(Base *)' and 'f(Derived *)' in function main()

QC #:

Date Reported:

Area:

36215

11/6/2006

Compiler\Delphi\Header Generation

Description:

Steps:

[QC Short Description]
DCC32 reorders record declaration causing HPP file to be unusable

[QC Description]
The HPP file generated from the following code cannot be compiled successfully.

interface

type
TMyObj = class;
TMyObj2 = class;

MyRecord = record
i,j,k : integer;
obj : TMyObj;
obj2: TMyObj2;
end;

TMyObj2 = class(TObject)
public
rec: ^MyRecord;
end;

TMyObj = class(TObject)
public
end;

=============================================
The HPP file (snippet shown below) has MyRecord defined way below where it is needed.

namespace Recordtest
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TMyObj;
class PASCALIMPLEMENTATION TMyObj : public System::TObject
{
typedef System::TObject inherited;

public:
#pragma option push -w-inl
/* TObject.Create */ inline __fastcall TMyObj(void) : System::TObject() { }
#pragma option pop
#pragma option push -w-inl
/* TObject.Destroy */ inline __fastcall virtual ~TMyObj(void) { }
#pragma option pop

};


class DELPHICLASS TMyObj2;
class PASCALIMPLEMENTATION TMyObj2 : public System::TObject
{
typedef System::TObject inherited;

public:
MyRecord *rec;
public:
#pragma option push -w-inl
/* TObject.Create */ inline __fastcall TMyObj2(void) : System::TObject() { }
#pragma option pop
#pragma option push -w-inl
/* TObject.Destroy */ inline __fastcall virtual ~TMyObj2(void) { }
#pragma option pop

};


struct MyRecord
{

public:
int i;
int j;
int k;
TMyObj* obj;
TMyObj2* obj2;
} ;
QC Entry 36215

1: Open the attached project 1b: Delete "recordtest.hpp" (if it exists) to ensure it's recreated... 2: Build it Expected: builds without error Actual: [C++ Error] recordtest.hpp(45): E2303 Type name expected [C++ Error] recordtest.hpp(45): E2139 Declaration missing ; Inspection of recordtest.hpp shows that MyRecord too 'late' in the file. See also QC 36028 which is obviously related.

QC #:

Date Reported:

Area:

9361

10/16/2004

Compiler\Delphi\Header Generation

Description:

Steps:

[QC Short Description]
Using Win32 handle types (HWND, HDC...) as function parameters generate invalid HPP file

[QC Description]
When a function in a pascal source has a parameter that is a Win32 handle (eg. HWND, HDC...), the generated HPP file will make this parameter a 'void *' while the object file expects an 'unsigned int'. As a result, the application compiles but does not link.

The attached application shows this and the possible workarounds.
QC Entry 9361

1. Create a C++ console application.
2. Go to project options, disable NO_STRICT
3. Add Unit1.pas file to the project.
4. Create a function in a pascal file that accepts a Win32 handle parameter like HWND.
5. add #include "Unit1.hpp" to the cpp file.
//5. Generate the hpp file
6.Call the function from a C++ source
7.Compile and link your application

res: Observe the linker error
exp: clean compile.

QC #:

Date Reported:

Area:

27957

4/23/2006

Compiler\Delphi\Header Generation

Description:

Steps:

[QC Short Description]
Delphi header files are created incorrectly after Update 2

[QC Description]
It looks like this bug has come back after installing Update 2:
http://qc.borland.com/wc/qcmain.aspx?d=1857

Below is an example of how to reproduce it:

In Delphi create a project and add this (below) to a new unit called uDelphi.pas.

unit uDelphi;

interface
uses Classes;

type
TMyClass= class(TComponent)

public
class function GetId: integer; virtual;

property Id: Integer read GetId;
end;
implementation


class function TMyClass.GetId: Integer;
begin
Result := 1;
end;
end.


Now in BCB we are going to create a new project and use uDelphi.pas within it:
So create a new BCB Form project and place a TButton on the form.

Now add the 'uDelphi.pas' file to your BCB project.
Add the include of the 'uDelphi' file:
#include "uDelphi.hpp"

In the OnClick event of the Button place the following code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i;
TMyClass *mc = new TMyClass(NULL);

i = mc->Id;

delete mc;
}

Now compile your BCB project and you will see the now mangled header file.
I get the following error:
[C++ Error] uDelphi.hpp(31): E2347 Parameter mismatch in read access specifier of property Id

This is how my header looks:

namespace Udelphi
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TMyClass;
class PASCALIMPLEMENTATION TMyClass : public Classes::TComponent
{
typedef Classes::TComponent inherited;

public:
/* virtual class method */ virtual int __fastcall GetId(TMetaClass* vmt); <----PROBLEM
__property int Id = {read=GetId, nodefault};
public:
#pragma option push -w-inl
/* TComponent.Create */ inline __fastcall virtual TMyClass(Classes::TComponent* AOwner) : Classes::TComponent(AOwner) { }
#pragma option pop
#pragma option push -w-inl
/* TComponent.Destroy */ inline __fastcall virtual ~TMyClass(void) { }
#pragma option pop

};


Thanks
QC Entry 27957

Below is an example of how to reproduce it: In Delphi create a project and add this (below) to a new unit called uDelphi.pas. unit uDelphi; interface uses Classes; type TMyClass= class(TComponent) public class function GetId: integer; virtual; property Id: Integer read GetId; end; implementation class function TMyClass.GetId: Integer; begin Result := 1; end; end. Now in BCB we are going to create a new project and use uDelphi.pas within it: So create a new BCB Form project and place a TButton on the form. Now add the 'uDelphi.pas' file to your BCB project. Add the include of the 'uDelphi' file: #include "uDelphi.hpp" In the OnClick event of the Button place the following code: void __fastcall TForm1::Button1Click(TObject *Sender) { int i; TMyClass *mc = new TMyClass(NULL); i = mc->Id; delete mc; } Now compile your BCB project and you will see the now mangled header file. I get the following error: [C++ Error] uDelphi.hpp(31): E2347 Parameter mismatch in read access specifier of property Id This is how my header looks: namespace Udelphi { //-- type declarations ------------------------------------------------------- class DELPHICLASS TMyClass; class PASCALIMPLEMENTATION TMyClass : public Classes::TComponent { typedef Classes::TComponent inherited; public: /* virtual class method */ virtual int __fastcall GetId(TMetaClass* vmt); <----PROBLEM __property int Id = {read=GetId, nodefault}; public: #pragma option push -w-inl /* TComponent.Create */ inline __fastcall virtual TMyClass(Classes::TComponent* AOwner) : Classes::TComponent(AOwner) { } #pragma option pop #pragma option push -w-inl /* TComponent.Destroy */ inline __fastcall virtual ~TMyClass(void) { } #pragma option pop };

QC #:

Date Reported:

Area:

20630

10/25/2005

Compiler\Delphi\Header Generation

Description:

Steps:

[QC Short Description]
Incorrect HPP files generated for some Delphi code

type
TnxDateTime = type Double;
PnxDateTime = ^TnxDateTime;

This creates the following HPP code:

typedef TnxDateTime TnxDateTime;
typedef TnxDateTime *PnxDateTime;

[QC Entry 20630 ]

1. Open attached project
2. Build

//exp : clean build
//res : we generate erroneous C++ code in the .hpp for Unit1.pas

QC #:

Date Reported:

Area:

29434

5/24/2006

Compiler\Delphi\Header Generation

Description:

Steps:

[QC Short Description]
Wrong HPP generation. Some parameters types are missing in procedure declaration

[QC Description]
My environment is Delphi2006 Update 2, Win XP SP2.
I have a C++Builder project that uses some Pascal units, grouped in a library (.lib) that is part of the project group.
The compiler generates a wrong hpp file, in which the procedure declarations that have user-defined types as parameters are wrongly translated, that is such parameters type are not listed. See Steps for an example.

If this same project is compiled in C++Builder 5, everything is ok.
QC Entry 29434

// old steps in comment

1. dcc32 -jphn test.pas
2. bcc32 -c -P test.hpp

//exp: clean compile
//res : errors
Error E2189 test.hpp 28: extern variable cannot be initialized
Error E2449 test.hpp 28: Size of 'DoTest' is unknown or zero
Error E2451 test.hpp 28: Undefined symbol 'T1'
Error E2293 test.hpp 28: ) expected

As you can see, the extern declaration of the DoTest procedure in this hpp files is wrong, because the types of the T1 and T2 parameters are missing,
so the DoTest procedure cannot be used.

QC #:

Date Reported:

Area:

51691

9/7/2007

RTL\C++

Description:

Steps:

[QC Short Description]
incorrect ambuigity error

[QC Description]
Borland gives the following error for this program:

#include <string>

class Collection
{
public:
// The program compiles if you remove these two lines:
const int & operator[] (const std::string & key) const;
int & operator[] (const std::string & key);

const int & operator[] (unsigned index) const;
int & operator[] (unsigned index);
};

int main()
{
Collection c;
int a = c[0U];
}

E2015 Ambiguity between 'operator Collection::[](unsigned int) at C:\tmp\bug.cpp:10' and 'operator Collection::[](unsigned int) const at C:\tmp\bug.cpp:9'

This error complaints about ambiguity between the two unsigned int methods, but that's not the root cause: if you leave only those two methods, deleting the variants using std::string, the program compiles.

Update:
If you change the last line:
int a = c[0U];
to:
const unsigned u = 0;
int a = c[u];
the program compiles. I really don't see why this should make a difference.
QC Entry 51691

download attachment bcc32 -c qc51691.cpp Exp: Clean compile Act: Error E2015 qc51691.cpp 17: Ambiguity between 'operator Collection::[](unsigned int) at qc51691.cpp:11' and 'operator Collection::[](unsigned int) const at qc51691.cpp:10' in function main(int,char *) Warning W8004 qc51691.cpp 18: 'a' is assigned a value that is never used in function main(int,char *)

QC #:

Date Reported:

Area:

20348

10/20/2005

RTL\C++\Exception Handling

Description:

Steps:

[QC Short Description]
Memory leakage for Delphi exceptions if caught in C++

[QC Description]
Delphi exceptions are not properly handled by C++ mechanism.

Considering we have Delphi object Error derived from Exception that raised in DoRaise()

the following code generates a leak:

try {
try {
DoRaise ();
} catch (...) {
}
} catch (Exception&) {
}

whereas

try {
DoRaise ();
} catch (Exception&) {
}

works without leak
QC Entry 20348

1. open attached project
2. (with task manager running) F9

//exp : all Exception objects get cleaned up
//res : they are leaked

QC #:

Date Reported:

Area:

49983

8/2/2007

RTL\C++\Header Files

Description:

Steps:

[QC Short Description]
lldiv_t definition is missing from stdlib.h

[QC Description]
lldiv_t is a new (C99) structure that is being used in quite a bit of open source code. Currently such source doesn't compile with BCB.

Notice that Dinkum supports it:

http://www.dinkumware.com/manuals/?manual=compleat&page=stdlib.html
QC Entry 49983

1. Open stdlib.h 2. search for lldiv_t 3. Observe 'not found'

QC #:

Date Reported:

Area:

55572

12/4/2007

RTL\C++\Math

Description:

Steps:

[QC Short Description]
ftol does not reset FPU status.

[QC Description]
ftol does not reset FPU status. It disables the "invalid operation" exception while doing the conversion, but it does not reset the exception flag and the busy flag in the FPU status register.

So when the next FPU instruction are run the exception (which ftol caused) are thrown.
QC Entry 55572

#include "stdio.h" #include "float.h" main() { __int64 il; double d=2e35; il=d; // _clear87(); // Uncomment this and everything works fine. if ((double)il==d) // <<--- Exception thrown here. printf("%f\n",d); else printf("dont fit __int64\n"); }

QC #:

Date Reported:

Area:

55808

12/10/2007

RTL\C++\Math

Description:

Steps:

[QC Short Description]
_f87_Exp changes control word to RC_NEAR|PC_64

[QC Description]
Math functions exp, cosh, pow, powl, sinh, tanh and tanhl shouldn't change the floating point control word for subsequent computational operations, but they do. Each of these functions calls _f87_Exp, which changes rounding and precision to RC_NEAR|PC_64, regardless of rounding and precision set before the call to _f87_Exp. The control word is changed in F87EXP.ASM, which includes the following code:

-- begin F87EXP.ASM excerpt --
; to get a rapid division by 0.5 we double and truncate.

exp_notSimpleRange:
fld1
fld st(1)
fstcw exp_status
fscale
or exp_status.by1, 0Fh ; specify truncation mode
fldcw exp_status
frndint
and exp_status.by1, 0F3h ; default back to round-nearest
fldcw exp_status
fist exp_term1
-- end F87EXP.ASM excerpt --

Before calling frndint, _f87_Exp saves the caller's control word to memory variable exp_status and changes rounding and precision to RC_CHOP|PC_64. After calling frndint, _f87_Exp should restore caller's control word. Instead _f87_Exp changes rounding and precision to RC_NEAR|PC_64 in exp_status, and loads the modified memory variable to the control word.

Code from attached file:

#include <float.h> // _control87
#include <math.h> // exp
#include <stdio.h> // printf

void test_exp() {
printf( "control word before exp 0x%.4X ", _control87(0,0));
exp(1.0);
// cosh(1.0);
// pow(2.71828179217064, 2.71828179217064);
// powl(2.71828179217064, 2.71828179217064);
// sinh(1.0);
// tanh(1.0);
// tanhl(1.0);
printf( "and after exp 0x%.4X\n", _control87(0,0));
}
int main() {
_control87( PC_24|RC_NEAR, MCW_PC|MCW_RC );
test_exp();
_control87( PC_53|RC_NEAR, MCW_PC|MCW_RC );
test_exp();
_control87( PC_24|RC_DOWN, MCW_PC|MCW_RC );
test_exp();
_control87( PC_53|RC_DOWN, MCW_PC|MCW_RC );
test_exp();
_control87( PC_64|RC_DOWN, MCW_PC|MCW_RC );
test_exp();
_control87( PC_24|RC_UP, MCW_PC|MCW_RC );
test_exp();
_control87( PC_53|RC_UP, MCW_PC|MCW_RC );
test_exp();
_control87( PC_64|RC_UP, MCW_PC|MCW_RC );
test_exp();
_control87( PC_24|RC_CHOP, MCW_PC|MCW_RC );
test_exp();
_control87( PC_53|RC_CHOP, MCW_PC|MCW_RC );
test_exp();
_control87( PC_64|RC_CHOP, MCW_PC|MCW_RC );
test_exp();
return 0;
}
QC Entry 55808

Download attachment bcc32 qc55808.cpp qc55808 Exp: Output will show control word unchanged Act: control word before exp 0x1072 and after exp 0x1372 control word before exp 0x1272 and after exp 0x1372 control word before exp 0x1472 and after exp 0x1372 control word before exp 0x1672 and after exp 0x1372 control word before exp 0x1772 and after exp 0x1372 control word before exp 0x1872 and after exp 0x1372 control word before exp 0x1A72 and after exp 0x1372 control word before exp 0x1B72 and after exp 0x1372 control word before exp 0x1C72 and after exp 0x1372 control word before exp 0x1E72 and after exp 0x1372 control word before exp 0x1F72 and after exp 0x1372 Same results with any of the commented lines substituted for exp(1,0);

QC #:

Date Reported:

Area:

41593

3/1/2007

RTL\C++\Memory Management

Description:

Steps:

[QC Short Description]
Memory leak in implicit conversion of WideString to AnsiString

[QC Description]
There appears to be a problem with implicit conversion of WideString properties to AnsiString when calling a function or method that takes an argument to "AnsiString const&". I have reliably duplicated this issue when the function takes multiple AnsiString arguments.

When running with CodeGuard enabled it doesn't find any leaks. Even though I can quickly get an application to leak 100's of MB of memory.

I originally ran into this issue when using the NodeName and Text properties of _di_IXMLNode. I mention this to illustrate that the problem is more widespread than the simple example in my attachment.

<sysop note>

This is similar to RAID 219863 (QC 7070), but I decided to leave it up to CodeGear to decide if it is actually the same.

I like this report since it is very simple code. By upping the loop counter to 10000000 and pressing the leak button twice I was able to eat up all of the memory on my machine. To its credit, BDS (slowly) returned an out of memory exception, shut down the app, returned the memory to the OS and continued working.
QC Entry 41593

My attachment contains all of the necessary code to reproduce. Here is an outline of what you can do to reproduce on your own. - Create a new VCL application - Add a class that has a WideString property with getter - Create a function that expects two AnsiString const& arguments - Repeatedly call the function - Use whatever memory analyzer you desire to track the memory use of the application

QC #:

Date Reported:

Area:

31594

7/22/2006

RTL\C++\RTTI

Description:

Steps:

[QC Short Description]
Instance size differs from sizeof

[QC Description]
I have a VCL Component using THashedStringList. In my main app which uses that VCL Component, I'm also using THashedStringList. Upon running the app, I get an error from CodeGuard.

---

Method called on illegally casted object in process: Project27.exe(3872) - c:\borland\bds\4.0\include\vcl\IniFiles.hpp#169
Attempt to access 72 byte(s) at 0x00E85F60. The 'this' pointer points to heap block 0x00E85F60 which is only 68 bytes long.
0x0040204E - c:\borland\bds\4.0\include\vcl\IniFiles.hpp#169
0x00403FDF - C:\Documents and Settings\Zach Saw\My Documents\Borland Studio Projects\Lib\XtrimEnhNonVisuals\XtrimPageProducer.cpp#77

---

The highlighted line is this (in IniFiles.hpp):

/* TObject.Create */ inline __fastcall THashedStringList(void) : Classes::TStringList() { }

Apparently, this is due to the difference in InstanceSize and sizeof. InstanceSize is used to allocate memory space for the instance, while it is in actual case, bigger in C++. InstanceSize returned 68. "sizeof" says it's 72 bytes.

According to Rudy, structure alignment in Delphi is 8-byte as well, so InstanceSize should not really return 68. It simply indicates a 4-byte alignment.

We (folks in the forums) have a feeling the extent of the bug is much wider and it might affect third party Delphi components as well.
QC Entry 31594

1. bcc32 -WCV 240977.cpp
2. 240977.exe
//exp : sizeof and InstanceSize should report the same size for the same object
//res :
InstanceSize says : 68
sizeof says : 72

QC #:

Date Reported:

Area:

3859

3/20/2003

RTL\C++\Startup Code

Description:

Steps:

[QC Short Description]
atexit functions called before program exits

[QC Description]
Assuming 2 DLLs A.DLL and B.DLL that both use the dynamic CRTL (CC3250MT.DLL). If A.DLL loads B.DLL (with LoadLibrary) and then unloads B.DLL (with FreeLibrary), any atexit functions registered by A.DLL are called when B.DLL is unloaded, even though A.DLL is still active.
QC Entry 3859

Build a project group with 2 DLLs (A.DLL and B.DLL) and 1 console application (Test.exe). All projects must use dynamic run-time libraries but need not use the VCL.

Add the following unit to A.DLL:

#include <windows.h>

extern "C" void f ()
{
MessageBeep(0);
}

extern "C" __declspec(dllexport) void a ()
{
atexit(f);
HINSTANCE hInst = LoadLibrary("B.dll");
FreeLibrary(hInst);
}

Add the following code to the main() function of test.exe:

#include <stdio.h>

extern "C" __declspec(dllimport) void a ();

int main(int, char* [])
{
a();
return 0;
}

Add A.lib to the Test.exe project.

In the debugger, set a breakpoint in A.dll, f() .
In the debugger, set a breakpoint in main() on the return 0 statement.
Build all projects and run. The debugger will first break in f() and then in main().
So the atexit function has been executed although the application has not yet exited.

QC #:

Date Reported:

Area:

49849

7/31/2007

SOAP\WSDL Importer- BCB

Description:

Steps:

//Original bug was reported as German, changed to US

[QC Short Description]
WSDL import failure

[QC Description]
The attached axis2 WSDL file will not correct imported by the wsdl importer. No class information will be generated and so, there is no interface for using.
QC Entry 49849

The problem is reproduceable by importing the attached WSDL file with C++ Builder 2007. No or incorrect interface class will be generated by wsdl importer.




Server Response from: ETNASC03