[QC Short Description]Environment variables no longer work in include paths

[QC Description]I use environment variables in my include paths, e.g. $(INCLUDE_PATHS)... This used to work fine, but now the IDE gives me an error "Include path contains an invalid file name: $(INCLUDE_PATHS" and does not let me save my changes.

This problem only happens when you have more than one path in an environment variable:

setx INCLUDE_PATHS c:\path1;c:\path2

It seems to not like the semi-colonQC Entry 47295

エリア

IDE\Dialogs\Project Options

説明:

[QC Short Description]Truncated strings and missing translations in german version

[QC Description]The following problems exist in the german C++ project options- on page "C++-Compiler"\"Erweiterte Compilierung" the strings in the groupboxes "Source" and "Assembler" are not translated (see image *1.png)- some strings in the "Assembler options" dialog are not translated (see image *1_2.png)- on page "Tasm"\"Optionen" the string "Quelltextzeilen in Meldungen anzeigen" is truncated (see *2.png)QC Entry 49719

エリア

IDE\Project Management

説明:

[QC Short Description]make recompiles multiple files, even when not needed

[QC Description]On large projects this will be a big problem.Make is recompiling files every time it is invoked.

[QC Description]A project created in BDS with alignment set to quad word (8 byte) when imported into 2007 ends up with 4 byte alignment.

You do not notice this until later of course e.g at runtime after wasted hours of debugging!

The C++ compiler options end up with 4 byte alignment but the Delphi compile options are 8 byte alignment.

QC Entry 49163

エリア

IDE\Project Management

説明:

[QC Short Description]Invalid compiler directive '$-$Y+'

[QC Description]After importing BDS2006 project I get this warning on comileQC Entry 46874

エリア

IDE\Project Management

説明:

[QC Short Description]C++ Preprocessor does not work

[QC Description]1. The Preprocess command on the context menu in the project managerdoes nothing if the .cpp file is not open in the editor

2. Preprocessing an open file in the editor results in error message:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Borland.Cpp.Targets(1588,4): error MSB4064: The "StringLiteralsNonConst" parameter is not supported by the "CPP32" task. Verify the parameter exists on the task, and it is a settable public instance property.QC Entry 49080

エリア

IDE\Project Management\Project Manager

説明:

[QC Short Description]Please allow files to be added to a project without specifying their exact path

[QC Description]In BC++ 5.0x, it was possible to add source, object, and library files to a project without specifying their exact path. The path was then determined at compile and/or link time using the include and library paths in project settings.

This is a critical requirement for sharing projects between team members without identical environment setups. For example, if I want to add the iphlpapi.lib library to my project, I can do so only by pointing to "c:\program files\borland\bds\4.0\lib\psdk" and adding the library from that location. If I then share this project with another team member whose IDE is installed someplace other than "c:\program files\..." s/he will get a linker error when building the project.

By allowing files to be added without path information, the include and library paths in project options can include something like, "$(BDS)\include" or "$(BDS)\lib\psdk" and the project will still compile and link, so long as $(BDS) is defined appropriately for each user's environment.

As was the case with BC++ 5.0x, the path information should be optional. That is, if path information is provided, it should be honored. But if omitted, the include and library paths in project options should take effect at compile and link time.

Addendum (12-08-06):

It would only be necessary to "search" for files if an explicit path is not provided. However, if no explicit search path is provided (or if the path is removed via local options) and the file does not exist in the current directory, that is when the search path would come into play.

For source files (as with include and library files), the current directory should be the default. Only if the file is not found would it be necssary to search the path list.

QC Entry 37414

エリア

IDE\Project Management\Project Manager

説明:

[QC Short Description]Adding existing units to project by dragging from Win Explorer fails

[QC Description]This report is related to QC 43743/RAID 248861 but is not the same.

I consider this to be more serious than QC 43743 because projects often don't import correctly into Cogswell, so creating a new project and dragging the existing units into it will be done a more common practice than it would if importation were more reliable.

When dragging an existing .cpp file from Windows Exploder to the project manager, the form is not included in the project and does not appear in the Project/Options/Forms list.

See steps and attached project.

<Later>

Things are even worse than I initially reported. I've just noticed that forms were omitted for 3 of the 34 existing units I added to my project, even though I added them via the Project Manager's Add context menu. Worse, removing them from the project and re-adding them does not bring the forms into the project. Note that this is a project I created fresh in 2709.

I've tried removing the mal-imported units from the project, then saving/closing/reopening the project and adding the unit - didn't work. I also tried removing the units, saving the project, closing the project, closing Cogswell, restarting Cogswell, reopening the project and re-adding the unit. The forms are still omitted from the project.QC Entry 46984

エリア

IDE\Project Management\Project Options

説明:

Numeric options are not verified correctly in C++ project options pages.(.NET and native Delphi RTL disagree on what formats a hex number may take )

エリア

IDE\Form Designer

説明:

[QC Short Description]Deleting a TTwilightColorMap from a for kills the IDE.

[QC Description]This report is related to AIR 27130.

Create a new BCB project. Drop a TActionManager, TActionMainMenuBar, TActionToolbar and TTwilightColorMap on the form.

Double-click the TActionManager and add 3 standard actions: File/Open, File/SaveAs and File/Exit. Drop the File category on both bars.

Set the colormap of each bar to TTwilightColorMap.

Save the project so you can repeat this test without setting everything up again.

Select the TTwilightColorMap and delete it. The IDE throws this exception repeatedly until you kill it with task manager.

Followup: After sending the AIR, this time the IDE did not repeatedly throw the exception - it only occurred once, although the IDE remained unresponsive. I left this way for several minutes after which I killed it with the task manager.

I have repeated this 4 times, with a reboot between the 3rd and 4th attempt, which may be why the failure mode was a bit different on the 4th attempt.

In all cases, the dropdown with the name and type of the component located above the object inspector flashed continuously.

I have attached a sample project. You should be able to open this project and delete the TTwilightColorMap and see the problem immediately.QC Entry 27132

エリア

IDE\Form Designer

説明:

[QC Short Description]Frames no longer available to insert at design time (after project migration)

[QC Description]Also see automated report 49344

Project was migrated from BDS2006

Created a new for and tried to add some of the already existing frames to the form. Got popup dialog telling me that I have not got any frames in my project and that I should add some.

Tried exiting IDE and restarting.

Still says no frames!

Tried creating a dummy frame.

I can add the dummy frame but all the others are missing.

Tried removing one of the exisiting frames from the projectand then adding it back again.

Ok this fixes it BUT do I have to do this for every frame!!!?

Its clearly a bug in the migration of older projects.

What I have not worked out yet is where the list of available frames is stored so I can fix it manually if necessary/possible.Its not in the .cbproj fileQC Entry 49347

エリア

IDE\File Handling

説明:

[QC Short Description]Adding huge file to a project locks the IDE up

[QC Description]I tried to add a 26 MB source code produced as a result of pre-processing a source. I renamed .i to .cpp and added it to a project. Got what amounts to 100% CPU use. Had to kill the IDE after a minute or so.

Upon restart, was able to add the file.QC Entry 50809

エリア

IDE\Code Completion

説明:

When code completion fails for a header file, get multiple "Unable to open input file ''" messages in the build tab.

[QC Description]The attached code in 'Steps' gives incorrect result (14) in C++Builder2007 compared to BDS2006 (16) when data alignment set to 'Word'.

QC Entry 51652

エリア

VCL\Emulation Classes

説明:

[QC Short Description]DelphiInterface bug?

[QC Description]Shouldn't the following DelphiInterface code be checking for an existing source interface BEFORE calling QueryInterface? All of the other constructors and assignment operators test for a valid source interface first. I'm getting crashes in my code because of this:

[QC Description]When the "local variable view"-window is open and you step through the program with F7 (with IDE-Classic-Keyboard) the debugger allocates on each step some memory which is never released.(to be exact: the memory is released when the debugger is stopped)QC Entry 25807

エリア

Debugger\Evaluator ToolTips

説明:

[QC Short Description]Tooltips change value of a variable

[QC Description]Inspecting an expression with increment and decrement operators causes the value of a variable to change.

This happens in BCB 2007 as well.QC Entry 49193

エリア

AddOn\IntraWeb

説明:

[QC Short Description]New C++ Builder Intraweb apps will not compile

[QC Description]When you try to compile a new C++ builder Intraweb application, you get a message: " Unable to find package import: IntrawebDB_90_100.bpi"QC Entry 51273

エリア

Internet

説明:

[QC Short Description]Windows 98 Compatibility with inet100.bpl

[QC Description]My application after i migrate to bds not is running more on windows 98 and we have some clients that use windows 98. The problem is. My application uses unit inet. this unit call inet100.bpl that call inet100.dll that call Activeds.dll. But, windows 98 does not have this dll. We are having problem in nt 4.0 too.QC Entry 40729

[QC Description]There seems to be a problem in that the autogenerated event handler code is inserted using TBytes instead of TIdBytes (actually supposed to be the same types, but not recognized as such for some reason...) The TBytes clashes with another var typedef, and changing the TBytes by hand to TIdBytes causes the handler data types to match the TBytes expected by C++ Builder.

Hand editting the TBytes to a TIdBytes and trying to recompile gives a dialog box error message:"The IdUDPServer1UDPRead method referenced by IdUDPServer->OnUDPRead has an incompatible parameter list. Remove the reference?"

- Answering yes removes the event handler, and the incoming data does not get detected

- choosing no allows the compilation, but then every time the file is either saved or recompiled, this dialog must be dealt with. I am also unsure if the compiled program is actually functional in this state.

Is there a patch for this? (either to Builder or Indy?)

Can Indy source be recompiled? If so, what is the procedure for this?

I expect many of the Indy components that utilize TIdBytes may have this compile issue. This is just the first one I tried to use.QC Entry 49141

エリア

Linker

説明:

[QC Short Description]Incorrect Linker warning LINN32

[QC Description]I get an obviously invalid linker warning when building the attached project.

It says:

[Linker Warning] Warning: LINN32: Last line 35187 (8973h) is less than first line 35187 (8973h) for symbol "<null>" in module midas.cpp

The reported numbers are equal, so by definition neither is less than the other.

This warning seems to have no ill effect on the project. But others have reported this warning with projects that lead to AVs.

Note: this is the same project used for QC 31012.

QC Entry 31040

エリア

ActiveX\IDE\Wizards

説明:

The auto object wizard opens the OBJREPOS directory with a request for write access, and fails with a meaningless error message when itcan't get write access: The parameter is incorrect.[QC Entry 18513]

エリア

CodeGuard

説明:

[QC Short Description]CodeGuard does not appear on Tools menu

[QC Description]The documentation (somewhere) made me believe I should see CodeGuard listed on the IDE's Tools menu. I don't see it there, under any personality.QC Entry 49359

エリア

Tools CL\ImpLib

説明:

[QC Short Description]Implib can't import some functions directly from an MSVC dll

[QC Description]You should be able to run implib -a mylibBcb.lib mylib.dllto generate a BCB OMF formated import library to link against an MSVC .dll that uses its default _cdecl calling convention for exported C functions,

However, for my DLL all functions except for one are properly exported.

This was a documented problem on 7/2/98, see artical ID 16809 : http://bdn.borland.com/article/0,1410,16809,00.html

There is a workaround quoted in the artical. Also see this helpful artical: http://www.bcbdev.com/articles/vcdll.htm

from artical 16809 : http://www.bcbdev.com/articles/vcdll.htm

To get around it:

(1) run impdef on the .DLL.(2) edit the .DEF file and change lines which look like:Foo @1to look like_Foo=Foo(3) run implib on this .DEF file.(4) link to that import library.

Seeing as how BCB 6.0 still uses build 3.0.22 of IMPLIB I'm guessing an upgrade won't help me.

QC Entry 5167

エリア

Compiler\C++

説明:

[QC Short Description]Incorrect project override options

[QC Description]From time to time (and fairly frequently - at least once every 10 minutes) I get the following [BCC32 Errors]:

Looking at the CPU view, all params are passed as 32-bit values on the stack, but 'c' does not get sign-extended, while 'b' does. I have "treat enums as ints" off in both cases.

Thomas Maeder [Teamb] has commented:

"Integral promotion has to happen; the resulting type isn't necessarilyint, though, but the first of the set {int, unsigned int, long,unsigned long } that can represent all the values of the enumerationtype; if no one can, the result type is unsigned int."

> enum {AAA,BBB,CCC} c=AAA;

"The values of this type are between AAA and AAA|BBB|CCC, i.e. between0 and 3. The result type of the integral promotion should therefore beint. Sounds like a compiler bug."QC Entry 30643

エリア

Compiler\C++

説明:

[QC Short Description]VIRDEF error shows up in code that will compile in previous versions.

[QC Description]The compiler fatal error occurs when all following conditions are met :- -v option is active,- declare a template function or class with __declspec(package) specifier- write a specialization - instantiate the specialization.

As I explained in a comment I added to this report, it works fine if any of the conditions above is not met.

By the way, if you do not provide the 'defaut' implementation nor any speciailization, the compiler shouldn't be able to intantiate. It doesn't complain however. This is another bug I reported in report 36329.

It is quite difficult to check against the presence of the -v option in the code because of another bug (see NOTE in code I added in the Comments page) and possibly other conditions not discovered yet.

I haven't found yet the benefit of the -v option but it is probably something you would check one day just because you hope it can help you....

Workaround is to keep all templatized code internal to the library and use another simple class, that will be exportable, to encapsulate the working class.

Because of the confusing Project Option window (the Build Configuration choice is confusing) , you need to be very careful when changing an option from there and want to apply it to your next compilation.It is hence useful to display in the message window the actual command line created by the IDE to compile a unit (can't find any more however where this option is).QC Entry 36326

[QC Description]I'm not sure if the problem is in dcc32 (generating wrong *.hpp files from *.pas units) or maybe in cpp rtl or bcc32 compiler.

The problem is in a Delphi component that has several private TRect fields,when dcc32 generates the *.hpp header files, that fields need to be wrapped around #pragma pack(push,1) otherwise c++ compiler mismatches the offset addresses of the TRect structures.

This very same package runs fine when used from Delphi personality, and this very same test code works fine in BDS 2006.

The TeeChart Standard v7 that comes with RAD2007 also works fine, so I guess there's something strange in my test project / test package, or the test Delphi sources are incompatible with C++.

[QC Description]The C++ compiler ignores the byte alignment from .pas files. We configured the delphi compiler to use 1 byte align, but in the genreated .hpp file we found #pragma pack(push,4) statements. I think, that this is an strange behavior, since our code in pascal expect byte-aligned data.QC Entry 47943

エリア

RTL\C++

説明:

[QC Short Description]New Dinkumware has non compliant std::tr1::hash in <functional>

[QC Description]In the <functional> header from the new Dinkumware library there is an implementation for the std::tr1::hash class template that is not compliant. Both TR1 and the current draft standard specify that std::tr1::hash should inherit from std::unary_function<T, std::size_t>, which is not the case in the new library.

I'm aware that as neither TR1 nor C++0x are actual standards Dinkumware is sort of free to do as they choose; however the current implementation breaks a few Boost regression tests and it looks like a reasonably simple fix.QC Entry 45266

The ISAPI DLL wizard seems to depend on the assumption that DLL projects are created with a <ProjectName>.cpp that contains DLLEntryPoint. This is not so in CB2007 where DLL projects are created with a File.cpp containing the entry point. This results in non-functional projects being generated by the wizard.

QC 50592I have created a very simple ISAPI SOAP Server App(just added the wizard sample methods to the webservice) under CB2007, when i test the app i get the error 500 Internal Error, the same simple app on BDS2006 works fine.

エリア

Modeling

説明:

[QC Short Description]Model View hangs

[QC Description]Trying to explore my code using Model view.

Asked if I wanted to configure the project for model view. Seemed to work, but was very slow. Clicking on a class function in the structure pane, seemed to hang it. No visible results just locked up.

Second time in, when asked if I wanted to configure the project for model view, crash, with only Debug and Close buttons available.QC Entry 46250

エリア

Modeling

説明:

[QC Short Description]All attempts to add modeling to project fail

[QC Description]I have repeatedly attempted to add modeling to the attached project and it has failed every time.

In my real project using build 2700, when I add modeling the button bars blank then I get a dialog saying DAD Studio needs to close and offering to debug.

I copied the project to another directory, modified a few text strings so it will not access our server, and removed all non-project and output files from the project. I also added to the folder the files from a custom control that it uses.

From the altered copy of the project when I try to add modeling the IDE does not crash, instead it shows a progress dialog indicating thati it is processing files, then freezes after processing just a few files - does not always stop on the same file. When it stops it keeps processor activity maxed out, so I cannot get much work done - have let it run for an hour, but still no more progress.QC Entry 46791

See also 250946

エリア

Modeling

説明:

[QC Short Description]Project saved with model diagram displayed very slow to open

[QC Description]A project saved with a large model diagram displayed is very slow to open.

How slow? About 15 minutes in a VM (which obviously slows things down a bit, but not by a lot on my machine).