RAD Studio 2007 December Update List of Core Bug Fixes

By: Chris Pattinson

Abstract: 284 core bug fixes (84 from Quality Central) sorted by area addressed in the December 2007 Update

Below is a list sorted by product area for all the fixes included in the RADStudio 2007 December Update. These fixes apply to Delphi 2007 and C++Builder 2007 where applicable.

A Delphi specific list of fixes can be found here:

A C++Builder specific list of fixes can be found here:

A Delphi.NET specific list of fixes can be found here:

Quality Central references numbers can be found on the left side of this document. This document has been sorted by product area. We hope you all enjoy this December update to the RAD Studio 2007 line of products, and enjoy a happy holiday season.

- CodeGear RADStudio Development Team

QC#

Project Area
C++Builder Demos
Description: Steps:
An AV occurs on run when you attempt to drop a component from the shell Controls onto a form. Deleting the component from the form results in an AV in the vcl100.bpl

<details in attachment>

WORKAROUND: Turn off build with Runtime packages. Deleting though still returns an AV in vcl100.bpl
+ Go to: C:\Documents and Settings\All Users\Documents\RAD Studio\5.0\Demos\CPP\Apps\ShellControls
+ open the bcbshlctrls.bpk (it will be converted)
+ Project | Build
+ File | Close All (you can save if you want)
+ Open dclshlctrls.bpk( it will be converted)
+ Project | Build
+ Right click on the project in the PM
+ Select Install
//exp & act: successful install of the component into the tool palette

+ File | New | VCL Forms Application - C++ Builder
+ Drop TShellTreeView (or any of the shell controls found under the Samples section
+ Project | Build
+ Run | Run
//exp: Project runs with the components on the form
//act: Stops at CPU window and pressing run again results in AV:
Debugger Fault Notification
---------------------------
Project C:\Documents and Settings\testuser\My Documents\RAD Studio\Projects\test1\Debug\Project1.exe faulted with message: 'access violation at 0x00008ecf: access of address 0x00008ecf'. Process Stopped. Use Step or Run to continue.
---------------------------
OK
---------------------------

+ click OK
+ Reset the IDE
+ Go to the Form Designer
+ Delete the component
//exp: no error
//act:
---------------------------
Error
---------------------------
Access violation at address 2018B9A7 in module 'vcl100.bpl'. Read of address 00000008.
---------------------------
OK Details >>
---------------------------
<details attached in .txt file>

Workaround: Turn off build with Runtime Packages on the VCL Form application before dropping the component. Deleting the component still returns the AV though.

QC# Project Area
C++Builder Demos
Description: Steps:
Missing ShellControls source code that ships with Delphi. If you install RAD Studio or Delphi 2007, the following directory gets installed:

C:\Documents and Settings\All Users\Documents\RAD Studio\5.0\Demos\DelphiWin32\VCLWin32\ShellControls

If you just install C++ 2007, the ShellControl demo doesn't get installed.

See also: RAID 253367.
Customers upgrading from C++ Builder 6 who used the shell controls require the source to build and install the components into the IDE.

http://caseviewer.borland.com/CaseViewer/CaseDetails.jsp?caseNumber=672380

File List:

dclshlctrls.dcr
dclshlctrls.dpk
dclshlctrls.dproj
dclshlctrls.rc
dclshlctrls.res
RootEdit.dfm
RootEdit.pas
ShellConsts.hpp
ShellConsts.pas
ShellCtrls.hpp
ShellCtrls.pas
ShellReg.pas
vclshlctrls.dpk
vclshlctrls.dproj
vclshlctrls.res

UPDATE: These files should be placed in <DemoDirInstall Path>\CPP\Apps\ShellControls directory.

QC# Project Area
C++Builder Demos
Description: Steps:
Missing C++ specific Shell Control demo and package from the C++ personality delivery. Please add
bcbshlctrls.cbproj
dclshlctrls.cbproj

these should be checked in already but need to get into the build.

QC# Project Area
C++Builder Documentation
Description: Steps:
The index is missing entries in various cases. I'm not sure how widespread this is, but it might be quite common. I noticed it for new files I added in the Borland.Data.AdoDbxClientProvider namespace. In particular, the following entries are missing:

TAdoDbxCommandBuilder.Create
TAdoDbxConnection.DataSource
TAdoDbxDataAdapter.RowUpdated
TAdoDbxDataAdapter.RowUpdating
TAdoDbxDataAdapter.Create
TAdoDbxDataAdapter.HasRows
TAdoDbxParameter.SourceColumnNullMapping
1. Run help viewer.
2. Click Index tab at bottom right.
3. Enter "Borland.Data.AdoDbxClientProvider" in "Look for:" field to see entries for this namespace.

QC# Project Area
Delphi Documentation
Description: Steps:
Help Update

Running 'Rad Studio Documentation' stand alone I see 'No table of contents has been defined for current Help collection'
Run Update install
From Windows Start menu
CodeGear Rad| Rad Studio Documention

QC# Project Area
Delphi Documentation
Description: Steps:
[Function Issue]
Help button of "Add Source Breakpoint" window and the document screen do not support.

Please see attach.

[MSeki on 16/10/07 (After HelpUpdate/1013/)]
This issue has been resolved.
1. Watch "Add Breakpoint" of "Breakpoint List".pane.
2. Select "Source Breakpoint..." => "Add Source Breakpoint" window appears
3. Push "Help" Button
4. "Add Address Breakpoint or Add Data Breakpoint" is displayed in DocumentExplorer.

QC# Project Area
Delphi Documentation
Description: Steps:
Start IDE without click anything, press F1 got error.

---------------------------
Error
---------------------------
No help found for context.
---------------------------
OK Details >>
---------------------------
1. Start IDE
2. press F1

//exp: Help's default page
//act : error

---------------------------
Error
---------------------------
No help found for context.
---------------------------
OK Details >>
---------------------------

QC# Project Area
Delphi Documentation
Description: Steps:
//This are the remaining issues from 254976

Bad links in default.htm file.

There are other links that don't work
Backfish SQL documentation
http://dn.codegear.com/article/36770 is incorrect : page not found

Eco documentation
http://dn.codegear.com/article/36853/ is incorrect: page not found
Run BDS. In the default page, click on the Help button. Check the different options. Some links don't work.

QC# Project Area
Delphi Documentation
Description: Steps:
Help on Help returns

Unable to get navigation object [!DefaultDynamicLinkIndex]

URL:ms-help://borland.bds5/MS.NETFramework.v20.en/MS.Dexplore.v80.en/dv_dexplore/html/92b51076-8841-45a2-8e2b-
bmp attached
Run help
Help|help on Help

QC# Project Area
Delphi IDE
Description: Steps:
When F1 is pushed on TObject, it is necessary to display help.

[HelpUpdate]
1. Run "Delphi for Microsoft Win32" or "C++Builder".
2. Create New VCL Form Application.
3. Drop New TObject(ex.TButton)
4. Click TButton1.
->TButton1 is active.
5. Push F1.
->Help is not displayed.
QC# Project Area
Delphi IDE
Description: Steps:
Contains and Requires are not able to translate in the tree of Project Manager.

[mt - also in French D2005]
same in Japanese Update2 and German Update2.

Are "Contains" and "Requires" hard corded?
1. File /New/ Package - Delphi pour Win32
2. check Project Manager
// Contains and Requires are not translated in the tree.

    52642

QC# Project Area
52642 C++Builder IDE
Description: Steps:
[QC Short Description]
New Forms App does not autocreate main form if autocreate forms is turned off

[QC Description]
After installing patch 3 to CB2007, a new C++ forms app no longer includes the code to autocreate the main form if autocreate forms is turned off. App will run, but main form is not displayed.

The main .cpp file that is created looks like this:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
SetApplicationMainFormOnTaskBar(Application, true);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------

Note that there is no Application->CreateForm() call.
QC Entry 52642
Install Update 3 to CB2007 or install RAD Studio 2007 Tools | Options | Environment Options | VCL Designer | Module Creation Options | Auto create forms and data modules - uncheck this option OK File | New | VCL Forms app - C++ Run | Run Exp: Project will compile, run and display a blank main form Act: Project compiles, runs, and exits without ever showing the main form. Look at Project1.cpp file in editor Exp: File will create the main form with a line like this: Application->CreateForm(__classid(TForm1), &Form1); Act: Line to creat the main form is missing Tested in both CB 2007 + update 3 and RAD Studio 2007

    43860

QC# Project Area
43860 Delphi IDE
Description: Steps:
[QC Short Description]
Vista problems with XML Data Binding Wizard

[QC Description]
The Delphi 2007 XML Data binding wizard tries to write to the program files folder (C:\Program Files\CodeGear\RAD Studio\5.0\bin\xmldbwizard.ini.). In Vista this only works if the user has launched Delphi as admin..
QC Entry 43860
1. Start Delphi 2007 in Vista
1.5 New Delphi Win32 VCL App
2. From the File menu select New -> Other
3. In the new item dialog, select Delphi Projects -> XML -> XML Data Binding
4. Click OK
5. You get the following error dialog:

---------------------------
Error
---------------------------
Unable to write to C:\Program Files\CodeGear\RAD Studio\5.0\bin\xmldbwizard.ini.
---------------------------
OK Details >>
---------------------------

    43305

QC# Project Area
43305 Delphi IDE\Dialogs\Project Options
Description: Steps:
[QC Short Description]
Duplicate DEBUG/RELEASE defines

[QC Description]

After using the "Default" checkbox on "Project Options", whenever a new project is created it has a duplicate define DEBUG that stays even when switching to RELEASE options.
QC Entry 43305
1) New project 2) Project Options, Directories/Conditionals, Check the "Default" check box and click OK 3) Close all 4) New project 5) Project Options, Directories/Conditionals: duplicate DEBUG appears in "Debug" options; DEBUG;RELEASE show in "Release" options.

    44669

QC# Project Area
44669 Delphi IDE\Dialogs\Project Options
Description: Steps:
[QC Short Description]
Image base setting is not persisted

QC Entry 44669
---added - TG ----
1. After saving image base to another value, save project and close.
2. Open the dproj in a text editor to verify the ImageBase was added to the project
3. Reopen the project
4. In the Project Manager, right click Project1, and Save.
5. Re open the dproj in text editor, notice the ImageBase was removed.

----ORIGINAL---------------
Situation A:

1. Set an image base other than $0040000 in Project Options / Linker
2. Save and Close the project
3. Open the same project

Expected: Image base remains as set
Found: Image base has reverted to $0040000


Situation B:

1. Set an Image base other than $0040000 for Release Build in Project Options / Linker
2. Select Debug build
3. Select Release build

Expected: Release build Image base remains as set
Found: Release build Image base has reverted to $0040000


Situation C:

1. Set an image base other than $0040000 in Project Options / Linker
2. Save and Close the project
3. Verify that the correct image base is saved in the DPROJ file
4. Open the same project
5. Open the Project Options Dialog, then click OK
6. Build the Project

Expected: The built DLL should have the specified image base
Found: The built DLL has image base $0040000

QC# Project Area
C++Builder IDE\Project Management\Project Options
Description: Steps:
The -B switch (compile via assembly), when placed in "Other Options" is not passed to the compiler correctly -Open the attached project and build
//exp and act:
[BCC32 Error] AsmUnit.cpp(28): E2329 Invalid combination of opcode and operands
[BCC32 Error] AsmUnit.cpp(38): E2329 Invalid combination of opcode and operands
(these errors are due to limitations in BASM)
-Project | Options | C++ Compiler | Advanced Compilation | Other Options and add:
-B
-Build
//exp:
-B is passed to the compiler and there are no errors (TASM, not BASM is used)
//act:
It appears that .asm is generated in one step, then assembled in a separate call to TASM,
This results in many linker errors because tasm32.exe was not invoked with /ml

Also, adding #pragma inline to a file with inline asm has the same affect of
explicitly invoking tasm32.exe, e.g.
-Create a new VCL Application
-Double-click the form and add some inline assembly,e.g.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
asm test eax,0
}
-Add #pragma inline at the top of the unit and build


QC# Project Area
Delphi IDE\Code Editor
Description: Steps:
Popup menu in code editor for an XML file contains non grayed items which do nothing.
"Refactoring" doesn't do anything, should be grayed.
"Rechercher" has an arrow, indicating there is a submenu, but there isn't.
"Compléter la classe sous le curseur" not grayed but doesn't do anything and so should be grayed.
See screen dump.
"Basculer le point d'arrêt" is a non-sense in this context. Should be grayed.
Same popup is shown for HTML, JavaScript, ...

QC# Project Area
C++Builder IDE\Code Editor
Description: Steps:
[Erreur fatale] F1009 Impossible d'ouvrir le fichier d'entrée ''

I get this error when I move the mouse cursor above code into the editor window when I have code giving the error "[BCC32 Erreur] Httpcontcod.hpp(88): E2347 Mauvaise correspondance de paramètre dans le spécificateur d'accès read de la propriété Coding" as reported in report 251066.

Attached: Screen dump and code causing that trouble.

// Francois Piette
Still in 2709.7128.2
1. unzip ics.zip in any folder. Be sure to restore directory structure.
2. open delphi\vc32\IcsBcb110.cbproj, compile and install
3. add delphi\vc32 to the path so that the components are found
4. open Cpp\Internet\Bcb2007\Bcb110Sam.groupproj
5. select and build HttpTst.exe project
=> You get the error reported in report 251066
6. In the code editor where the IDE has opened HttpContCod.hpp, let the mouse fly all over the code, you'll quickly get the error
=> [Erreur fatale] F1009 Impossible d'ouvrir le fichier d'entrée ''

    51136

QC# Project Area
51136 Delphi IDE\Code Editor\Error Insight
Description: Steps:
[QC Short Description]
REPRODUCABLE Error Insight Eats All Memory

[QC Description]
I finally found something reproducable that shows Error Insight consuming memory to the point that the IDE slows to a crawl (or worse). See steps..
QC Entry 51136


[ref. 244356, looks like similar issue.]
1) I bring up an out of the box (well, as downloaded) copy of the Delphi personality on a freshly booted machine. 2) Open a new VCL Forms Application. 3) Open the Windows Unit and the Classes Unit 4) Have Task Manager running so you can follow the Mem Usage of bds.exe. The CPU Time is interesting to watch as well. 5) When looking at the Windows Unit, you should see three Error Insight messages (QC51111). 6) Go down to the TYPE directive at line 109 and put a couple of // in front of it to comment it out. Wait patiently for about 7-10 seconds while the Error Insight list gets built in the Structure window. Get used to seeing how long this takes... 7) Switch to the Classes unit and comment out the TYPE directive on line 72 (it isn't the first TYPE) 8) You'll now see a few Error Insight messages from Classes. Leave classes with these errors. 9) Switch back to the Windows unit where the TYPE is commented out. 10) Position the cursor right after the two // you added. 11) Now comes the fun... While watching the list of Errors in the Structure box, backspace twice to delete the two // characters. As soon as big bunch of Error Insight error messages disappear (three will remain), type the two // characters again and wait for all of the Error Insight Messages to reappear (7-10 seconds). 12) Repeat step 11, alternating between having the errrors and not having the errors. Remember to delete the // as soon as the error messages finally appear and add the // back after the error messages quickly disappear. 13) Follow the Mem Usage while doing this -- things bog down when you get up to about 1.2 GIG of memory usage. (Don't forget to fix the source files when you are done) Choice of files isn't significant -- just something to generate lots of errors... Up-to-date XP 2 Gigs Memory 3.4 Gig Pentium D (so two processors)
QC# Project Area
Delphi IDE\Code Editor\Error Insight
Description: Steps:
Error Insight has shows an error for code involving calling convention directives.

(JJS: See related compiler issue 238688)

// Francois Piette 2007.09.18
Still in build 2804.9245 (RAD Studio 2007)
Still in build 2825.9366_VCL_Update.8
Load the attached program into the IDE as a Win32 app.

See that error squiggles are indicated for the code on the line marked with #1.

Nevertheless, the program compiles as expected.

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
TMyFuncPtr = procedure (const Msg : String); cdecl;
procedure MyFct(const Msg : String); cdecl; forward;
const
MyFctPtr1 : procedure (const Msg : String); cdecl = MyFct; //#1
MyFctPtr2 : TMyFuncPtr = MyFct;
procedure MyFct(const Msg : String); cdecl;
begin
WriteLn(Msg);
end;
begin
MyFctPtr1('Test1');
MyFctPtr1('Test2');
end.
QC# Project Area
Delphi IDE\Code Editor\Error Insight
Description: Steps:
stdcall causes error insight errors. New VCL App
add the following type decl;

type
TTestRecord = record
E1: procedure stdcall of object;
E2: procedure of object stdcall;
E3: procedure of object; stdcall;
end;

//error insight is flagging 6 different errors. the code compiles fine.

QC# Project Area
Delphi IDE\Code Editor\Error Insight
Description: Steps:
When the Editor options "error insigth" is enabled, Adding comments, new lines and deliting lines within a class definition is causing performance issue.

After dding few blank lines between class fields definition, the "private bytes" of the bds process increase of 1K.
Removing those makes this number to increase of 1 more K per line removed.

The "Private Bytes" number will not decrease unless even when those comments or blank lines are removed.
BDS needs to be re-started to see "privates bytes" number change.

[ref. 254984 for other steps.]
1. Open a pas file with class definition

2. start process explorer and open the properties window for it - [Private bytes during at this point of this test is 139 484 K]

3. add blank lines between fields of a class definition. -[ "private bytes" = 140 828 K"]

4. remove the same lines [ "private bytes" = 144 284K"]

5. wait ....10 minutes. [ "private bytes" = 144 284K"]

will update this raid with the automated tests once it is ready


    51428

QC# Project Area
51428 Delphi IDE\Code Editor\Help Insight
Description: Steps:
[QC Short Description]
REPRODUCIBLE Help Insight "Object Reference Not Set To An Instance of an Object"

[QC Description]
I put together a relatively simple case that will give an Object Refererence Not Set To An Instance of an Object" error dialog box every time you hover over an identifier.

The same thing happens with many other symbols defined in the D3DX9 unit.

Code compiiles without error.

This has been around for a long time...
QC Entry 51428


STACK TRACE IN COMMMENT.
This uses DirectX code from the Clootie/Jedi library. Load the project title Bug in the attached files. In the main program, hover the mouse cursor over D3DXMatrixIdentity and you'll get an error dialog. D3DXMatrixIdentity is an inline procedure declared in the D3DX9 unit.

    22343

QC# Project Area
22343 Delphi IDE\Form Designer
Description: Steps:
[QC Short Description]
F1 not working from embedded form-designer

[QC Description]
Selecting a control on the embedded VCL Form designer and pressing the F1 button fails to display help for the selected control.

Applies only to the embedded designer! With the floating designer F1 still works as in previous versions
QC Entry 22343

[10.0.2237.38180 ( 2/16/2006) : true ]
[HelpUpdate]
!. Start a Delphi with just the Win32 personality (with the default docked layout and the embedded designer). 1. Start a Win32 project. 2. Place a TButton on the main form. 3. Click on TButton so that it is selected. 4. Press F1. In previous versions of Delphi (e.g. Delphi 5), help on TButton would be displayed. In Delphi 2006, nothing happens.

QC# Project Area
C++Builder IDE\File Handling
Description: Steps:
_GetCppExplorerController is called on multiple threads, but it is clearly not a thread safe routine. FastMM reports double free attempts on a global data module variable when working with C++ modules.
Run the IDESmokeTest on a machine with dual core processor. Observe FastMM error reports when reopening a C++ project (consistently, but not 100%).

    44578

QC# Project Area
44578 Delphi IDE\Open Tools API
Description: Steps:
[Windows Vista]
[QC Short Description]
IDE Crashes on shutdown with DLL expert loaded

[QC Description]
When this very DLL export (attached) is loaded the IDE crashes on shutdown (the Windows Vista "Blabla has stopped working" dialog shows up).
QC Entry 44578
Install on Windows Vista (note from QA: does not occur on Windows XP)

1) Compile the attached expert project or use the included DLL
1) Add DLL expert to the registry path HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Experts using an string key such as TestExpert with a value of C:\<PathTo>\IDECodeFind2007CrashTest.dll
2) Start Delphi 2007
3) When completely started up, close the IDE using the main window caption bar X

-> EXP: IDE shuts down normally
-> ACT: IDE crashes with this type of error (seen under the Delphi 2007 debugger):

---------------------------
Debugger Fault Notification
---------------------------
Project D:\Borland\Delphi2007\bin\bds.exe faulted with message: 'access violation at 0x05ac6c0c: access of address 0x05ac6c0c'. Process Stopped. Use Step or Run to continue.
---------------------------
OK
---------------------------

The crash happens after FinalizeWizard completes and the DLL is unloaded. The call stack at the time is like this with the top frames repeated many times:
:77dcee57 ntdll.KiUserExceptionDispatcher + 0xf
:77deb6a3 ; ntdll.dll
:77dcee57 ntdll.KiUserExceptionDispatcher + 0xf
:77deb6a3 ; ntdll.dll
:77dcee57 ntdll.KiUserExceptionDispatcher + 0xf
:77deb6a3 ; ntdll.dll
:77dcee57 ntdll.KiUserExceptionDispatcher + 0xf
:77deb6a3 ; ntdll.dll
:77dcee57 ntdll.KiUserExceptionDispatcher + 0xf
:2000a204 UnregisterModule + $20
:2000ac6e ; C:\Windows\SysWOW64\rtl100.bpl
:77dfa664 ntdll.RtlDestroyQueryDebugBuffer + 0x100
:77deb8f2 ; ntdll.dll
:77deb915 ; ntdll.dll
:76a292c7 kernel32.ExitProcess + 0x15
:200078c9 @Halt0 + $C5
:00400000 ; C:\<IdePath>\bin\bds.exe

QC# Project Area
Delphi IDE\VersionInfo
Description: Steps:
IDE doesn't save version info for the localized project when the localized project for a project is present.

Clarify 672774
****UPDATED****
1. I create a simple sample project (VCL forms application - Delphi for Win32)
2. I then choose Project | Languages | Add. I then choose to add French Canada.
3. I save when prompted.
4. I recompile the project when prompted.
5. I now have my project.frc in the project manager, and it compiles / works properly.
6. I then choose Project | Options and select 'Include version information in project.'
7. I can now modify the version information, such as set Major = 3. Then, File, Save all.
8. When I build the project.frc and go to view the properties on the built frc, I do not get the version info.
9. I set the same version informations on project.frc using the right-click context menu -> options.
10. If I save the project group, close it, re-open it (reopen the Project group, then activate Project.frc) and choose Project | Options, the 'Include version information in project' does appear, however, the right-click context menu of project.frc does not display the correct version information...

****ORIGINAL****
1. I create a simple sample project (VCL forms application - Delphi for Win32)
2. I then choose Project | Languages | Add. I then choose to add French Canada.
3. I now have my project.frc in the project manager, and it compiles / works properly.
4. I then choose Project | Options and select 'Include version information in project.'
5. I can now modify the version information, such as set Major = 3. Then, File, Save all.
6. When I build the project.frc and go to view the properties on the built frc, I do not get the version info.
7. If I save the project group, close it, re-open it (reopen the Project group, then activate Project.frc) and choose Project | Options, the 'Include version information in project' is once again de-selected and all my changes are gone.

    48947

QC# Project Area
48947 Delphi IDE\Class Completion
Description: Steps:
[QC Short Description]
Class completion duplicates code when invoked on certain classes

[QC Description]
When invoked on some classes, class completion will duplicate code; usually what is located in the topmost private section.

This problem is present in build 2738, but not in 2728.
QC Entry 48947
1. Start Delphi build 2738. 2. Open the attached dupunit.pas. No need to create a project first. 3. Move the cursor somewhere in the class and invoke Class Completion (Ctrl+Shift+C). 4. The expected behavior is that nothing should change, but everything in the private section is duplicated and class completion produces code that doesn't compile.

QC# Project Area
Delphi IDE\Packages
Description: Steps:
When a file is added to a package project and there is a .dcr with the same base name as the file, it leads to duplicate .dcr's in the project causing duplicate resource errors.
[this problem was introduced to Spacely post-RTM]
0. Install Spacely and Cogswell
[an important step, the latest Spacely only does not show the problem]
1. Unzip attachment to a directory
2. File | New Delphi Package
3. Project | Add To Project and select the Unit1.pas you unzipped in step 1
4. Go to Project | Remove From Project notice the list contains:

Unit1.dcr
rtl
Unit1
Unit1

5. Remove one of the Unit1s
6. Go to Project | Remove From Project and notice that the list is the same
or there might now be two Unit1.dcr's

alternate steps to see the duplicate dcr's
1. Unzip attachment to a directory
2. File | New Delphi Package
3. Project | Add To Project and select the Unit1.pas you unzipped in step 1
4. Go to Project Manager and remove Unit1.pas from the project
5. Go to Project | View Source and notice two entries for Unit1.dcr,e.g.
package Package1;

{$R *.res}
{$R '..\test\Unit1.dcr'}
{$R '..\test\Unit1.dcr'}

    50146

QC# Project Area
50146 Delphi IDE\Packages
Description: Steps:
[QC Short Description]
Project options dialog corrupts the list of DCR files in package DPK file.

[QC Description]
The list of DCR files in the package DPK file gets "corrupted" to include duplicate entries, which in turn prevent the project from building. Manual editing of the DPK file can resolve the problem.

QC Entry 50146
0: First, copy the attached UNIT1.PAS and UNIT1.DCR to a folder on your system. (or use any other PAS/DCR pair that you have) 1: Launch RAD Studio 2: File/New Package - Delphi Win32 3: Right-click on package1.bpl in project manager, and "View Source". You'll see this at the head of the file. package Package1; {$R *.res} {$ALIGN 8} ... 4: Project/Build Package 1 - this works just fine. 5: Project/Add to Project "Unit1.pas" (from step #0) Note that the package "view source" (the DPK file) now looks like this:- package Package1; {$R *.res} {$R 'dcrbug\Unit1.dcr'} {$ALIGN 8} ... 6: Again, Project/Build Package 1 - this works just fine. 7: Open Project/Options dialog, and click "OK" to close: DPK file now looks like this package Package1; {$R *.res} {$R 'dcrbug\Unit1.dcr'} {$R 'dcrbug\Unit1.dcr'} {$ALIGN 8} ... Note: an additional line will be added each time you repeat this step!! 8: Again, Project/Build Package 1 EXPECTED: Builds ok. ACTUAL: Build fails, with error:- [DCC Error] E2161 Warning: Duplicate resource: Type 2 (BITMAP), ID 1; File C:\Users\Roddy\Documents\RAD Studio\Projects\dcrbug\Unit1.dcr resource kept; file C:\Users\Roddy\Documents\RAD Studio\Projects\dcrbug\Unit1.dcr resource discarded. *NOTE* This should be a warning, but it's being treated like a fatal error. Your package has *not* built.

QC# Project Area
Delphi IDE\Packages\Installing Components
Description: Steps:
[ACCESS VIOLATION]

[QC Short Description]
Rapport d'incident automatisé

[QC Description]
Violation d'accès à l'adresse 216D53B0 dans le module 'delphicoreide100.bpl'. Lecture de l'adresse 00000004.

I was trying to compile and install a component set designed for BDS2006. There are two packages. One runtime and one design time. The runtime package compiled OK. The design time complained about a component already in the design time package and proposed to remove the unit. I asked to see the details in the remove dialog box, then clicked OK to accept removing. The access violation occured when I clicked OK.
QC Entry 42271 and also 42274

It looks like it is not related at all to the attached code. I reproduced with another project. I built a sample project. See attached file PackageCrash2622.zip.

Note: DO NOT DISTRIBUTE ATTACHED CODE !

QC 42271 - removed from Ref No so field testers cannot see the attached code


// Francois Piette
Still there in 2671
Still in 2798, see QC51434
Still in 2825.9366_VCL_Update.8, see QC53376

Steps with the simple projects attached:

1. Launch the IDE
2. Close All
3. Unzip PackageCrash2622.zip in any folder
4. Open ProjectGroup1 from PackageCrash2622.zip
5. Build Package1
6. Install Package1
7. Build package2
=> The IDE pops a dialog box up to let you remove Component1
Click OK to remove Component1
=> ACCESS VIOLATION
8. Shutdown the IDE
=> Send report to Microsoft :-)

NOTE 7/17/07 - This no longer results in an AV. It causes an duplicate resource to be added to the project Source file. if you remove this duplicate, the file now builds fine.
Note by F. Piette 05/08/2007 - Build 2770.8305 still experience duplicate resource added in the package

Step to reproduce with project mentionned in QC42271:

1. Unzip/Untar the attached source code
2. Open GrizzlyBaseD10.bdsproj
3. Build GrizzlyBaseD10.bpl first
=> It complains about GrizzlyBaseR10.bpl not found (normal !)
4. Build GrizzlyBaseR10.bpl (Should be OK)
5. Build GrizzlyBaseD10.bpl again
=> Complain about HotKeyMgr
6. Check "Show details"
7. Click OK
=> ACCESS VIOLATION

Note: DO NOT DISTRIBUTE GRIZZLYPACK ATTACHED CODE !
Note by F. Piette 05/08/2007 - Cannot reproduce this one with build 2770.8305

    42177

QC# Project Area
42177 Delphi IDE\Desktop Layouts
Description: Steps:
[QC Short Description]
In classic undocked mode after you close last unit you will see gray window and if you try to close it using Ctrl+F4 you will get Access violation

[QC Description]
Still exists in 2625.
In classic undocked mode after you close last unit you will see gray window and if you try to close it using Ctrl+F4 you will get Access violation
QC Entry 42177
1. Open IDE. 2. Switch IDE to Classic Undocked layout. 3. Create New VCL application. 4. Close every open unit unit you will gray window. 5. Press Ctrl+F4 and see access violation Expected: After closing of last unit this window should disapear. Actual : This gray window stay in screen and it looks quite bad.

QC# Project Area
Delphi IDE\Translation Tools\Resource DLL Wizard
Description: Steps:
[Nov 2007 Update]
Resource DLL wizard does not work.

Error dialog with "There are no options" show up.

After error message, the RD wizard still active, but the project file does not contain any source files.

Note:
BDS 2007 RTM (D2007 Update3) worked fine.
1. Create new VCL form / W32 application. save it.
2. Select "Project | Languages | Add....
3. Error dialog with the following message.

===============
[Window Title]
Error

[Content]
There are no options for C:\Users\tarisawa\Documents\RAD Studio\Projects\Test\Project1.dproj
===============

QC# Project Area
Delphi IDE\Help
Description: Steps:
Build Events shows up No help found for context.

Additional enabling Help Debug results in the following message in the Help Viewer:

[Help2] CanShowALinkEx ALink = BDS5:13751 ANameSpace = borland.bds5 AIndex = 2 Result = 0
+ Install RTM product
+ Create a VCL Project
+ Click Project | Options | Build Events
+ Click the Help button
//exp: Information on Build Events worked
//act:

---------------------------
Error
---------------------------
No help found for context.
---------------------------
OK Details >>
---------------------------

<details are attached>
---- ADDITIONAL ----
Used Chris B's help tool. The following information was found:


No help found for "hcBuildEventPropSheet"

No help found for "hcBuildEventEditor"

No help found for "bds5:13751"

Interestingly enough, putting in: bds5:13752 results in getting back a help page of:
ms-help://borland.bds5/devcommon/buildconfigurationmanager_xml.html

[Help2] CanShowALinkEx ALink = BDS5:13751 ANameSpace = borland.bds5 AIndex = 2 Result = 0

QC# Project Area
C++Builder IDE\Help
Description: Steps:
error message when pressing help button in project options for c++ app:
No help found for context
1. create new c++ console application
2. open project options
3. press help button

//exp: help shows up
//act: error msg: no help found for context

QC# Project Area
Delphi IDE\Help
Description: Steps:
No help found when clicking button in
Project Page Options dialog
New VCL app
Project|Project page Options
Click Help button

    43181

QC# Project Area
43181 Delphi IDE\Help
Description: Steps:
[QC Short Description]
Pressing F1 after creating a new project doesn't work

[QC Description]
Pressing F1 after creating a new project gives the error "No help found for context"
QC Entry 43181
1. Start IDE. 2. Using the mouse, select File, New, VCL Forms Application - Delphi for Win32. Do not do anything using the mouse after that. 3. Wait until a new VCL Forms app has been created, press F1. EXP: Proper help on how to design a VCL Forms app. ACT: No help found for context

QC# Project Area
Delphi IDE\Help
Description: Steps:
Help button for Pre-Build Event dialog brings up error: No help found for context. 1. new VCL app for win32
2. Project | Options
3. Click on page build events
4. Click on Edit...
5. in Pre-Build Event dialog click help button

//exp: help shows up
//act. error message

    21257

QC# Project Area
21257 Delphi IDE\Help
Description: Steps:
[QC Short Description]
Help needs to use Personality for Search Filter

[QC Description]
Help is supposed to be helpful, I should not have to scroll massive lists of unrelated help just because the IDE doesn't bother to pass what personality should be used for the filter.

QC Entry 21257
[HelpUpdate]
(Simple Example) 1, Open up any personality 2. Type some keyword like TObject 3. Hit F1 ---- Expected Behavior I see TObject only for that Personality (Annoying Example) 1. Open up any Personality 2. Type keyword like "Handle" 3. Hit F1. --- I shouldn't have to scroll through 40 items that don't relate to my personality to find the "open" call I want.

    47408

QC# Project Area
47408 Delphi IDE\Refactoring\Rename
Description: Steps:
[QC Short Description]
Rename refactoring does not work for non-class function parameters

[QC Description]
Renaming of a Parameter that is not part of a class only renames the parameter in the implementation section but does not rename it in the declaration of the
procedure/function.
QC Entry 47408
1. start Delphi for Win 32.
2. create a new VCL application.
3. in the interface section of the form's unit (and outside of the class), declare this function (just above the Implementation keyword):

procedure DoThat( Param1: Integer );

4. in the implementation of the unit, create the following function:

procedure DoThat( Param1: Integer );
begin
end;

5. right-click on the Param1 parameter from the declaration in the interface section.
6. invoke the Rename refactoring and change the name to Param2.
7. the name of the parameter is changed in the implementation section, but not in the interface.
8. invoking Rename on Param1 from the implementation for the procedure will also not rename the parameter in the declaration of the procedure.

    48365

QC# Project Area
48365 Delphi IDE\Start Page
Description: Steps:
[QC Short Description]
When selecting a Newsfeed, the displayed dates of items are about a month in the future

Example:
CodeGear Developer Days June 2007 - The Replays
C++Builder, Delphi 2007 for Win32, Delphi for PHP and InterBase technical sessions
Posted on: Sunday, 29 July 2007

CodeGear - Delphi for Win32 - TRY IT NOW!
eDM for Delphi 2007 for Win32
Posted on: Sunday, 29 July 2007
QC Entry 48365
Open the IDE.
Click on 'Select Newsfeed' in the top right
Select 'Delphi'
//note the dates displayed on the items
reference the dates on the public website using regular browser
//note the date difference

QC# Project Area
Delphi Install
Description: Steps:
[STRING CORRUPTION]
Message characters when I canceled Install were corruption.
(InstallAware Wizard)
1. Run Setup.exe
2. Click Cancel Button At once (InstallAware Wizard)

QC# Project Area
Delphi Install
Description: Steps:
When choosing View, Data Explorer from a fresh installation of RAD Studio 2007 R2 Architect, Data Explorer shows Object not set to an instance of an object. And there's no Ado.Net data providers shown in Data Explorer. 1. Install RAD Studio 2007 R2 Architect with all features on Windows XP
2. Start IDE.
3. Choose View, Data Explorer

EXP: No errors
ACT: Object not set to an instance of an object. And there's no Ado.Net data providers shown in Data Explorer.

Alternative steps

RAD Studio 2007 RTM Arch on Windows XP
1. Select Modify, Repair or Uninstall from RAD Studio menu on Windows XP (assumes existing installation) and that all features are installed.
2. Select Repair, and click Next and complete the process.
3. Start IDE.
4. Choose View, Data Explorer

EXP: No errors
ACT: Object not set to an instance of an object. And there's no Ado.Net data providers shown in Data Explorer.


    51030

QC# Project Area
51030 Delphi Install
Description: Steps:
[QC Short Description]
ESD Help installer & 7zip files installed to bad location - prevents network install

[QC Description]
When the ESD installer stub is used to install Highlander, it downloads the instal 7zip files to a location of the user's choice, then unzips them into the Documents and settings\all users directory and continues installation from there.

With the breakout of the help installer into a separate procedure, this is no longer true of the help install - The installer and 7zip files for the help system are downloaded to c:\documents and settings instead.

Because of this, If I use the install image on the network to install to several workstations, each of the workstations must face a lengthy download of the help system files.

There may be a way to make the help install automatically if the files are copied to the network/external hd, but if there is it is not obvious, and really should not be necessary.

Only obvious "solution" is to copy the Help install files from documents and settings to each workstation prior to running install. Install should work without such hacks.

QC Entry 51030
Download install.exe to a network or external drive. Run install. Attach a different workstation to the network or external drive Run install from second workstation Exp: Install for second workstation will use data downloaded to the network or external hd and will not need to download any files from the internet. Act: RAD Studio is installed without downloading additional files from the internet, but the Help install files are not available to the second workstation, so it spends an additional 3.5 hours downloading them (actual time from my workstation at work).

QC# Project Area
C++Builder Install
Description: Steps:
REGRESSION
If Rave is installed, prior to Nov 2007 update, path is removed when you do the Nov 2007 update. Be sure to keep the path: $(BDS)\RaveReports\Lib
If Rave is installed
------------ ORIGINAL -----------------
Build a basic C++ application with RAVE installed results in:
Unable to find package import: Rave75VCL.bpi

If you remove the reference then it builds fine.
+ Have a highlander RTM with Rave installed
+ Click Tools | options | Library - Win32
+ Examine library path
//exp & act: You will see $(BDS)\RaveReports\Lib in the list.

+ Install the Nov 2007 patch
+ Click Tools | options | Library - Win32
+ Examine library path
//exp You will continue to see $(BDS)\RaveReports\Lib in the list.
//act: Path is gone

+ File | New | VCL forms Application - C++ Builder
+ Project | Build
//exp: no errors:
// act:
Find Package Import
-------------------------------
Unable to find package import: Rave75VCL.bpi
Package Import: <edit box>
Remove this Ref? (checkbox)
-------------
Don't ask again OK Cancel Help

QC# Project Area
Delphi Install
Description: Steps:
Help Update Install AND Uninstall

It closes without any notification. Shouldnt we get a dialog with 'Finish' or Install Completed' for instance ?

Uninstall also do not notify when is completed.

QC# Project Area
Delphi Install
Description: Steps:
missing Intraweb_90_100.bpl and IntrawebDB_90_100.bpl under System32

[Please check #255286]

QC# Project Area
Delphi Install
Description: Steps:
Check for Update 3 shows up on a Highlander RTM build and should not. + Bring up a Highalnder RTM build
+ Change to swintern to get "akami" like install
+ click through the install
//exp: no notification that the Help could not be found and that users should make sure that they are installing over an Update 3 version
//act: notifiction occurs.

QC# Project Area
Delphi Install
Description: Steps:
Help Update

Add ability to detect and only install teh Update if machine has Update 3 or Highlander installation.

QC# Project Area
Delphi Install
Description: Steps:
[Spacely+Highlander Update] - regression

Exception when dropping objects (connection or table) to the form.


System.IO.FileNotFoundException: Could not load file or assembly 'Borland.VclDbExpress, Version=11.0.5000.0, Culture=neutral, PublicKeyToken=91d62ebb5b0d1b1b' or one of its dependencies. The system cannot find the file specified.
File name: 'Borland.VclDbExpress, Version=11.0.5000.0, Culture=neutral, PublicKeyToken=91d62ebb5b0d1b1b'
at Borland.Data.Explorer.DataExplorerIDEImpl.CreateDBXConnection(TreeNode aNode)
at Borland.Data.Explorer.DataExplorerIDEImpl.DragDrop(Object Sender, ItemDragEventArgs Event)
at Borland.Data.Explorer.DataExplorerControl.a(Object , ItemDragEventArgs )
at System.Windows.Forms.TreeView.OnItemDrag(ItemDragEventArgs e)
Install Spacely + Highlander - using 'old keys' ---Update3
Run DE
drag and drop any table from DE to the form

Borland.VclDbExpress should have been included in the update for dataexplorer functionality to work.

QC# Project Area
Delphi Install\Install Execution
Description: Steps:
[VCL Patch] The patch install (not injection) hangs on Vista at the "validating install" phase. Run the setup for the VCL patch.
At "validating install", the setup will not progress; the dialog is responsive, but the status message will not update, and if logging is enabled, logging will stop.

QC# Project Area
Delphi Install\Registry settings
Description: Steps:
About box show incorrect update version: It says "october" instead of "november".
See screen dump.

QC# Project Area
Delphi Database
Description: Steps:
[November Patch] An application with a SQLConnection fails to build with an error File not found: 'DBXClentDataSetStorage.dcu'. Install November patch.
New VCL Win32 app.
Drop a TSQLConnection, build.
Compiler error results.

QC# Project Area
Delphi Database
Description: Steps:
According to documents and datasheets, only 1 User / 4 Connections are available on Blackfish SQL Desktop Edition, which comes with RAD Studio 2007 Professional Edition.

But, in fact, we can make 8 connections using client application.
Then, if we try to create 1 more connection, AV occurs.

This is As Designed?

sshaughnessy: I looked at this and was able to launch 8 DataExplorer before getting the proper error message. The code is giving 4 more connections than it should. 1 user gets 4 connections. I don't know what the AV is from. Need a reproducable test case.


Tomohiro Takahashi: sorry, AV means error dialog box.
TDBXHighlanderBugsSuite.Managed.exe connection=BLACKFISHSQLCONNECTION -s:oTestRaid_255287
(see comment on this testcase)

-OR-

1) Install RAD Sutdio 2007 Professional Edition

2) start Blackfish SQL

3) build client application which creates one connection

4) shutdown IDE

5) run 9 applications at the same time

    26179

QC# Project Area
26179 Delphi Database\Fields Editor
Description: Steps:
[QC Short Description]
SortFields Editor failure (on move one-by-one field)

[QC Description]
On click over the button to move one field from one side to another side ... the field disappear on the editor form....
QC Entry 26179

[Nov Update]
Steps: New Project (VCL Forms Application) ... Place one SQLConnection on form .... Configure the connetion (in my case for oracle) ... connect to database ... place one SQLDataSet ... link the SqlDataSet.SQLConnection To SQLConnection ... set commandType to clTable ... in CommandText select the table .... in SortFieldNames, click in button to call the editor ... in the editor, try to add one field to "Order by fields:" ....

    49558

QC# Project Area
49558 Delphi Database\Decision Cube Controls
Description: Steps:
[QC Short Description]
Applications that use Decision Cube do not compile in D2007

[QC Description]
It is a discusion in the
newsgroups.borland.com borland.public.install.delphi:18804
QC Entry 49558
Import and compile application that uses decision cube

QC# Project Area
Delphi Database\Drivers\InterBase
Description: Steps:
The DBX4 InterBase driver is unable to cope with the following query:

SELECT * from test

where * represents 206 integer columns

When the Active property is set to true, an error message "unassigned code" is returned. Normally InterBase returns this when some buffer has overflowed. The dbx driver would need to increase the size of this buffer in order for the query to execute successfully. IBConsole can successfully run this query.

Also DBX3 appears to be able to successfully run this query
TDBXHighlanderBugsSuite.Managed.exe connection=ibconnection -s:oTestRaid_255708

or

TDBXHighlanderBugsSuite.Native.exe connection=ibconnection -s:oTestRaid_255708

or

1. Connect a TSQLConnection to an InterBase database of your choice.
2. Create the following table from the create statement attached.

3. Connect up a TSQLQuery component to the TSQLConnection and set the SQL property to:

SELECT * from test

The unassigned code error is returned.

QC# Project Area
Delphi Database\DBExpress
Description: Steps:
OracleW / Intl. Oracle server

CLOB field does not use UNICODE enabled field type.
TDBXValu.GetWideString method cause error at truntime.

Under Oracle server with Intl. setting, All character type filed (include CLOB, CHAR and VARCHAR) are able to contain any character.

We have to provide GetWideString method for these field avoiding lose Intl. characters.
TDBXBugsSuite.Native.exe connection=oracleintlconnection -s:oTestRaid_255910

QC# Project Area
Delphi Database\DBExpress
Description: Steps:
OracleW / Intl. Oracle server

DBXReader.Size does not match with field's size.

For example, DBXReader.Size should return 11 for Char(10) field, but the shipping driver return 22.



---------------------------
Project TDBXBugsSuite.Native.exe raised exception class ETestFailure with message 'Size: exp: 11. act: 22'.
TDBXBugsSuite.Native.exe connection=oracleintlconnection -s:oTestRaid_255911

QC# Project Area
Delphi Database\DBExpress
Description: Steps:
OracleW / Intl. Oracle server

Where clause is not able to use parameterized value if a target field is "Char" type.

VarChar works fine.

---------------------------
Project TDBXBugsSuite.Native.exe raised exception class ETestFailure with message 'No affect'.
TDBXBugsSuite.Native.exe connection=oracleintlconnection -s:oTestRaid_255913

    659

QC# Project Area
659 Delphi Database\DBExpress
Description: Steps:
[QC Short Description]
Interbase driver issuing isc_commit_retaining for select statements

[QC Description]
Even with CommitRetain set to false, the driver is issuing isc_commit_retaining for select statements. I have a simple project that opens a parameterized query and then does an insert, with an SQLMonitor to show the statements, as well as dumping the values of the connection params right after connection. Here is the debugging output:

ODS: sql: INTERBASE - isc_attach_database
ODS: SQLConnection1.Params (13 elements)
ODS: ...<DriverName=Interbase>
ODS: ...<BlobSize=-1>
ODS: ...<CommitRetain=False>
ODS: ...<Database=copland:\interbasedata\maestrocfs.gdb>
ODS: ...<ErrorResourceFile=>
ODS: ...<LocaleCode=0000>
ODS: ...<Password=maestro>
ODS: ...<RoleName=RoleName>
ODS: ...<ServerCharSet=>
ODS: ...<SQLDialect=3>
ODS: ...<Interbase TransIsolation=ReadCommited>
ODS: ...<User_Name=maestro>
ODS: ...<WaitOnLocks=True>
ODS: sql: INTERBASE - isc_dsql_allocate_statement
ODS: sql: INTERBASE - isc_start_transaction
ODS: sql: select *
from TRADES
where TRADE_ID = ?
ODS: sql: INTERBASE - isc_dsql_prepare
ODS: sql: INTERBASE - isc_dsql_describe_bind
ODS: sql: INTERBASE - isc_dsql_execute
ODS: sql: INTERBASE - isc_dsql_fetch
ODS: sql: INTERBASE - isc_commit_retaining
ODS: sql: INTERBASE - isc_dsql_free_statement
ODS: sql: INTERBASE - isc_start_transaction
ODS: sql: INTERBASE - c_dsql_allocate_statement
ODS: sql: insert into "TRADES" ("TRADE_ID", "CLIENT_ID", "PRODUCT_ID", "ORG_ID", "PERS_ID", "USER_ID", "TRADED_ON", "ENTERED_ON", "PRINCIPAL", EVENUE_GROSS", "TRADE_STAT_ID")
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
ODS: sql: INTERBASE - isc_dsql_prepare
ODS: sql: INTERBASE - isc_dsql_sql_info
ODS: sql: INTERBASE - isc_vax_integer
ODS: sql: INTERBASE - isc_dsql_describe_bind
ODS: sql: INTERBASE - isc_dsql_execute
ODS: sql: INTERBASE - isc_dsql_free_statement
ODS: sql: INTERBASE - isc_dsql_free_statement
ODS: sql: INTERBASE - isc_commit_transaction
[Nov Update]

QC# Project Area
Delphi Database\DBExpress
Description: Steps:
OracleW driver.

GetIndexColumns metadata function of DBX cause AV if dbxoraW30 driver.

Error message is:
Project TDBXBugsSuite.Native.exe raised exception class EAccessViolation with message 'Access violation at address 02AB0000 in module 'dbxoraW30.dll'. Write of address 02AB0000'.
TDBXBugsSuite.Native.exe -s:oTestRaid_255728

Project TDBXBugsSuite.Native.exe raised exception class EAccessViolation with message 'Access violation at address 02AB0000 in module 'dbxoraW30.dll'. Write of address 02AB0000'.

QC# Project Area
Delphi Database\DBExpress\TSQLConnection
Description: Steps:
Customer is reporting that the TSQLConnection component seems to have a memory leak. if dbxdrivers.ini and dbxconnections.ini files are not available.

In TSQLConnection.DoConnect TDBXConnection.GetConnectionFactory raises exception when ini files are not there, TDBXMemoryConnectionFactory is then created but never freed.

This seems to be similar to QC 42824 and also RAID:248340
1. Create a new app.
2. Setup a SQLConnection to a interbase table
3. Add a Open and Close on FormCreate and FormClose
4. Set ReportMemoryLeaksOnShutDown to true.

procedure TForm7.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SQLConnection1.Close;
end;

procedure TForm7.FormCreate(Sender: TObject);
begin
SQLConnection1.Open;
end;

initialization
ReportMemoryLeaksOnShutdown := true;

Results:

1 - 12 bytes TDbxClosedByteReader x1
13 - 20 bytes TdbxMemoryConnectionFactory x1
37 - 44 bytes TdbxContext x 1
61 - 68 bytes TWideStringList x2

QC# Project Area
Delphi Database\dbExpressCore
Description: Steps:
Cannot write Oracle NChar, or NVarchar to database.

Trying to write NChar or NVarchar produces the following exception:
TDBXError with message 'ORA-01036: illegal variable name/number
Please open the TDBXBugs suite and look at test method for this RAID entry.
TDBXBugs suite is located:
http://dtg-svn.borland.com/svn/bdstests/trunk/UnitTest/projects/database/dbexpress/Bugs

TDBXBugsSuite.Native.exe connection=oracleconnection -s:TestRaid_245660

QC# Project Area
Delphi Database\dbExpressCore
Description: Steps:
Cannot write Oracle NClob to database.

Trying to write NClob produces:
TDBXError with message 'ORA-22275: invalid LOB locator specified

This was busted out per request from Raid 245660.
See TDBXBugsSuite.Native.exe connection=oracleconnection -soRaid_253754

QC# Project Area
Delphi Database\dbExpressCore
Description: Steps:
When a timestamp is inserted in a native application into a blackfish database using the data generator, hours does not always match when read back through a Reader. DataAccess.Native.exe connection=blackfishsqlconnection -s:TestReadWriteAll

QC# Project Area
Delphi.Net Database\dbExpress Metadata
Description: Steps:
#6 - For SqlConnection.GetTableNames the tablescope property is not
being respected for either dbxmss30.dll when you include
tsSysTable in addition to tsTable.

For MsSql you are calling sp_table_rowset which only accepts 1 table type, and not a set of table types. If you specify just tsSysTable then it works.

QC# Project Area
Delphi Database\Data Explorer
Description: Steps:
Database|Modify Database menu off the database node has trouble finding resources

[Nov Update]
Open a Blackfish SQL employee database
select the Database|Modify Database menu
Error occurs:

System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "Borland.Data.Explorer.ModifyDatabaseDialog.resources" was correctly embedded or linked into assembly "Borland.Data.Explorer" at compile time, or that all the satellite assemblies required are loadable and fully signed.
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.Resources.ResourceManager.GetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.ComponentModel.ComponentResourceManager.FillResources(CultureInfo culture, ResourceSet& resourceSet)
at System.ComponentModel.ComponentResourceManager.FillResources(CultureInfo culture, ResourceSet& resourceSet)
at System.ComponentModel.ComponentResourceManager.FillResources(CultureInfo culture, ResourceSet& resourceSet)
at System.ComponentModel.ComponentResourceManager.ApplyResources(Object value, String objectName, CultureInfo culture)
at System.ComponentModel.ComponentResourceManager.ApplyResources(Object value, String objectName)
at Borland.Data.Explorer.ModifyDatabaseDialog.InitializeComponent() in c:\Projects\d11\tp\database\internal\src\cs\borland\dbtools\explorer\DatabasePropertiesDialog.cs:line 59
at Borland.Data.Explorer.ModifyDatabaseDialog..ctor(ConnWrapper conn) in c:\Projects\d11\tp\database\internal\src\cs\borland\dbtools\explorer\DatabasePropertiesDialog.cs:line 25
at Borland.Data.Explorer.DataExplorerControl.miModifyDatabase_Click(Object sender, EventArgs e) in c:\Projects\d11\tp\database\internal\src\cs\borland\dbtools\explorer\DataExplorerControl.cs:line 2324
at System.Windows.Forms.MenuItem.OnClick(EventArgs e)
at System.Windows.Forms.MenuItem.MenuItemData.Execute()
at System.Windows.Forms.Command.Invoke()
at System.Window

QC# Project Area
Delphi Database\Data Explorer
Description: Steps:
"Confirm Password:" lable of Database|Change Password dialog is not alligned properly.

[Nov Update]
Open a Blackfish SQL employee database
select the Database|Change password

"Confirm Password:" overlaps the field to the right.

QC# Project Area
Delphi Database\Data Explorer
Description: Steps:
Change password encounters exception.

[Nov Update]
Open a Blackfish SQL employee database
select the Database|Change password
Change password and hit ok. Exception occurs:


See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.Collections.ArrayList.get_Item(Int32 index)
at Borland.Data.DataStore.DataStoreParameterCollection.get_Item(Int32 index)
at Borland.Data.DataStore.DataStoreParameterCollection.GetParameter(Int32 index)
at System.Data.Common.DbParameterCollection.get_Item(Int32 index)
at Borland.Data.Explorer.ChangePasswordDialog.btnOK_Click(Object sender, EventArgs e) in c:\Projects\d11\tp\database\internal\src\cs\borland\dbtools\explorer\ChangePasswordDialog.cs:line 128
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

QC# Project Area
Delphi.Net Database\BlackFishSQL
Description: Steps:
From Daniel Magin:

there is a bug in
GET_INDEX_COLUMNS(string catalogPattern, string
schemaPattern, string tablePattern, string indexPattern)

thee indexPattern Parameter did not work. only fyi
Run the nunit test:
NDataStore.JdsTestSuite_NDSCONNECTION.dll
SqlBugs.bug255455

or in Java:
SqlBugs.bug255455

QC# Project Area
Delphi VCL
Description: Steps:
(Patch3)

After apply Patch on Spacely RTM, Running application will cause IDE shrink size even thought IDE still in Maximize mode. Try to resize IDE, the mosue cursor behave strange, please see steps
1. Install Spacely RTM
2. Start IDE
3. File | New | VCL Application
4. Run
// notice: when IDE switch to debug mode, IDE size do not change
5. Close IDE
6. Install Patch3
7. Start IDE
8. File | New | VCL Application
9. Run
// notice this time, IDE change the size, even window still show "Maximize" button
10. Use mouse to resize IDE
// mouse cursor position JUMP to Form Designer

note: without running application, just change IDE layout will reproduce this problem

QC# Project Area
Delphi VCL
Description: Steps:
Shown dialog will show in TaskManager in Application tab on Vista 1. File | New | VCL Application
2. drop a TButton and TColorDialog
3. double click Button1 for OnClick event
4. add code as:
ColorDialog1.Execute;

5. Run, click the Button
// ColorDialog show
6. run TaskMan
7. click Application tab
// there is an item name "color", you can max/min/kill it.

    52256

QC# Project Area
52256 Delphi VCL\Core VCL Classes\TApplication
Description: Steps:
Taskbar button is not hidden when the MainForm is hidden and MainFormOnTaskbar is False.

Regression.
* File New VCL Application
* Drop a button on the form
* In the OnClick handler, enter "Hide;"
* View | Project Source
* Set Application.MainFormOnTaskbar := False;
* Run, click on the button
// Exp: The taskbar button is hidden
// Act: The taskbar button is still visible

    51831

QC# Project Area
51831 Delphi VCL\Core VCL Classes\TWinControl
Description: Steps:
[QC Short Description]
Edit, Memo, ComboBox, ... context menus are not displayed anymore

[QC Description]
The fix for QC 42752 broke the default context menus for TEdit, TMemo, TComboBox and all other windows controls with a default popup menu.
QC Entry 51831
1. Create a new VCL application 2. Drop a TEdit on the form 3. Start the application 4. Right click on the edit Expected: The Cut/Copy/Paste/Delete popup menu appears Actual: Nothing happens because the "Exit" in the TWinControl.DefaultHandler stops the processing of WM_CONTEXTMENU

    46134

QC# Project Area
46134 Delphi VCL\Dialog Controls\TOpenDialog
Description: Steps:
[QC Short Description]
TOpenDialog under Vista Breaks doShareAware

[QC Description]
If you are running Vista, and use the TOpenDialog, and rely on the ofShareAware option, this is broken with Delphi 2007.

If you try to open a file that is in use, under Vista, with ofShareAware set to true, you get a dialog showing "Not implemented".

This can be tracked down to the code in Dialogs.pas:

1 - At the beginning of TOpenDialog.DoExecute, if Vista is being used, wrappers around the new FileDialogs are used
2 - These wrappers are created, and there properties assigned from the standard TOpenDialog (which skips OnShareViolation)
3 - The code in TFileDialogEvents.OnShareViolation checks to see if OnShareViolation is assigned and, if not, results in E_NOTIMPL

The sum of these parts is that, if you use a TOpenDialog, even with ofShareAware set, you will be completely unable to select in-use files.
QC Entry 46134
Create an application with a TOpenDialog and a TButton. Set TOpenDialog.Options.foShareAware to True In the button's click handler, call OpenDialog.Execute Run the program Click the Button Try to select a file that would normally raise a share violation Expected: Select the file, ignoring the share violation Actual: A warning dialog is displayed with the file name followed by "Not implemented"

QC# Project Area
Delphi VCL\Standard Controls\TLabel
Description: Steps:
Vista / Aero / DBCS

Under Vista / Aero
Tlabel on GlassFrame does not draw correctly if a caption contains DBCS character.

See attached screen shot.

TSpeedButton has a same problem.
See attached project and screen shot on Vista/Aero

    51845

QC# Project Area
51845 Delphi VCL\Standard Controls\TMainMenu
Description: Steps:
[QC Short Description]
TMainMenu not painted in form designer on Vista with Standard or Classic scheme

[QC Description]
On Vista (x64) the TMainMenu is not painted in the form designer if the scheme is Standard of Classic. Not Painted means the space for the menu is reserved, but you see at the position where the menu should appear what was at this position before you switched to the form designer.
The same issue exists for VCL.NET projects.

With the Aero or Vista Basic scheme or with D2007 Update 1 on W2k everything is okay.

I've attached an example project and two images.
QC Entry 51845
- on Vista (x64) select the color scheme "Standard" or "Classic" - start Highlander - open the example project (or create a new VCL Forms Application, add a TMainMenu and add some items) expected: - the main menu with the items is visible actual: - the main menu is not visible -> see image QC*MainMenuInDesignerWithVistaStandard.png - close Highlander (otherwise QC 49128 (RAID: 252631) "Switching Windows designs may destroy the IDE layout" would occur) - switch the color scheme to "Vista Basic" or "Aero" - start Highlander - open the example project (or create a new VCL Forms Application, add a TMainMenu and add some items) expected: - the main menu with the items is visible actual: - the main menu with the items is visible (as expected) -> see image QC*MainMenuInDesignerWithVistaAero.png

    52671

QC# Project Area
52671 Delphi VCL\Standard Controls\TMainMenu
Description: Steps:
Under Vista with Theme, if TMenuItem has DBCS character in caption, and the menu item has a bitmap, Unexpected garbage characters are displayed.

Spacely/Cogswell works fine.

See attached bitmap.

255408-XPCompatible-mode is what I expected.
255408-Vista is actual result.

Some rare case, The application cause AV.

[See. 255411]

QC# Project Area
C++Builder VCL\Emulation Classes
Description: Steps:
From: "Daryl" <devaccount@hotmail.com>
Newsgroups: borland.public.cppbuilder.non-technical
Sent: Thursday, July 05, 2007 12:41 AM
Subject: Linker error after applying HOTFIX13

I have just applied HOTFIX13 and an application that automates EXCEL now
has
a linker error - can anyone please help with how to get rid of it.

thanks
daryl

[Linker Error] Error: Unresolved external '__fastcall
System::Variant::operator =(wchar_t *)' referenced from C:\PROGRAM
FILES\BORLAND\BDS\4.0\LIB\BCBOFFICE2K.LIB|Excel_2K_SRVR.cpp

We need to pull the office package files from the HF 13 build tree.

QC# Project Area
Delphi Debugger\Stepping
Description: Steps:
If you have "minimize on run" selected in Tools | Options | Environment Options and try to debug a program with two breakpoints set, the IDE stops on first breakpoint but when you press F9 to stop on the next breakpoint the IDE does not maximize but remains down on the taskbar.

You must then click on the taskbar icon in order to bring up the IDE.
1. Extract attached files and open up the project in Rad Studio.
2. In Rad Studio, select Tools | Options | Environment Options and select "Minimize On Run".
3. In MinimizeU.pas, place a breakpoint on line 31 and line 37.
4. Hit F9 to launch the app from within the IDE.
5. Click the button.
6. First breakpoint is hit so hit F9 again to run the app to the next breakpoint.

exp: IDE should maximize and cursor should be at line 37.
act: IDE remains minimized.

QC# Project Area
Delphi Debugger\CPU
Description: Steps:
After closing and reopening the CPU view, attempting to use the main IDE window to search in either the disassembly or dump panes causes an access violation Create a delphi win32 console app
F8 to step
View | Debug Windows | CPU Windows | Entire CPU
Focus either the dump pane or the disassembly pane
Seelct Search | Find from the main IDE menu
Close the CPU Search bytes dialog

Close the CPU view
View | Debug Windows | CPU Windows | Entire CPU to reopen it
Focus either the dump pane or the disassembly pane
Seelct Search | Find from the main IDE menu

Exp: the Enter Search Bytes dialog comes up
Act: Access violation

    42695

QC# Project Area
42695 Delphi Internet
Description: Steps:
[QC Short Description]
CGI WebService on Windows Vista / IIS 7.0 Fails

[QC Description]
I tried to register a CGI WebService on Windows Vista / IIS 7.0 and the fowlling error appears :

HTTP 502.2 - Bad Gateway

If this WebService is converted into ISAPI WebService, it works fine.
QC Entry 42695
One hack to workaround this is to turn off IO checks here:

TCGIApplication.Run;
begin
...
+ {$I-} Reset(Input); {$I+}
+ IOResult;
...
end

I've verified this hack at least lets the CGI startup and run without the mentioned 502 error, but this probably isn't the best fix. For more discussion/steps see:
http://qc.borland.com/wc/qcmain.aspx?d=42695

----
cwchua's workaround: Add VistaCGIApp.pas to a CGI application and it would work on Vista.
I've attached VistaCGIApp.pas to this RAID.

Note that one web action item needs to have it's default property enabled. Otherwise, if there are no PathInfo matches, the CGI would still return 502.2 on Vista.

    15265

QC# Project Area
15265 Delphi Internet\XML\Data Binding
Description: Steps:
[QC Short Description]
IXMLNode converts xs:boolean to False where it should be false

[QC Description]
I generated an interface from an XML schema. The type type="xs:boolean" creates a boolean property in the interface.

When I create an XML document from this interface the boolan values are set to False where this should be false.

see also http://www.w3.org/TR/xmlschema-2/#boolean
QC Entry 15265
(see attached project) - Create an XSD with an attribute type="xs:boolean" - Use the databinding wizard to create an interface - create an XML document from the interface

QC# Project Area
Delphi Internet\XML\Data Binding
Description: Steps:
Exception when clicking on elements of "Schema Components" Create a Delphi project.
File | New | Other | Xml | Xml Data Binding
Find a schema file.
Next
Click on any schema component (complex or simple type)
-- exception (something about 'has no single text node')

QC# Project Area
Delphi Internet\XML\Data Binding
Description: Steps:
Duplicate property getters and declarations in binding produced from Microsoft.Build.Core.xsd Create a new Delphi app.
File | New | Other | Xml | Xml Data binding
Point at c:\windows\microsoft.net\framework\v2.0.50727\MSBuild\Microsoft.Build.Core.xsd
Finish the wizard so you get Microsoft.Build.Core.pas
Project | Compile.
-- errors because of duplicate getters and prop decls.

    47225

QC# Project Area
47225 Delphi Compiler
Description: Steps:
[QC Short Description]
Compilation 7 times slower after installing update 1!

[QC Description]
After installing update 1 there is a significant delay after selecting |compile project".

In Original version everything works fine. After some changes in a large project (3mln lines) compilation starts immediately and completes in about 20 sec.

After installing update 1 it takes 155 second. After selecting "compile project" processor utilization hits 100% and IDE hangs for 1 minute before anything in compile window happens.

I run Vista on 2 dual core Xeon processors and 4GB RAM.
QC Entry 47225
Load large project. Change some code and select Compile Project.

    51456

QC# Project Area
51456 C++Builder Compiler\C++
Description: Steps:
[QC Short Description]
Internal Compiler error

[QC Description]
Compiling file, ClassFileStream.cpp(429) Internal compiler error at 0x609ec22 with base 0x6010000

QC Entry 51456

5.6.1: compiles fine
5.8.3.1 : compiles fine
5.9.1: compiles fine (rev 107)
5.9.2 ICE (cppbinaries rev 118)
5.A ICE
VIEW COMMENT for simplify steps



1.bcc32 -D_DEBUG;NO_STRICT;_RTLDLL -vG -c -v -w- ClassFileStream.cpp

[ if -vG AND __RTLDLL is removed from the command line then there is no ICE ]

CodeGear C++ 5.92 for Win32 Copyright (c) 1993, 2007 CodeGear
..\Common\ClassFileStream.cpp:
Fatal F1004 \ClassFileStream.cpp 429: Internal compiler error at 0x4931
96 with base 0x400000 in function FileStream::Open(const char *,const char *,bool)
Fatal F1004 ..\Common\ClassFileStream.cpp 429: Internal compiler error in function FileStream::Open(const char *,const char *,bool)



OLD STEPS
Using subversion download the open source project


http://code.google.com/p/crylib/source version 99. (latest as of this time).

Open the classbuilder project (CryLib\crylib\src\Borland) and build it.

The code looks pretty simple to me. But it dies consistantly at this point.

    20137

QC# Project Area
20137 C++Builder Compiler\C++
Description: Steps:
[QC Short Description]
[C++ Error] xmemory(53): E2045 Destructor name must match the class name

[QC Description]
Fails to compile a very basic code. See the steps for details.

QC Entry 20137

bcc32 -c 233254.cpp

//exp : clean compile
//res : errors
Error E2045 d:\borland\dexter\include\dinkumware\xmemory 53: Destructor name must match the class name in function void
_Destroy<complex<float> >(complex<float> *)
Error E2045 d:\borland\dexter\include\dinkumware\xmemory 53: Destructor name must match the class name in function void
_Destroy<complex<float> >(complex<float> *)

pointing at this
template<class _Ty> inline
void _Destroy(_Ty *_Ptr)
{
(_Ptr)->~_Ty();
}

QC# Project Area
C++Builder Compiler\C++\Front End
Description: Steps:
New Plum Hall test fails
342Y2_13c_s

ADL test fails to compile
1. bcc32 -c -A 242887.cpp
//exp : clean compile
//res :
Error E2268 242887.cpp 28: Call to undefined function 'f' in function main()

QC# Project Area
C++Builder Compiler\C++\Front End
Description: Steps:
we don't detect the presence of a copy constructor that takes a cosnt reference if a copy constructor that takes a nonconst reference is present. 1. bcc32 -c 230383.cpp

//exp : clean compile
//res : error
Error E2285 230383.cpp 14: Could not find a match for 'ap::ap(const ap&)' in function main()

2. bcc32 -c -DWORKAROUND 230383.cpp
//this works

QC# Project Area
C++Builder Compiler\C++\Front End\Exception Handling
Description: Steps:
Attempt to destroy invalid object when an exception is thrown after new'ing an object and creating a stack based object in a constructor. 1. bcc32 239998.cpp
2. 239998.exe

//exp : constructor and destructor counts and addresses match
//res :
operator new() returned 008733F8
Class2 at 0012FF08
operator new() returned 00873424
throw
~Class3 at 00873424 (invalid, object does not exist)

Ctor/dtor counts match.
Ctor/dtor addresses DO NOT match.
QC# Project Area
C++Builder Compiler\C++\Front End\Exception Handling
Description: Steps:
Runtime bug in exception handling. Four objects are constructed, only three are destructed. The last object is never destroyed, which could have extremely serious consequences, depending on behavior of object destructor.

Output:

D:\bugs>bug19
Object constructor: 0012FF80
Object constructor: 0012FF58
Copy constructor0012FF50
Copy constructor007D340E
destructor: 0012FF58
destructor: 007D340E
destructor: 0012FF80
1


The final int in the output is the number of undestroyed objects.


One interesting result I found by experimentation is that if the constructor of Object takes a char const * instead of the std::string reference, the leak is gone!

(What's the parameter got to do with cleanup?)

The worst part about this is that the leak is very subtle, and most people wouldn't notice that it's not destructing the object, but may wonder why their application is behaving oddly.

(Does this belong in "backend" category?)
bcc32 120869.cpp
120869.exe
//res:
Object constructor: 1245056
Object constructor: 1244984
Copy constructor1244976
Copy constructor10501574
destructor: 10501574
destructor: 1245056
2
//exp:
Object constructor: 0012FF6B
Object constructor: 0012FF27
Copy constructor0012FF07
destructor: 0012FF27
destructor: 0012FF07
destructor: 0012FF6B
0

QC# Project Area
C++Builder Compiler\C++\Front End\Exception Handling
Description: Steps:
Returning a local object and binding a const reference to the return is this case causes a runtime crash.
//#define TRACE_UNWIND_BUG

#ifdef TRACE_UNWIND_BUG
#include <iostream>
#include <iomanip>
using namespace std;
#endif

class foo
{
public:
foo();
foo(const foo&);
~foo();

enum { data_size = 10000 };

private:
foo& operator=(const foo&);

#ifndef TRACE_UNWIND_BUG
private:
char* data;
#endif
};

foo::foo()
#ifndef TRACE_UNWIND_BUG
: data(new char[data_size])
#endif
{
#ifdef TRACE_UNWIND_BUG
cout << "foo::foo(\"this = 0x" << hex << this << ")" << endl;
#endif
}

foo::foo(const foo&)
#ifndef TRACE_UNWIND_BUG
: data(new char[data_size])
#endif
{
#ifdef TRACE_UNWIND_BUG
cout << "foo::foo(const foo&\"this = 0x" << hex << this << ")" << endl;

#endif
}

foo::~foo()
{
#ifdef TRACE_UNWIND_BUG
cout << "foo::~foo(\"this = 0x" << hex << this << ")" << endl;
#else
for(unsigned i = 0; data_size != i; ++i) {
data[i] = i % 128;
}
delete [] data;
#endif
}

foo get_foo()
{
return foo();
}

void test_unwind(unsigned i)
{
foo f1;
if(0 == i) {
const foo& f2 = get_foo();
#ifdef TRACE_UNWIND_BUG
cout << "throw" << endl;
#endif
throw 1;
}
foo f3;
test_unwind(--i);
}

int main()
{
try {
test_unwind(2);
}
catch(...) {
}
}
bcc32 -DTRACE_UNWIND_BUG 159056.cpp
159.056.exe
//act:
foo::foo("this = 0x12ff48)
foo::foo("this = 0x12ff40)
foo::foo("this = 0x12fef8)
foo::foo("this = 0x12fef0)
foo::foo("this = 0x12fea8)
foo::foo("this = 0x12fe98) <====
throw
foo::~foo("this = 0x12fea0) <====
foo::~foo("this = 0x12fea8)
foo::~foo("this = 0x12fef0)
foo::~foo("this = 0x12fef8)
foo::~foo("this = 0x12ff40)
foo::~foo("this = 0x12ff48)
< then may crash with AV >
//exp: (from VC6)
foo::foo("this = 0x0012FF44)
foo::foo("this = 0x0012FF48)
foo::foo("this = 0x0012FF18)
foo::foo("this = 0x0012FF1C)
foo::foo("this = 0x0012FEEC)
foo::foo("this = 0x0012FEE4)
throw
foo::~foo("this = 0x0012FEE4)
foo::~foo("this = 0x0012FEEC)
foo::~foo("this = 0x0012FF1C)
foo::~foo("this = 0x0012FF18)
foo::~foo("this = 0x0012FF48)
foo::~foo("this = 0x0012FF44)

QC# Project Area
C++Builder Compiler\C++\Front End\Exception Handling
Description: Steps:
This code gets an access violation because of invalid stack unwinding. bcc32 168852.cpp
168852.exe
//act: crashes
//exp: runs, returns 0

QC# Project Area
C++Builder Compiler\C++\Front End\Exception Handling
Description: Steps:
attached code incorrectly calls the desctructor of a partially constucted object when an exception is thrown. 1. bcc32 218689.cpp
2. 218689.exe

//exp : output :
BEGIN
END

//res : output :
BEGIN
ERROR CALL !!!
END

    18550

QC# Project Area
18550 C++Builder 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# Project Area
C++Builder Compiler\C++\Front End\Exception Handling
Description: Steps:
Plumhall c++ _154Y15F


worked fine with svnversion 22005
fails with 22037
C:\TESTSCPP\bcc\harness\bcctests>bcc32 -I%PHSRC%;%PHDST%;plumhall/conform plumhall\conform\t15b.dir\_154Y15f.cpp
CodeGear C++ 5.A0 for Win32 Copyright (c) 1993, 2007 CodeGear
plumhall\conform\t15b.dir\_154Y15f.cpp:
Turbo Incremental Link 5.80 Copyright (c) 1997-2007 CodeGear

C:\TESTSCPP\bcc\harness\bcctests>bcc32 -v -I%PHSRC%;%PHDST%;plumhall/conform pl
umhall\conform\t15b.dir\_154Y15f.cpp
CodeGear C++ 5.A0 for Win32 Copyright (c) 1993, 2007 CodeGear
plumhall\conform\t15b.dir\_154Y15f.cpp:
Turbo Incremental Link 5.80 Copyright (c) 1997-2007 CodeGear

C:\TESTSCPP\bcc\harness\bcctests>svnversion
22005M

QC# Project Area
C++Builder Compiler\C++\Front End\Exception Handling
Description: Steps:
Destructor is never called for a static object constructed before a dynamic object that throws an exception in its constructor. bcc32 77585.cpp
77585.exe

//act:
MyObject ctor: 1245056
MyThrower dtor: 8074056
Caught const char *
MyObject dtor: 1245056

//exp:

MyObject ctor: 1245036
Caught const char *
MyObject dtor: 1245036

    4662

QC# Project Area
4662 C++Builder 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


    20386

QC# Project Area
20386 C++Builder Compiler\C++\Front End\Language
Description: Steps:
[QC Short Description]
The alternative tokens "and", "or" and "not" etc. are missing.

[QC Description]
The alternative tokens "and", "or" and "not" etc. are missing.

According to the C++ standard, section 2.6, they are required.
QC Entry 20386
python runplumhall -d 25Y22a

    18519

QC# Project Area
18519 C++Builder Compiler\C++\Front End\Language
Description: Steps:
The compiler doesn't allow static_cast<void *>(p) where p is a pointer to an incomplete type. [QC Entry 18519] 1. bcc32 -c t.cpp
exp: compile to succeed
act: error in function f2.
QC# Project Area
C++Builder Compiler\C++\Front End\Language
Description: Steps:
Note that this is a duplicate of 6564. I take this as a suggestion that this should work even without -A.
--- original text ---
The current C++ specification indicates that static arrays of char (i.e., string literals) decay to const char*. In Thunder, they're still char*.
[ANSI]
Original WebBTS #: 6709

void foo(char*) { cout << "char*" << endl; }
void foo(const char*) { cout << "const char*" << endl; }

int main(int, char **)
{
foo("hello");
}

    18729

QC# Project Area
18729 C++Builder 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" }

    18982

QC# Project Area
18982 C++Builder Compiler\C++\Front End\Templates
Description: Steps:
BCB doesn't allow pointers to members to be used as template parameters. [QC Entry 18982] new steps:

1. bcc32 61808.cpp

//exp: clean compile
//res :
Error E2272 61808a.cpp 14: Identifier expected in function main()
Error E2188 61808a.cpp 14: Expression syntax in function main()
Error E2299 61808a.cpp 14: Cannot generate template specialization from 'Bar<T>' in function main()
Error E2379 61808a.cpp 16: Statement missing ; in function main()
*** 4 errors in Compile ***



    18649

QC# Project Area
18649 C++Builder Compiler\C++\Front End\Templates
Description: Steps:
The compiler will not call an explicit specialization of a function template for const char * types. [QC Entry 18649] bcc32 76968.cpp
76968.exe
//res:
Hey, you just called the primary template
15
Hey, you just called the primary template
bob
failed

//exp:
Hey, you just called the primary template
15
Special version for const char *
hello
passed
QC# Project Area
C++Builder Compiler\C++\Front End\Templates
Description: Steps:
Boost library finds that template function type deduction does not omit top-level constness as it should:

template<class T>
void f(T x)
{
x = 1; // works
(void) &x;
T y = 17;
y = 20; // "Cannot modify a const object in function f(int)"
(void) &y;
}

int main()
{
const int i = 17;
f(i);
}
bcc32 -c 123610.cpp
//act:
Error E2024 123610.cpp 7: Cannot modify a const object in function f<const int>(int)

//exp: no diagnostics

QC# Project Area
C++Builder Compiler\C++\Front End\Initialization
Description: Steps:
Ansi C++ 12.8(3) says that " A member function template is never instantiated to perform the copy of a class object to an object of its class type"

While testing this using the given example, compiler
reports "no error" where it should.

Note: cl pass
bcc fail
gcc pass
bcc32 93260.cpp
//res:
no error
//exp:
93260.cpp(6) : error C2893: Failed to specialize function template '__thiscall S::S(T)'
With the following template arguments: 'struct S'

    18784

QC# Project Area
18784 C++Builder Compiler\C++\Front End\Overloading
Description: Steps:
BCB doesn't find the conversion sequence Foo -> void (Foo::*)() -> bool in the following code.
struct Foo;
typedef void (Foo::*FooP)();

struct Foo
{
operator FooP(){};
};

int main()
{
Foo foo;
foo || true;
true || foo;
return 0;
} [QC Entry 18784]
bcc32 64564.cpp
//res:
Error E2094 64564.cpp 12: 'operator||' not implemented in type 'Foo' for arguments of type 'bool' in function main()
Error E2096 64564.cpp 13: Illegal structure operation in function main()

//exp: no errors

    18637

QC# Project Area
18637 C++Builder Compiler\C++\Front End\Overloading
Description: Steps:
ANSI 13.5.3 section 2. The code in the standard is not correctly executed. Specifically, the statement
dobj1 = dobj2; is supposed to call the implicitly generated operator=(const D&) but it incorrectly calls the user-defined operator(const B&).

struct B {
virtual int operator= (int) { }
virtual B& operator= (const B&) { }
};
struct D : B {
virtual int operator= (int) { }
virtual D& operator= (const B&) { }
};

int main (void) {
D dobj1;
D dobj2;
B* bptr = &dobj1;
bptr->operator=(99); // calls D::operator=(int)
*bptr = 99; // ditto
bptr->operator=(dobj2); // calls D::operator=(const B&)
*bptr = dobj2; // ditto

// **** BCB doesn't do the following correctly ****
dobj1 = dobj2; // calls implicitly ­declared
// D::operator=(const D&)
} [QC Entry 18637]
Paste the following code into a console application. Notice that the final line of main executes the wrong operator=.

struct B {
virtual int operator= (int) { }
virtual B& operator= (const B&) { }
};
struct D : B {
virtual int operator= (int) { }
virtual D& operator= (const B&) { }
};

int main (void) {
D dobj1;
D dobj2;
B* bptr = &dobj1;
bptr->operator=(99); // calls D::operator=(int)
*bptr = 99; // ditto
bptr->operator=(dobj2); // calls D::operator=(const B&)
*bptr = dobj2; // ditto

// **** BCB doesn't do the following correctly ****
dobj1 = dobj2; // calls implicitly ­declared
// D::operator=(const D&)
}

QC# Project Area
Delphi Compiler\Delphi\Other Compiler
Description: Steps:
RLINK32 error when building the vclactnband package in the VCL directory.

It seems to be unable to find dfm files (although they exist).
* Go to <TP>\vcl
* Run "msbuild clean debug"
//Exp: Build succeeds
//Act: Error: E2161 RLINK32: Error opening file "..\clr\vcl\actman\CustomizeDlg.dfm"
QC# Project Area
Delphi Compiler\Delphi\Finalization
Description: Steps:
Application does not unload from Memory when terminating, when loading two or more DLLs, using ShareMem (cannot check against SimpleShareMem, see #255157) and run-time packages. 1. Start a new Win32 VCL Delphi application
2. Add 2 DLL Projects to the Project Group
3. Save all as "AH01.dpr", "AH02.dpr" and "AH03.dpr" respectivly, name the Form "FormMain.pas"
4. For each project go to project options -> Packages
Set the tick for using run-time packages
Add "vcl;rtl" for the run-time packages to use
5. Go to each projects DPR-Source file and add "ShareMem" as first unit to the uses clause
6. To the Main Form of AH01.DPR add two buttons.
7. In the OnClick Event-Handler of the first button write
LoadLibrary('AH02.DLL');
LoadLibrary('AH03.DLL');
8. In the OnClick Event-Handler of the second button write
Close;
9. Compile all projects and run the EXE
10. Click Button 1 - both DLLs are loaded
11. Click Button 2 - application (seems to) terminate

12. Run the Windows Task Manager (CTRL+SHIFT+ESC) and goto "Processes" page. Order processes by name and look for "AH01.EXE", this should not be there, but is.

Note: Example Project attached to report.

Note: Make sure you are NOT using the debug version of the memory manager, as doing so will mask this issue (do a "msbuild nodebugmem" from the tp\rtl directory if you're using the dev build)

QC# Project Area
Delphi Compiler\Delphi\String Resources
Description: Steps:
Delphi compiler generates .drc files with bad identifiers. This prevents the .drc files from getting compiled with the resource compiler and consequently breaks the localized builds.

For example:

Highlander RTM:
#define Borland_Vcl_Design_MnuConst_SInvalidNumber 65504

Current Highlander trunk:
#define Borland.Vcl.Design.MnuConst_SInvalidNumber 65504

This causes the localized build to break with the following errors:

D:\dev\tp\tools\MSNET2.0\rc vclmenudesigner.tran.drc
vclmenudesigner.tran.drc(10): error RC2008: '.' : unexpected in macro definition
vclmenudesigner.tran.drc(11): error RC2008: '.' : unexpected in macro definition
vclmenudesigner.tran.drc(11): warning RC4005: 'Borland' : redefinition
.
.
.
vclmenudesigner.tran.drc(38): error RC2008: '.' : unexpected in macro definition
vclmenudesigner.tran.drc(38): warning RC4005: 'Borland' : redefinition
D:\dev\tp\app\design\i18n\de\RCa02696(78): fatal error RC1116: RC terminating after preprocessor errors

QC# Project Area
C++Builder RTL\Delphi
Description: Steps:
Adding a Form to a library results in a compiler error

// works in BCB6
Create a new C++ library
add a form
build

[C++ Error] Project1.cpp(1): E2303 Type name expected
[C++ Error] Project1.cpp(1): E2034 Cannot convert 'char *' to 'int'
[C++ Error] Project1.cpp(1): E2293 ) expected

    51727

QC# Project Area
51727 Delphi RTL\Delphi\RTL Exceptions
Description: Steps:
[QC Short Description]
Halt in except block causes messagebox at program termination

[QC Description]
If you call Halt in an except block, a message box pops up that shows the last exception. Even EAbort exceptions are shown.
In a console application it shows the exception in ErrOut.

The _Halt0 function should release the ExceptObject before entering the FinalizeUnits loop.
QC Entry 51727
1. Create a new VCL application 2. Add the following code to the OnCreate handler try Abort; except On E: Exception do Halt(1); end; 3. Start the application Expected: The application terminates Actual: The application shows "Exception EAbort in module Project4.exe at 00049F63. Operation aborted."

    52905

QC# Project Area
52905 Delphi RTL\Delphi\File Management
Description: Steps:
[QC Short Description]
FileExists does not work for open files with share_exclusive

[QC Description]
The FileExists function does not work for files that are opened in SHARE_EXCLUSIVE mode (like the pagefile.sys).

FileExists('C:\pagefile.sys') always return False instead of True.
QC Entry 52905
1. Create a new VCL application
2. Write the following into the Form's OnCreate handler:

begin
if FileExists('C:\pagefile.sys') then
ShowMessage('OK')
else
ShowMessage('Failed');
end;

Expected:
A "OK" dialog is displayed

Actual:
A "Failed" dialog is displayed



Andreas included this workaround/new version for the RTL:


function FileExists(const Filename: string): Boolean;

function FailSafe(const Filename: string): Boolean;
var
FindData: TWin32FindData;
h: THandle;
begin
{ Either the file is locked/share_exclusive or we got an access denied }
h := FindFirstFile(PChar(Filename), FindData);
if h <> 0 then
begin
Windows.FindClose(h);
Result := FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0;
end
else
Result := False;
end;

var
Code: Integer;
LastError: Cardinal;
begin
Code := Integer(GetFileAttributes(Pointer(FileName)));
if Code <> -1 then
Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
else
begin
LastError := GetLastError();
Result := (LastError <> ERROR_FILE_NOT_FOUND) and
(LastError <> ERROR_PATH_NOT_FOUND) and
FailSafe(Filename);
end;
end;

QC# Project Area
C++Builder RTL\C++
Description: Steps:
errno is not available in <cerrno>.

C++ 19.3.2
The contents are the same as the Standard C library header <errno.h>, except that errno shall be defined as a macro.
bcc32 -c 248624.cpp
Should compile

QC# Project Area
C++Builder RTL\C++
Description: Steps:
setjmp() isn't available as a macro

C++ 17.4.1.2.5

Names which are defined as macros in C shall be defined as macros in the C++ Standard Library, even if C grants license for implementation as functions. [ Note: the names defined as macros in C include the following: assert, offsetof,setjmp, va_arg, va_end, and va_start. -- end note ]
bcc32 -c 248623.cpp
Should compile

QC# Project Area
C++Builder RTL\C++
Description: Steps:
Plum Hall test fails to compile
_214Y21db

// snip

#define CSTD std::
#include <cstdio>

int main()
{
CSTD FILE *tf = CSTD fopen("foo.txt", "w+");
CSTD feof(tf); // error here
return 0;
}


// QA notes:
been busted since BCB6
Comeau doesn't like it
VC has deprecated fopen
1. bcc32 -c -w- 243601.cpp

//exp : clean compile
//res :

Error E2272 243601.cpp 12: Identifier expected in function main()
Error E2379 243601.cpp 12: Statement missing ; in function main()

//note: erroneous line expands to
std:: ((tf)->flags & 0x0020);
QC# Project Area
C++Builder RTL\C++\STL
Description: Steps:
Numerous warnings in the dinkumware headers when compiling with -vi- -w. //simple case:
bcc32 -vi- -w 222801a.cpp

//original case from real world:
bcc32 -vi- -w 222801.cpp
//res:
222801.cpp:
Warning W8013 c:\dev\bds\4.0\include\dinkumware\xutility 438(3): Possible use of
'_Cat' before definition in function std::_Ptr_cat(bool *,bool *)
Warning W8013 c:\dev\bds\4.0\include\dinkumware\xutility 444(3): Possible use of
'_Cat' before definition in function std::_Ptr_cat(const bool *,bool *)
Warning W8013 c:\dev\bds\4.0\include\dinkumware\xutility 450(3): Possible use of
'_Cat' before definition in function std::_Ptr_cat(char *,char *)
Warning W8013 c:\dev\bds\4.0\include\dinkumware\xutility 456(3): Possible use of
'_Cat' before definition in function std::_Ptr_cat(const char *,char *)
.
.
.
//exp: no diagnostics

    52778

QC# Project Area
52778 C++Builder RTL\C++\STL
Description: Steps:
[QC Short Description]
<vector> calls undefined function '_Debug_get_cont'

[QC Description]
The Dinkumware vector header calls the undefined function _Debug_get_cont if iterator debugging is enabled.

Compile the following program:

#define _HAS_ITERATOR_DEBUGGING 1
#include <vector>

int main ()
{
std::vector<int> v, v2;
v.insert(v.begin(), v2.begin(), v2.end());
}

QC Entry 52778
Download attachment bcc32 -c qc52778.cpp Expected: clean compile Actual results: Error E2268 C:\Program Files\CodeGear\RAD Studio\5.0\\Include\dinkumware\vector 805: Call to undefined function '_Debug_get_cont' in function void vector<int,allocator<int> >::_Insert<_Vector_iterator<int,allocator<int> > >(_Vector_iterator<int,allocator<int> >,_Vector_iterator<int,allocator<int> >,_Vector_iterator<int,allocator<int> >,forward_iterator_tag) Error E2034 C:\Program Files\CodeGear\RAD Studio\5.0\\Include\dinkumware\vector 805: Cannot convert 'int' to 'vector<int,allocator<int> > *' in function void vector<int,allocator<int> >::_Insert<_Vector_iterator<int,allocator<int> > >(_Vector_iterator<int,allocator<int> >,_Vector_iterator<int,allocator<int> >,_Vector_iterator<int,allocator<int> >,forward_iterator_tag)
QC# Project Area
C++Builder RTL\C++\STLPort
Description: Steps:
[STL]
ANSI C++ 27.6.2.5.3 says that " The effect of basic_ostream::operator<< is call pf(*this)"

It seems that while throwing exception, the value
which was incremented, does NOTactually get incremented during catch.

While testing this STLPort fails the test.

This error did not occur for RW STL. There is one
test which skipped due to this error.
bcc32 t49.cpp
//act: t49.exe

//res: The test failed
//exp: The test passed
QC# Project Area
C++Builder RTL\C++\STLPort
Description: Steps:
[STL]
While testing the effects of basic_filebuf::overflow on codecvt, bcc32 returns error.
bcc32 t70.cpp
//res: The test failed
//exp: The test passed
QC# Project Area
C++Builder RTL\C++\STLPort
Description: Steps:
[STL]
While testing the effects of money_put::do_put with long value, in Ansi C++ Ch22, bcc32 differs in resulted values.
bcc32 t55.cpp
//res: The test passed
//exp: The test failed

    47452

QC# Project Area
47452 Delphi SOAP
Description: Steps:
[QC Short Description]
Incorrect SOAP parse of variant arrays

[QC Description]
SOAP does not parse correctly variant arrays of two or more elements that contain variant arrays.

It can affect SOAP DataSnap servers that use variant arrays in OwnerData parameter to comunicate information between client and server.
QC Entry 47452


(NOTE From Bruneau:

Have fix ready to go )
1. Compile the attached server and client soap apps with D2007 Upd1. Its a standalone web server. It must be compile with Indy9. 2. Execute the server. 3. Execute the client, and press the button1. The Client pass a variant array in the ownerdata parameter of cds.BeforeGetRecords method: procedure TForm1.ClientDataSet1BeforeGetRecords(Sender: TObject; var OwnerData: OleVariant); var v1, v2: variant; begin v1 := VarArrayCreate([0, 1], varVariant); v1[0] := 1; v1[1] := 'one'; v2 := VarArrayCreate([0, 1], varVariant); v2[0] := 2; v2[1] := 'two'; OwnerData := VarArrayCreate([0, 1], varVariant); OwnerData[0] := v1; OwnerData[1] := v2; end; The Server process the ownerdata parameter in the dsp.BeforeGetRecords method: for i := 0 to VarArrayHighBound(OwnerData, 1) do begin int := OwnerData[i][0]; str := VarToStr(OwnerData[i][1]); end; OwnerData is well dimensioned, but the first element contains the second: OwnerData[0][0] -> 2 OwnerData[0][1] -> 'two' OwnerData[1][0] -> raises and exception EVariantInvalidArgError

    47506

QC# Project Area
47506 Delphi SOAP\WSDL Importer
Description: Steps:
[QC Short Description]
Wsdl importer do not read files xsd

[QC Description]
Hi,

when importin a wsdl, the next comment is add to .pas:

// ************************************************************************
//
// The following types, referred to in the WSDL document are not being
represented
// in this file. They are either aliases[@] of other types represented or
were referred
// to but never[!] declared in the document. The types from the latter
category
// typically map to predefined/known XML or Borland types; however, they
could also
// indicate incorrect WSDL documents that failed to declare or import a
schema type.
//
************************************************************************ //
// !:MessageHeader - "http://www.ebxml.org/namespaces/messageHeader"
// !:Security - "http://schemas.xmlsoap.org/ws/2002/12/secext"
// !:SessionCreateRQ - "http://www.opentravel.org/OTA/2002/11"
// !:SessionCreateRS - "http://www.opentravel.org/OTA/2002/11"

and project has error when compiled.
QC Entry 47506
See description Attachment fails .......!!!!!!!!!!1 cdsAttachmentsHeader : missing datasetprovider ou datapacked !!!! See files in borlan.public.attachments: XSD files for Sabre

    49636

QC# Project Area
49636 Delphi SOAP\Client Applications
Description: Steps:
[QC Short Description]
THTTPWebNode Timouts do not work

[QC Description]
The timeouts on a THTTPWebNode do not work correctly. It is as if the timeouts are not altered.

Calling InternetSetOption with the hInternet parameter set to nil bypasses the problem.

The MSDN documentation for InternetSetOption on Windows CE indicates that for a synchronous connection the receive timeout can only be set for the default connection. i.e. the hInternet parameter must be NULL when INTERNET_OPTION_RECEIVE_TIMEOUT is set. This also appears to be the case on Win32 for the connect, send, and recieve timeouts.
QC Entry 49636
1. Create a web service that takes longer than 30 seconds to respond. 2. Create client for the service using THTTPRIO object with the timeouts on the HTTPWebNode set to 60000. 3. Call the web service. It should timeout.

QC# Project Area
Delphi.Net Compiler\CLR Import
Description: Steps:
dccil fails to consume the attached assembly resulting in an ILIMP11518 error Unzip the attached project
or
1) Create a new VCL.NET Forms application and grab the two assemblies from the zip file and save in the same location
2) Add a reference to the assembly SD.LLBLGen.Pro.DQE.Access.NET20.dll


3) Build project

exp: correct dcpil from the assembly reference

act: these errors:

[DCC Error] F2084 Internal Error: ILIMP11518
[DCC Error] E2202 Required package 'SD.LLBLGen.Pro.DQE.Access.NET20' not found

    51954

QC# Project Area
51954 Delphi.Net Compiler\CLR Import
Description: Steps:
[QC Short Description]
Attempting to use an assembly results in a Internal Error: ILIMP11518

[QC Description]
I downloaded and built the source code from this url

http://www.codeplex.com/blogengine

If I then attempt to add a reference to one of the assemblies from this project to a Delphi package I get the following errors

[DCC Error] F2084 Internal Error: ILIMP11518
[DCC Error] E2202 Required package 'BlogEngine.Core' not found

Note:

The assembly that is causing problems is in the lib directory of the attachment
QC Entry 51954
1) Open the supplied example
2) Build

(JJS: On the command line, the following can be used.)

dccil blackfishblogprovider.dpk


expected:

project should compile without errors

actual:

[DCC Error] F2084 Internal Error: ILIMP11518
[DCC Error] E2202 Required package 'BlogEngine.Core' not found

    51963

QC# Project Area
51963 Delphi.Net Compiler\CLR Import
Description: Steps:
[QC Short Description]
Attempting to reference ngenerics assembly in an application results in a catastrophic failure in the compiler

[QC Description]
I downloaded a generics library from here

http://www.codeplex.com/NGenerics/Release/ProjectReleases.aspx?ReleaseId=2027

and I then added a reference to the assembly in a vcl.net application

Attempting to compile results in an error

[DCC Error] Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

note:

the library is included in the lib directory of the project
QC Entry 51963
1) Open the supplied example
2) Compile

expected:

compile should be successful

actual:

dcc error occurrs

[DCC Error] Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

(JJS: A simpler test is also attached.)

Compile with the following command line.

dccil bts255366 -luNGenerics

QC# Project Area
Delphi.Net Compiler\Errors & Warnings
Description: Steps:
ILLK3387 when compiling Delphi.NET project.
1. Extract all files (inclusive of Folder nam) in the attached zip to C:\cases\TimJarvis.
2. Open PluginGroup.groupproj.
3. Compile all projects.

ACT: [DCC Error] F2084 Internal Error: ILLK3387
EXP: Compiles successfully.

This is from Tim Jarvis, our evangelist in Australia.

    52042

QC# Project Area
52042 Delphi.Net Compiler\Language\Classes
Description: Steps:
[QC Short Description]
In classes with generic methods, generic types are not recognized as returning the constrained type.

[QC Description]
If, for instance, I declare a method with a a constraint <T: IComparable<T>> and have a parameter like List<T>, then the items of the List<T> are not recognized as items implementing IComparable<T>. Types declared direclty as T are recognized.
QC Entry 52042
* Create a new Delphi for .NET console application * Change the code of the .dpr to this: program IndirectGenerics; {$APPTYPE CONSOLE} uses System.Collections.Generic, SysUtils; type TTest = class procedure Confuse<T: IEquatable<T>>(list: IList<T>); procedure Test<T: IComparable<T>>(list: IList<T>); end; procedure TTest.Confuse<T>(list: IList<T>); begin end; procedure TTest.Test<T>(list: IList<T>); begin if list[0].CompareTo(list[1]) < 0 then Exit; end; begin end. * Compile the code exp: code compiles act: [DCC Error] IndirectGenerics.dpr(21): E2003 Undeclared identifier: 'CompareTo' * Change the code of TTest.Test<T> to: procedure TTest.Test<T>(list: IList<T>); var item: T; begin item := list[0]; if item.CompareTo(list[1]) < 0 then Exit; end; exp: same error, plus error at assignment of list[0] to item act: compiles Note that if procedure Confuse<T: IEquatable<T>> is removed, or if its type parameter is constrained as IComparable<T> instead of IEquatable<T>, the original version of Test<T> will compile.

QC# Project Area
Delphi.Net Compiler\Language\Overloading
Description: Steps:
Spurious ambiguous overload problem when generic class has overloaded methods taking open arrays, and one of the open array parameters is of a type parameter type Code (fails to compile with ambiguous error):

---8<---
{$apptype console}

type
C<T> = class
class procedure P(const x: array of T); overload;
class procedure P(const x: array of string); overload;
end;

procedure Go;
begin
C<Integer>.P([42]); // ##OUTPUT: array of T
C<string>.P(['42']); // ##OUTPUT: array of string
end;

class procedure C<T>.P(const x: array of T);
begin
Writeln('array of T');
end;

class procedure C<T>.P(const x: array of string);
begin
Writeln('array of string');
end;

begin
Go;
end.
--->8---

QC# Project Area
Delphi.Net Compiler\Language\Overloading
Description: Steps:
Overloading generic method with open array method fails with internal error / AV Code fails to compile:

---8<---
{$apptype console}

type
C2 = class
class procedure P<T>(const x: array of T); overload;
class procedure P(const x: array of string); overload;
end;

procedure Go;
begin
C2.P([42]); // ##OUTPUT: array of T
C2.P(['42']); // ##OUTPUT: array of string
end;

class procedure C2.P<T>(const x: array of T);
begin
Writeln('array of T');
end;

class procedure C2.P(const x: array of string);
begin
Writeln('array of string');
end;

begin
Go;
end.
--->8---

QC# Project Area
Delphi.Net Compiler\Language\Overloading
Description: Steps:
In .NET 2.0 the CLR introduced new overloaded methods to System.String.Split. One new overload takes a string array which is ambiguous with the char array version. Compile the following against .NET 2.0.40607:

procedure OverloadSplitTest(S: System.String);
var
splits: array of string;
begin
splits := S.Split([',','.']);
end;

It will now fail with an ambiguous overload error.

    51841

QC# Project Area
51841 Delphi.Net Compiler\Language\Parameterized Types
Description: Steps:
[QC Short Description]
Overloads with generics are position-dependent

[QC Description]
If one overloaded has an addtional parameter to the other, the one without the additional parameter won't be found if it is declared after the one with the extra parameter. But if changed around, the other is said to have too many parameters.

IOW, only the first of the overloads is recognized. The other isn't.

This does not happen if the overloads are not generic.

See steps.

QC Entry 51841
* Start a new Delphi for .NET console application * Change the code to make it look like this: //---------------------------------------------------------------------------------------------------------------------- program BraindeadOverloads; {$APPTYPE CONSOLE} uses System.Collections.Generic, SysUtils; type Algos = class class function MinElement<T>(List: IList<T>; Comparer: IComparer<T>): Integer; overload; static; class function MinElement<T>(List: IList<T>): Integer; overload; static; end; class function Algos.MinElement<T>(List: IList<T>; Comparer: IComparer<T>): Integer; begin Result := -1; end; class function Algos.MinElement<T>(List: IList<T>): Integer; begin Result := -1; end; var L: IList<Integer>; C: IComparer<Integer>; begin try Writeln(Algos.MinElement<Integer>(L)); // line 31 Writeln(Algos.MinElement<Integer>(L, C)); // line 32 Readln; except on E:Exception do Writeln(E.Classname, ': ', E.Message); end; end. //---------------------------------------------------------------------------------------------------------------------- * Try to compile it: exp: compiles act: [DCC Error] BraindeadOverloads.dpr(31): E2250 There is no overloaded version of 'Algos.MinElement<System.Int32>' that can be called with these arguments Now change the class declaration to look like this: type Algos = class class function MinElement<T>(List: IList<T>): Integer; overload; static; class function MinElement<T>(List: IList<T>; Comparer: IComparer<T>): Integer; overload; static; end; * Try to compile now exp: compiles act: [DCC Error] BraindeadOverloads.dpr(32): E2034 Too many actual parameters

    52040

QC# Project Area
52040 Delphi.Net Compiler\Language\Parameterized Types
Description: Steps:
[QC Short Description]
Internal Error T776 when defining two methods returning same generic type

[QC Description]
The steps describe this best. If I change both result types to IList<T>, the internal error does not occur.
QC Entry 52040
* Start a new Delphi for .NET console application
* Add a new Delphi for .NET unit to it
* Change the code of the unit to make it look like:

unit UListTools;

interface

uses
System.Collections.Generic;

type
ListTools = class
function ListFromArray<T>(A: array of T): List<T>;
function ListWithCount<T>(Num: Integer): List<T>;
end;

implementation

function ListTools.ListFromArray<T>(A: array of T): List<T>;
begin
Result := nil;
end;

function ListTools.ListWithCount<T>(Num: Integer): List<T>;
begin
Result := nil;
end;

end.

* Try to compile the project
exp: compiles
act: [DCC Error] UListTools.pas(24): F2084 Internal Error: T776

* Change the result type of the first method to IList<T>
* Try to compile the project
exp: same error
act: compiles

Note: you can also change the result type of the second routine to IList<T>, as long as there is only one List<T> result type.
Note: making the function body of the second method empty removes the problem.

    52043

QC# Project Area
52043 Delphi.Net Compiler\Language\Parameterized Types
Description: Steps:
[QC Short Description]
Arrays are not recognized as implementing interfaces

[QC Description]
Arrays are not recognized as implementing IEnumerable<T>, or
IList<T>, when used as parameters:

type
Algos = class
class function MinElement<T>(list: IList<T>;
comparer: IComparer<T>): Integer;
end;

You can't simply pass an array of Integer to:

x := Algos.MinElement<Integer>(myIntegerArray);

You'll have to do:

x := Algos.MinElement<Integer>(myIntegerArray as IList<Integer>);

Similarly, this doesn't compile either:

lst := List<Integer>.Create(myIntegerArray);

You must do:

lst := List<Integer>.Create(myIntegerArray as IEnumerable<Integer>);
QC Entry 52043
* Create a new Delphi for .NET console application * Change its code to: program ArraysAsInterfaces; {$APPTYPE CONSOLE} uses System.Collections.Generic, SysUtils; type Algos = class class procedure First<T>(list: IList<T>); static; end; class procedure Algos.First<T>(list: IList<T>); begin end; var ints: List<Integer>; arr: array[0..1] of Integer = (1, 2); begin ints := List<Integer>.Create(arr); // line 23 Algos.First<Integer>(arr); // line 24 end. exp: compiles act: [DCC Error] ArraysAsInterfaces.dpr(23): E2250 There is no overloaded version of 'Create' that can be called with these arguments [DCC Error] ArraysAsInterfaces.dpr(24): E2010 Incompatible types: 'IList<System.Int32>' and 'Array' * Change the code in the main block to: begin ints := List<Integer>.Create(arr as IEnumerable<Integer>); // line 23 Algos.First<Integer>(arr as IList<Integer>); // line 24 end. Now the errors are gone.

    51660

QC# Project Area
51660 Delphi.Net Compiler\Language\Parameterized Types
Description: Steps:
[QC Short Description]
Compiler F2084 Internal Error: T776 when compiling a unit defining a class or record involving a generic type.

[QC Description]
Code in Steps produces Internal Error in compiler.

If you move the definition of TResult into the main program, it compiles OK.

Using latest version of DCCIL stuff.
QC Entry 51660
program IntErr; {$APPTYPE CONSOLE} uses System.Collections.Generic, u2IntErr in 'u2IntErr.pas'; type TMyClass = class public function Load: TResult; end; var MyCats: TResult; MyClass: TMyClass; function TMyClass.Load: TResult; var Cats: List<String>; begin Cats := List<String>.Create; Result.Cats := Cats; end; begin MyClass := TMyClass.Create; MyCats := MyClass.Load; end. ================================================================== unit u2IntErr; interface uses System.Collections.Generic; type TResult = record Cats: List<String>; end; implementation end.

QC# Project Area
Delphi.Net Compiler\Language\Parameterized Types
Description: Steps:
The following code will generate incorrect IL and crash the runtime.
Compile and run the attached application below.

See the following exception error at runtime.

Unhandled Exception: System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) at BTS255374.Units.BTS255374.BTS255374()

program BTS255374;

{$APPTYPE CONSOLE}

type

TArray<T> = array[] of T;

TArrayReverser = class
private
procedure Swap<T>(var A: T; var B: T);
public
function ReverseIt<T>(const A: TArray<T>): TArray<T>;
end;

function TArrayReverser.ReverseIt<T>(const A: TArray<T>): TArray<T>;
var
I: Integer;
begin
Result := A;
for I := 0 to (Length(Result) - 1) div 2 do
Swap<T>(Result[I], Result[Length(Result) - 1 - I]);
end;

procedure TArrayReverser.Swap<T>(var A: T; var B: T);
var
Temp: T;
begin
Temp := A;
A := B;
B := Temp;
end;

var
Reverser: TArrayReverser;
IntArray: TArray<Integer>;
I: Integer;

begin
SetLength(IntArray, 10);
for I := Low(IntArray) to High(IntArray) do
IntArray[I] := I * 10;

Reverser := TArrayReverser.Create;
IntArray := Reverser.ReverseIt<Integer>(IntArray);

for I := Low(IntArray) to High(IntArray) do
Writeln('IntArray[', I, '] = ', IntArray[I]);

Readln;
end.

QC# Project Area
Delphi.Net Compiler\Language\Parameterized Types
Description: Steps:
Generic constraint checking fails spuriously for instantiation of a descendant of the constraint, using another type parameter in declaration of descendant (see example code)

More complicated generic solutions need this flexibility to reduce redundant dependent types when declaring descendants, since .NET doesn't have a typedef-in-template equivalent like C++.
This program doesn't compile:

Error: E2515 Type parameter 'U' is not compatible with type 'TBaseAlpha<TConcreteBeta<T>.T>'

---8<---
{$apptype console}

type
TBaseAlpha<T> = class
private
F: T;
public
property P: T read F write F;
end;

TBaseBeta<T; U: TBaseAlpha<T>> = class
public
F: U;
procedure M(x: T);
end;

TConcreteAlpha<T> = class(TBaseAlpha<T>)
end;

TConcreteBeta<T> = class(TBaseBeta<T, TConcreteAlpha<T>>)
end;

procedure TBaseBeta<T;U>.M(x: T);
begin
F.P := x;
end;

var
x: TConcreteBeta<Integer>;
begin
x := TConcreteBeta<Integer>.Create;
x.F := TConcreteAlpha<Integer>.Create;
x.M(42);
Writeln(x.F.P);
end.
--->8---

For comparison, here's the same program in C#:

---8<---
using System;

class TBaseAlpha<T>
{
T F;
public T P { get { return F; } set { F = value; } }
}

class TBaseBeta<T, U>
where U: TBaseAlpha<T>
{
public U F;
public void M(T x)
{
F.P = x;
}
}

class TConcreteAlpha<T> : TBaseAlpha<T>
{
}

class TConcreteBeta<T> : TBaseBeta<T, TConcreteAlpha<T>>
{
}

class App
{
static void Main()
{
TConcreteBeta<int> x;

x = new TConcreteBeta<int>();
x.F = new TConcreteAlpha<int>();
x.M(42);
Console.WriteLine(x.F.P);
}
}
--->8---


    51423

QC# Project Area
51423 Delphi.Net Compiler\Language\Parameterized Types
Description: Steps:
[QC Short Description]
Methods with different constraints will not always compile

[QC Description]
Depending on which constraints are placed on methods of a class, the code of one of the methods will or will not compile.

This won't compile:

type
Tester = class
function AreEqual<T: IEquatable<T>>(List: IList<T>;
Index1, Index2: Integer): Boolean;
function Compare<Z: IComparable<Z>>(List: IList<Z>;
Index1, Index2: Integer): Integer;
end;

function Tester.AreEqual<T>(List: IList<T>;
Index1, Index2: Integer): Boolean;
begin
Result := List[Index1].Equals(List[Index2]);
end;

function Tester.Compare<Z>(List: IList<Z>;
Index1, Index2: Integer): Integer;
begin
Result := List[Index1].CompareTo(List[Index2]);
end;

I get the error "undeclared identifier: 'CompareTo'". But the next code will compile, and 'CompareTo' is not undeclared anymore:

type
Tester = class
function AreEqual<T: IComparable<T>>(List: IList<T>;
Index1, Index2: Integer): Boolean;
function Compare<Z: IComparable<Z>>(List: IList<Z>;
Index1, Index2: Integer): Integer;
end;

function Tester.AreEqual<T>(List: IList<T>;
Index1, Index2: Integer): Boolean;
begin
Result := List[Index1].CompareTo(List[Index2]) = 0;
end;

function Tester.Compare<Z>(List: IList<Z>;
Index1, Index2: Integer): Integer;
begin
Result := List[Index1].CompareTo(List[Index2]);
end;

Note that the following will also compile, so is it perhaps that I am doing something wrong?

type
Tester2 = class
function AreEqual<T: IEquatable<T>>(Item1, Item2: T): Boolean;
function Compare<Z: IComparable<Z>>(Item1, Item2: Z): Integer;
end;

function Tester2.AreEqual<T>(Item1, Item2: T): Boolean;
begin
Result := Item1.Equals(Item2);
end;

function Tester2.Compare<Z>(Item1, Item2: Z): Integer;
begin
Result := Item1.CompareTo(Item2);
end;

Hmmm... This also compiles, even with different constraints:

function Tester.Compare<Z>(List: IList<Z>;
Index1, Index2: Integer): Integer;
var
Element: Z;
begin
Element := List[Index1];
Result := Element.CompareTo(List[Index2]);
end;

So how come the compiler can't recognize List[Index1] as implementing IComparable, but it can recognize Element doing that? Actually, even the cast IComparable(List[Index1]) was rejected. Note, if both methods have the same constraint, this seems to be unimportant.
QC Entry 51423
* Start a new Delphi for .NET console app * Change the code of the app to: program Project13; {$APPTYPE CONSOLE} uses SysUtils, System.Collections.Generic; { $DEFINE SAMECONSTRAINT} type Tester = class {$IFDEF SAMECONSTRAINT} function AreEqual<T: IComparable<T>>(List: IList<T>; Index1, Index2: Integer): Boolean; {$ELSE} function AreEqual<T: IEquatable<T>>(List: IList<T>; Index1, Index2: Integer): Boolean; {$ENDIF} function Compare<Z: IComparable<Z>>(List: IList<Z>; Index1, Index2: Integer): Integer; end; Tester2 = class function AreEqual<T: IEquatable<T>>(Item1, Item2: T): Boolean; function Compare<Z: IComparable<Z>>(Item1, Item2: Z): Integer; end; function Tester.AreEqual<T>(List: IList<T>; Index1, Index2: Integer): Boolean; begin {$IFDEF SAMECONSTRAINT} Result := List[Index1].CompareTo(List[Index2]) = 0; {$ELSE} Result := List[Index1].Equals(List[Index2]); {$ENDIF} end; function Tester.Compare<Z>(List: IList<Z>; Index1, Index2: Integer): Integer; begin Result := List[Index1].CompareTo(List[Index2]); // error!! end; function Tester2.AreEqual<T>(Item1, Item2: T): Boolean; begin Result := Item1.Equals(Item2); end; function Tester2.Compare<Z>(Item1, Item2: Z): Integer; begin Result := Item1.CompareTo(Item2); end; begin try { TODO -oUser -cConsole Main : Insert code here } except on E:Exception do Writeln(E.Classname, ': ', E.Message); end; end. * Build exp: compiles act: [DCC Error] Project13.dpr(37): E2003 Undeclared identifier: 'CompareTo' * remove the space before the $ in the $DEFINE line * Build exp: same error act: compiles * Also note: no error in class Tester2. * remove $DEFINE * Change the code of Tester.Compare<Z> to: function Tester.Compare<Z>(List: IList<Z>; Index1, Index2: Integer): Integer; var Item: Z; begin Item := List[Index1]; Result := Item.CompareTo(List[Index2]); end; * Build exp: error again act: compiles

    51844

QC# Project Area
51844 Delphi.Net Compiler\Linker
Description: Steps:
[QC Short Description]
Internal Error ILLK3387 aliasing System.Collections.Generic.Dictionary

[QC Description]
I am attempting to alias System.Collections.Generic.Dictionary and am using this type alias to expose a public property in a class. When this property is consumed by another application or assembly, compilation fails with 'F2084 Internal Error: ILLK3387'. If the class resides in the same assembly as the consuming code, the internal error doesn't happen, and the project compiles without error.
QC Entry 51844
- Download GenericTest.zip and unzip - Open ProjectGroup1.groupproj - Select 'Project|Build all projects' from the IDE main menu Expected: The assembly and console application will compile without error Actual: Compilation fails with 'F2084 Internal Error: ILLK3387' - In the source for Project1.dpr, comment out the {$DEFINE IN_ASSEMBLY} line - Select 'Project|Build all projects'. This time both projects will compile without error

QC# Project Area
Delphi.Net Install
Description: Steps:
Don't install ECO for VisualStudio integration in BDS installation 1. I have installed VisualStudio 2005 with Together for VS 2006.
2. I have installed Highlander - release HighlanderFT_ARCH_v11.0.2804.9245.4
3. Now when I create any Together for VisualStudio project I am prompted to enter license number for ECO - this is the bug. BDS installation should not install plugin for VisualStudio
4. When I uninstall ECO - all Together for VS functionality will be disabled - this is the bug too. Only when I reinstall Togethger for VS - Together functionality will be restored

In the "ECO_setup.msi" the feature ECO\ideinteg\VSInteg doesn't use any condition and have Install Level=1.
- remove this feature at all
- or change Install Level to 200
- or add any condition for this feature

QC# Project Area
Delphi.Net Install
Description: Steps:
Help Update - UNINSTALL

<Back button> on second dialog (Ready to Install -Setup is ready to start uninstalling rad..) does nothing and uninsatll hangs...clicking Next do nothing after this and Cancel doesnt work either.

tested with \\ussvs-file02\RND\Delphi\latest\help\Releases\HelpUpdate1.5

QC# Project Area
Delphi.Net Install
Description: Steps:
Relate to 255282, 255298, 255248

I installed RAD Studio Pro SKU via network install and registered product. I descided to upgade it to RAD Studio Architect SKU so re-invoked Setup.exe and selected Upgrade option then entered Architect key and proceeded installation. There're so many problems.
1) In Feature list page, required disk space is shown in negative number (see Cap4.png).
Results in 2)NO UPGRADE TO Architect SKU, Aboutbox/Spalsh screen still say Professional SKU and also NO ECO main menu (see Cap6.png), 3) click data Explore tab produced object reference is not set to instance error (see Cap7.png), re-click tab opend data Explore page but 4) NO(lost) Ado.NET conections (see Cap8.png).
Attached step by step screen shots, see Cap1 through Cap8.png
- install RAD Studio Pro SKU (3AKP-STADEA-GKB5BF-????) via network install (download Setup.exe from http://installers.codegear.com/release/radstudio/11.0.2804.9245/ into local drive and invoke Setup.exe)
- start IDE and register product
- Terminate IDE then reinvoke Setup.exe
- select Upgrade option, enter Architect key (3ADN-DRD8EA-FFG5AG-????), proceed installation
// Note: you'll see negative required disk space in feature list page
- Launch IDE and examine properly upgraded to Architect SKU
// Note: no Eco menu, still Professional SKU, missed Ado.NET Connctions in data Explore

QC# Project Area
Delphi.Net Install
Description: Steps:
Help Update

If you remove HelpUpdate and you click Check Update again you will get a message saying there is no Update available,

Uninstall is failing to delete information about Update.
install help Update
Remove help from Add/Remove Programs
Run check Updates
//exp: install udpate again
//act: no Updates available

QC# Project Area
Delphi.Net Install
Description: Steps:
In dbxdrivers.ini, for Informix, VendorLib is set to isqlb09a.dll. It should be set to clidll.dll.

Correction, we switched the dbxdrivers.ini to use isqlt09a.dll ('b' replaced with a 't').

QC# Project Area
Delphi.Net Install
Description: Steps:
After installing the update, BORLAND.VCL.SAMPLES.DLL cannot be loaded by the IDE

// Francois Piette
I see it also in the french localized version.
-Install Highlander and run IDE, note it runs fine
-Install Nov Update and run IDE
//res:
Error Loading IDE Assembly or Package
Failed to load $(BDS)\BIN\BORLAND.VCL.SAMPLES.DLL.
Borland.Vcl.Design.EInstalledPackageError: Could not load the assembly

QC# Project Area
Delphi.Net Install
Description: Steps:
Help Update
Warning about Help Update be recommended to Update3 or RAD 2007 installations is being returned when running helpupdate /upgrade after having installed Nov Update.
Install Nov Update
Run helpupdate /upgrade

QC# Project Area
Delphi.Net Install
Description: Steps:
Missing required disk space size information at Setup Cache page during standalone Help_Setup process, attached screen shot. - install HL w/out Help
- start IDE and register it
- close IDE
// used Highlander.Help/0828.1/*
- install Help via Setup /upgrade

QC# Project Area
Delphi.Net Install
Description: Steps:
After Upgrade from D2007, IDE gets error on start-up with Rave, and IntraWeb.NET app cannot be compiled.

you need following software to see attached video:

http://download3.vmware.com/software/wkst/VMware-moviedecoder-6.0.0-45731.exe


//original report
When upgrading from Delphi2007(Spacely) to Highalnder,

I got two error dialog at startup time, and any personalities are not loaded.

Once exit IDE, and restart, everything OK.

It looks like "as design" but too silly user experience.

//ttsuchiya, 1) base is RAD Studio 2007 (Spacely Update1+Cogswell) Ent RTM case, got same two error dialog at 1st time launching of IDE (did not launched IDE from Installer), 2) base is Cogswell Pro RTM case, got two same error dialog at 1st time launching of IDE (launched IDE from Installer) and seemed to loaded Architect personalities as far as saw Tool Palette but did not loaded Design personalities (checked with UML-2.0 sample and got error of no Design-Personality) although all is fine since 2nd time launching of IDE.
- Delphi2007 (RTM) Install
- Execute Highlander's setup.exe from Highlander's install directory
- Enter Highalnder's Architect serial

After complete installing, execute IDE.

- Two AV dialogs are show up.

QC# Project Area
Delphi.Net Install
Description: Steps:
November 2007 Update
Updated files time stamp is same to RTM's one, 2007-08-27 3:03 although its version information is 11.0.2830.9463.

Attached screen shots.
- Update Highlander RTM via November 2007 Update Setup.exe then examine installed files

QC# Project Area
Delphi.Net Install
Description: Steps:
When installing Architect Trial the Wise Owl Demeanor checkbox is ON and disabled (making it appear that Wise Owl will and must be installed) Install the latest build using a trial key
//act:
Wise Owl Demeanor checkbox is ON and disabled
//exp:
Wise Owl Demeanor checkbox is OFF and disabled

QC# Project Area
Delphi.Net Install
Description: Steps:
When upgrading from Spaely/Cogswell, Some registry entries still use old value.

For example.

HKEY_CURRENT_USER\Software\Borland\BDS\5.0\AssemblyFolders\BorlandComponents

Under Spacely/Cogswell, this vaule is

@="C:\\Program Files\\Common Files\\Borland Shared\\BDS\\Shared Assemblies\\5.0\\"

For Highlander, it should be

@="C:\\Program Files\\Common Files\\Codegear Shared\\BDS\\Shared Assemblies\\5.0\\"

[See 255182]
See 255182

QC# Project Area
Delphi.Net Install
Description: Steps:
Attached bmp is returned when
HelpUpdate /upgrade is run while dexplor is running

Issues:
. Yes, No, Cancel Buttons : there is no question and not sure what to select here

. No button: is in loop. Doesnt do anything

. Yes button: Install is continued

$PRELIST : ?


. Request service pack 4 ?



QC# Project Area
Delphi.Net Install
Description: Steps:
The files version_cpp.txt and updates.ini should not be in the install directory. It should be deleted from the iso image. Open the ISO, look at the install directory for version_cpp.txt

QC# Project Area
Delphi.Net Install
Description: Steps:
Launching the install.exe from the RAD Studio DVD raises 'unknown publisher' Insert DVD
Run install.exe
//note that it appears to not be digitally signed.

QC# Project Area
Delphi.Net Install\Files
Description: Steps:
After applying the Nov Update, the IntraWeb assemblies have changed Assembly Version number -Install Highlander RTM and either back up assemblies or note Assembly Version no.'s
-Install Nov Update
//res:
..\bin\dclIntraweb_90_100NET.dll changes from 1.0.2804.24002 to 1.0.2838.31318
..\Shared Assemblies\5.0\Intraweb_90_100NET.dll changes from 1.0.2804.23999 to 1.0.2838.31316
..\Shared Assemblies\5.0\IntrawebDB_90_100NET.dll changes from 1.0.2804.24001 to 1.0.2838.31317

QC# Project Area
Delphi.Net Install\Files
Description: Steps:


These are the new file deliveries with respect to RAID 255580.
Personality = Win32
SKU=All
Feature=(Core) Database Feature


Please add the following files to the install image:

1. From $(TP)\bin to $(WINDOWS)\System32
DbxMetaData100.bpl

2. From $(TP)\intermediate\release\dcp to $(BDS)\lib
DbxMetaData.dcp

3. From $(TP)\intermediate\release\lib to $(BDS)\lib
DBXTypedTableStorage.dcu
DBXDataStoreMetaDataWriter.dcu
DBXDb2MetaDataWriter.dcu
DBXInformixMetaDataWriter.dcu
DBXInterbaseMetaDataWriter.dcu
DBXMetaDataWriter.dcu
DBXMsSqlMetaDataWriter.dcu
DBXMySqlMetaDataWriter.dcu
DBXOracleMetaDataWriter.dcu
DBXSybaseASAMetaDataWriter.dcu
DBXSybaseASEMetaDataWriter.dcu
DBXMetaDataProvider.dcu
DBXMetaDataWriterFactory.dcu
DBXInterbaseMetaData.dcu
DBXSybaseASEMetaData.dcu
DBXDataStoreMetaData.dcu
DBXDb2MetaData.dcu
DBXInformixMetaData.dcu
DBXMsSqlMetaData.dcu
DBXMySqlMetaData.dcu
DBXOracleMetaData.dcu
DBXSybaseASAMetaData.dcu
DBXTableStoragePlatform.dcu
DBXDataExpressMetaDataProvider.dcu
DBXClientDataSetStorage.dcu

QC# Project Area
Delphi.Net Install\Files
Description: Steps:
Borland.VclDbExpress.dll needs to be installed with a Win32 only install of Highlander. Raid 255414 covers Spacely + Update 3. 1. File|New|VCL Forms Application - Delphi for Win32
2. Drag drop any table from Data Explorer to the form

Exp. Components added, no error
Act. System.IO.FileNotFoundException: Could not load file or assembly 'Borland.VclDbExpress, Version=11.0.5000.0, Culture=neutral, PublicKeyToken=91d62ebb5b0d1b1b' or one of its dependencies. The system cannot find the file specified.
File name: 'Borland.VclDbExpress, Version=11.0.5000.0, Culture=neutral, PublicKeyToken=91d62ebb5b0d1b1b'
at Borland.Data.Explorer.DataExplorerIDEImpl.CreateDBXConnection(TreeNode aNode)
at Borland.Data.Explorer.DataExplorerIDEImpl.DragDrop(Object Sender, ItemDragEventArgs Event)
at Borland.Data.Explorer.DataExplorerControl.a(Object , ItemDragEventArgs )
at System.Windows.Forms.TreeView.OnItemDrag(ItemDragEventArgs e)

QC# Project Area
Delphi.Net Install\Files
Description: Steps:
After applying the Nov Update, the IndySystem.dll assembly has changed Assembly Version number -Install Highlander RTM and either back up assemblies or note Assembly Version no.'s
-Install Nov Update
//res:
..\Shared Assemblies\5.0\IndySystem.dll changes from 11.0.2804.9245 to 11.0.2838.9608

QC# Project Area
Delphi.Net Documentation
Description: Steps:
The API signature information, such as method signatures, is missing in a lot of the documentation. For instance, the topic "Borland.Data.AdoDbxClientProvider.TAdoDbxDataAdapter.DeleteCommand" doesn't have a description of the method. 1. Go to topic "Borland.Data.AdoDbxClientProvider.TAdoDbxDataAdapter.DeleteCommand" at ms-help://borland.bds5/delphivclwin32/Borland_Data_AdoDbxClientProvider_TAdoDbxDataAdapter_DeleteCommand.html. Note there is no line with the method signature.
2. By contrast, look at the topic "TCustomActionCombo.DragDrop Method" at ms-help://borland.bds5/delphivclwin32/ActnCtrls_TCustomActionCombo_DragDrop@TObject@Integer@Integer.html. There are lines describing the method both in C++ and Delphi.

QC# Project Area
Delphi.Net Documentation
Description: Steps:
deployJds.html deployment chapter is missing sections from sshaughnessy on how to deploy slip license files.

Also needs latest update for $(BDSCOMMONDIR)\license as one of the dirs to search for licenses.

I have provided content to Kim and Dee. Waiting for response that work is complete.
This refers to the Blackfish SQL Developer's Guide which is not in the help system. It is downloadable at: http://cc.codegear.com/Item/24980.

You can use the PDF search to find the section on slip licenses.

Thanks Emeli! -Dee

QC# Project Area
Delphi.Net VCL
Description: Steps:
Access Violation in module rtl100.bpl when pressing F1 on a menu item (in this test case - the File menu)

//note - I notice no help is linked to these menu items. Is that related? CP

//This can put the IDE into a state where you need to close it, since the AV dialog keeps coming back up.

========== jt add =========
this is VCL Actionband component problem, new steps added.

regression from D2006, in D2006, no AV only "No context-sensitive help installed." pop up, which is as expected.

// Francois Piette
I still see it with build 2700.
---- See actionband steps for VCL.NET ----

Infrequent, but I can get this to reproduce and crash the IDE after doing three times

Project | Options
Click help to open
minimize the Help viewer
Open File menu
mouse over 'Open...'
click F1

//typically this is where the A/V occurs.

=================== jt add ===================
1. File | New | VCL Win32 Application
2. drop a TActionManager, TActionMainMenu, TMemo on designer
3. double click TActionManager, add Edit category standard Action
4. drag Edit Category from Customize Dialog to ActionMainMenuBar1
5. Run with debug
6. in Running application, click File
7. mouse hover on "Paste" menu item
8. press F1
---------------------------

---------------------------
Access violation at address 00439918 in module 'Project1.exe'. Read of address 00000040.
---------------------------
OK
---------------------------

9. click OK then
---------------------------

---------------------------
No context-sensitive help installed.
---------------------------
OK
---------------------------

QC# Project Area
Delphi.Net VCL\ComCtrls
Description: Steps:
TRichEdit.LoadFromFile fails to load a non-RTF file when the PlainText property is False.

Regression caused by switch to .NET 2.0
* File | New | VCL.NET Application
* Drop a TRichEdit on the form
* Drop a TButton on the form
* In the button's OnClick enter:
RichEdit1.Lines.LoadFromFile('c:\config.sys'); // or any other plain text file
* Run, click on the button
// Exp: Text from file displayed
// Act: Garbage characters displayed

QC# Project Area
C#Builder IDE\Project Manager\Importing VB Projects
Description: Steps:
Importing in VB.Net Visual Studio 2005 project results in .vbproj file just being opened as a text file. + Download attached project (ACLChange)
+ Open hte .vbproj file
//exp: rpoject is opened
//act: .vbproj file is opened as a text file.

NOTE: Projects will not be able to open or Built as a result. This is for ALL VB projects - not just the one attached.

QC# Project Area
Delphi.Net Database
Description: Steps:
Implement TDBXBinarySequenceGenerator

Use new TDBXBlobSequenceGenerator has getBytes and getString method.

QC# Project Area
Delphi.Net Database
Description: Steps:
Implement TDBXBinaryLongSequenceGenerator

Use new TDBXBlobSequenceGenerator has getBytes and getString method.

QC# Project Area
Delphi.Net Database
Description: Steps:
If DelimIdent=True is set for a connection such as Informix connection, MetaDataProvider.CreateTable will quote the column names. However, DataGenerator.CreateParameterizedInsertStatement does not quote the column names in the insert statement it creates. This causes the insert to fail when executed.

I think TDBXCustomDataGenerator.ColumnNameString might need a call to MetaDataProvider.QuoteIdentifierIfNeeded
DataAccess.Managed.exe connection=informixconnection -s:oTestReadWriteAll

Note that you may have to modify dbxconnections.ini and add DelimIdent=True to see the error

QC# Project Area
Delphi.Net Database
Description: Steps:
TDBXTimestampSequenceGenerator generates invalid DateTime values for MSSQL. You get:

‘SQL State: 22018, SQL Error Code: 0 Invalid character value for cast specification’
DataAccess.Managed.exe connection=mssqlconnection -s:oTestReadWriteAll

QC# Project Area
Delphi.Net Database
Description: Steps:
Use DbxDataSource in ASP do not work.

Failed to find path location for assembly 'Borland.Data.AdoDbxClient'

Please see attached screenshot.

Update:
1) when user select "DBXDataSource" or "EcoDatasource", project should automatically add corresponding referenced assembly, fail to do so will cuase project has problem.

2) First time after IDE start try the step will work, assembly is added without problem, test case only exist in second and thereafter.
1. File | New | ASP Application
2. drop a gridView
3. select "New DataSource"
4. select "DbxDatabase"
5. in Configure Data Source dialog, click dropdown list, select a EmployeeClientServer
6. Next, Next, select Address table, click Next, click Finish
// GridView show:
There was an error rendering the control.
Failed to find path location for assembly 'Borland.Data.AdoDbxClient'

QC# Project Area
Delphi.Net Database\DBExpress
Description: Steps:
DB2 - transactions

When committing a transaction or rolling back a transaction; the DB2 driver does not set the connection back to auto-commit mode.
Testcase to be developed.
(Steve B, could you...)

QC# Project Area
Delphi.Net Database\DBExpress
Description: Steps:
From QC 52672

AdoDbxClient has trouble with certain GetSchema calls.

Run TestAdo.exe connection=ibconnection -s:TestRaid255674


The following code fails (at least in the RTM version of RadStudio):


string[] restrictions = new string[4];
restrictions[0] = ""; // CatalogName
restrictions[1] = ""; // SchemaName
restrictions[2] = "abc"; // TableName
restrictions[3] = TDBXMetaDataTableTypes.Table; // TableType

DataTable schema = Connection.GetSchema(TDBXMetaDataCollectionName.Tables , restrictions);


QC# Project Area
Delphi.Net Database\DBExpress
Description: Steps:
Putting a TSqlConnection on a VCL.Net form automatically pulls in the unit DBXpress. This is a virtually empty unit, it only contains a uses clause or two. the problem is that it is deprecated, so the compiler will issue a warning everytime it is used.

Holger pointed it out in the first place :)


the reason it is pulled in is because of:

procedure TSQLConnectionSelectionEditor.RequiresUnits(Proc: TGetStrProc);
begin
Proc('DBXpress');
end;

in <tp>\app\dotnetlib\db\Borland.Vcl.Design.DbxCtrlsReg.pas

description of the RequiresUnit:
Should call Proc with all the units that are needed to be used when using this class. The form designer automatically ensures the unit the class was declared in and all its ancestor's units are used in the user's program when they use this component. Sometimes, however, an event will use a type in one of its parameters that is not in its unit nor any of its ancestor's units. If this is the case a selection editor should be registerd that implements RequiresUnits and it should call Proc for each unit that declare the types needed by its events
new VCL.Net app
drop TSqlConnection on the form
compile

exp: compiles wihtout warnings
act: [DCC Warning] Unit1.pas(16): W1006 Unit 'Borland.Vcl.DBXpress' is deprecated

QC# Project Area
Delphi.Net Database\DBExpress
Description: Steps:
dbExpress does not throw an exception if an unspported data type is specified for a parameter. TDBXHighlanderBugsSuite.Managed.exe connection=blackfishsqlconnection -s:TestRaid_255570

QC# Project Area
Delphi.Net Database\DBExpress\TSQLStoredProc
Description: Steps:
Seems to be problems with parameter metadata for stored procs that return readers.

SqlExpr GetParameterType seems to expect 'RESULT' value to indicate a return value. Metadata for BlackfishSQL and maybe others returns 'RETURN'. I changed the code to treat both the same.

Seems like user must set the data type for this parameter to ftCursor to allow readers to be loaded into the dataset. Would be nice if apps did not have to set the datatype for a return parameter.
Reuse this test case:

TDBXHighlanderBugsSuite.Managed.exe connection=BLACKFISHSQLCONNECTION -s:oTestRaid_255446

QC# Project Area
Delphi.Net Database\dbExpressCore
Description: Steps:
For Blackfish, GetVendorProperty('DriverDataTypes') is returning types that are not supported by the driver:

TDBXDataTypesEx.SingleType
TDBXDataTypesEx.Int8Type
DataAccess.Managed.exe connection=blackfishsqlconnection -s:SampleTestDriverDataTypes

QC# Project Area
Delphi.Net Database\dbExpressCore
Description: Steps:
For ASA, unable to insert a Boolean value of True. Inserting False works correctly. Error is:

[Sybase][ODBC Driver][Adaptive Server Anywhere]Value -1 out of range for destination. Error code = -158, SQL state = 22003
DataAccess.Managed.exe connection=asaconnection -s:oTestReadWriteAll

QC# Project Area
Delphi.Net Database\dbExpressCore
Description: Steps:
TDBXReader.Value[I].GetValueSize returns -1 when reading back VarBytes values. TDBXHighlanderBugsSuite.Managed.exe connection=mssqlconnection -s:oTestRaid_255618

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
Unable to copy a blackfishSQL database whose log files have been deleted

[Nov Update]
1. Create a BlackfishSQL database
2. Delete all of it's log files
3. In Data Explorer connect to the database, you will receive an error and be prompted to open it in read-only mode. Do so.
4. Right click, Database|Copy Database
5. Accept the defaults and click Ok

Exp. Database copies
Act. Could not open database in read-only mode. The database is currently being used in non read-only mode.

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
New Data Explorer items should show up on the Data Explorer main menu when a connection name is selected in Data Explorer. Currently, the top level menu item "Database" is there but the sub items are not. Selecting "Database" does nothing.

[Nov Update]
1. Select a blackfishSQL connection name in Data Explorer
2. Data Explorer|Database

Exp. A sub menu
Act. No sub menu

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
Unable to copy database connection created under
dbexpress node. An unhandled exception is raised:

System.NullReferenceException: Object reference not set to an instance of an object.
at Borland.Vcl.TStrings.GetValue(String Name)
at Borland.Vcl.TStrings.get_Values(String Name)
at Borland.Data.TDBXProperties.get_Values(String Name)
at Borland.Data.Explorer.ConnWrapper.getProperty(String property) in c:\DevBuild\d11\tp\database\internal\src\cs\borland\dbtools\explorer\ConnWrapper.cs:line 208
at Borland.Data.Explorer.CopyDatabaseDialog.btnOK_Click(Object sender, EventArgs e) in c:\DevBuild\d11\tp\database\internal\src\cs\borland\dbtools\explorer\CopyDatabaseDialog.cs:line 327
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

[Nov Update]
1. Create a blackfishSQL connection under the dbexpress node in data explorer
2. Right click, Database|Copy Database
3. Click Ok

Exp. Copies
Act. Unhandled exception

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
If you try to copy a connection string to web.config that already exists and the string is not identical, an unhandled exception is raised:

System.Configuration.ConfigurationErrorsException: The entry 'ORACLECONNECTION' has already been added.
at System.Configuration.ConfigurationElementCollection.BaseAdd(ConfigurationElement element, Boolean throwIfExists, Boolean ignoreLocks)
at System.Configuration.ConfigurationElementCollection.BaseAdd(ConfigurationElement element)
at System.Configuration.ConnectionStringSettingsCollection.Add(ConnectionStringSettings settings)
at Borland.Data.Explorer.DataExplorerIDEImpl.CopyConnectionStringToConfig(String connectionName, String connectionString, String providerName)
at Borland.Data.Explorer.DataExplorerControl.miAddToWebConfig_Click(Object sender, EventArgs e)
at System.Windows.Forms.MenuItem.OnClick(EventArgs e)
at System.Windows.Forms.MenuItem.MenuItemData.Execute()
at System.Windows.Forms.Command.Invoke()
at System.Windows.Forms.Command.DispatchID(Int32 id)
at System.Windows.Forms.Control.WmCommand(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.TreeView.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
1. File|New|ASP.NET Web Application - - Delphi for .NET
2. Activate the Data Explorer tab, choose a connection name, right click on it and select 'Add to Web.Config'
3. Right click on the connection name and choose Modify Connection
4. Change something and click Ok
5. Right click on the connection name and choose 'Add to Web.Config'

Exp. Either the string is replaced or a graceful error message is thrown.
Act. Unhandled exception

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
Open BlackfishSQL connections are not closed upon IDE shutdown.


[Nov Update]
1. Create a new BlackfishSQL connection in Data Explorer under the BlackfishSQL Local Provider and open it
2. Close the IDE
3. Start the IDE
4. Try to open a connection to the BlackfishSQL connection created in Step 1 by expanding the Tables node

Exp. Opens without error
Act. 'Database appears to be open by another process or hasn't been shutdown properly. Would you like to attempt to open it anyway?'

There appears to be a [databasename]_temp.jds file created in the directory which is not removed when the IDE is shutdown.

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
'Add to Web.config' option should be accessible in more cases.

Right now it seems to only be able to be used if the asp.net designer is active.

[Nov Update]
1. File|New|ASP.NET Web Application - - Delphi for .NET
2. F12 to activate the Code Editor
3. Click the Data Explorer tab and right click on a connection name

Exp. 'Add to Web.config' option
Act. Option not there

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
BlackfishSQL, if you try to copy an encrypted database and do not choose to encypt the copy you get:

Runtime Error: [line 1, col 15] Write operation failed. File: [Copied database name] database is read only.

Connection is created anyway and you appear to be able to connect without error.

Database verification fails with 3 errors though. Not sure if this is expected.

[Nov Update]
1. Create a blackfishSQL connection
2. Right click, Database|Copy Database
3. Check off the Encrypt New Database check box and click Ok
4. Right click on the new connection, Database|Copy Database
5. Leave the Encrypt New Database check box unchecked and click Ok

Exp. Success
Act. Runtime Error: [line 1, col 15] Write operation failed. File: [Copied database name] database is read only.

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
Data Explorer main menu not updated to include the 'Add to Web.config' option unless the popup menu has been accessed first.


[Nov Update]
1. File|New|ASP.NET Web Application - - Delphi for .NET
2. Activate the Data Explorer and left click to select a connection name
3. Click the Data Explorer main menu item and observe the items listed

Exp. 'Add to Web.config' option
Act. Option not present

If you right click on the connection name to invoke the popup menu and then click the Data Explorer main menu item, the item will be listed.

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
BlackfishSQL, if you try to copy an encrypted database you get:

[databasename] database is not opened (user name is sysdba).

However, the copy is made anyway. If you try to connect to the copy you get:

Borland.Data.DataStore.FromJava.JDataStore.DataStoreException: You do not have STARTUP rights for this database
Borland.Data.DataStore.SQLException: You do not have STARTUP rights for this database

[Nov Update]
1. Create a valid blackfishSQL connection
2. Right click, Database|Copy Database
3. Check off the Encrypt New Database check box and click Ok
4. Right click on the copied connection name and select Database|Copy Database
5. Check off the Encrypt New Database check box and click Ok

Exp. Copies without error
Act. [databasename] database is not opened (user name is sysdba).

6. Right click on the copied connection name (3rd connection created) select Modify Connection and Test Connection.

Exp. Test connection succeeded
Act. Borland.Data.DataStore.FromJava.JDataStore.DataStoreException: You do not have STARTUP rights for this database
Borland.Data.DataStore.SQLException: You do not have STARTUP rights for this database

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
BlackfishSQL, copy database validation requires extra steps.

[Nov Update]
1. Create a connection to BlackfishSQL database and verify it works
2. Right click on the connection in Data Explorer and choose Database|Copy Database
3. Note that the Ok button is greyed out
4. Modify the Connection Name. Ok button is still greyed out
5. Modify the Database field to point to a different jds file or location

Exp. Ok button enabled
Act. Ok button greyed out. You must modify the Connection Name field again for it to become enabled

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
typo in IDE message "Database create suceeded"


[Nov Update]
1.Click Database Explorer tab
2 <Rclick ADO.NET BlackFish node>Add New Connection //enter with any name i.e BFConn
3 <Rclick BFConn> Modify Connection
4 Set UserName=sysdba, Password=masterkey and Database:c:\temp\mytest99
5 Click 'Test Connection' button
6 It will prompt to create database. Click OK "Database create suceeded"

    51076

QC# Project Area
51076 Delphi.Net Database\Data Explorer
Description: Steps:
[QC Short Description]
Stored procedures cannot be dropped from the database if the dotnet implementation no longer exists

[QC Description]
If I have a Blackfish stored procedure in the database called SOMEOTHERMETHOD and I rename the method in the Delphi implementation I am no longer able to drop the method in Data Explorer
QC Entry 51076
1) Create a new Blackfish Remote database in Data Explorer 2) Open the supplied example and compile 3) Copy the assembly to wherever Blackfish is looking for assemblies 4) Register the method with Blackfish CREATE METHOD SomeOtherMethod as 'Other::Other.TMyStoredProcedures.SomeOtherMethod' 5) Stop the Blackfish service 6) Open Other.StoredProcedures in the edtior and rename the method SomeOtherMethod to AnotherSomeOtherMethod 7) Build and copy the assembly to the same place as step (3) 8) Start the Blackfish server 9) In dataexplorer example the stored procedure list SomeOtherMethod is listed but there are no parameters 10) In a sql window attempt to drop the method drop method "SomeOtherMethod" expected: stored procedure should be dropped actual: an error message is displayed [line1, col 1] A method with the name "SOMEOTHERMETHOD" doesn't exist

    51598

QC# Project Area
51598 Delphi.Net Database\Data Explorer
Description: Steps:
[QC Short Description]
Connection added to wrong node

[QC Description]
When using the Data Explorer (integrated in the Project Manager), I get new connections in wrong places.

Steps to reproduce:

1. Start Highlander
2. Click on the Data Explorer tab
3. Right-click on the INTERBASE node, select "Add New Connection"
4. In the dialog, select MSSQL as Provider Name (this is the problem)
5. specify a name, like "This should be an MS SQL connection"
6. Click OK.

The new connection is now a subnode of the INTERBASE node, and not of the MSSQL node.

It seems like the choice for "Provider Name" in the Add New Connection dialog is ignored.

BTW, wasn't that term (Provider) part of the deprecated BDP, and shouldn't we now see a term like "Driver Name" instead? This may be related to the fact that the choice for Provider Name is ignored...
QC Entry 51598
[Nov Update]
Steps to reproduce: 1. Start Highlander 2. Click on the Data Explorer tab 3. Right-click on the INTERBASE node, select "Add New Connection" 4. In the dialog, select MSSQL as Provider Name (this is the problem) 5. specify a name, like "This should be an MS SQL connection" 6. Click OK. The new connection is now a subnode of the INTERBASE node, and not of the MSSQL node. It seems like the choice for "Provider Name" in the Add New Connection dialog is ignored. BTW, wasn't that term (Provider) part of the deprecated BDP, and shouldn't we now see a term like "Driver Name" instead? This may be related to the fact that the choice for Provider Name is ignored...

QC# Project Area
Delphi.Net Database\Data Explorer
Description: Steps:
Update 3 - regression

SQLWindow layout changed after applying installing Highlander (using old keys).
You will see a large grey area where you cant type anything and below you find a white area


Marking this one as WUpdate since we might also want to fix 255412.


Emeli: I was able to resize the grey area. After you get a grid to show you can resize the grid by moving it up making the grey area smaller.
Install Highlander using Cogswell or Spacely keys
Run Data Explorer
//exp: check before.bmp attached
//act: check afterupdate3.bmp attached

    53393

QC# Project Area
53393 Delphi.Net Database\Data Explorer\Integrated
Description: Steps:
[QC Short Description]
Adding duplicate column names not detected when entered

[QC Description]
Adding a column with a duplicate name is only detected when closing the Table Design tab, giving no opportunity to fix, and losing all other changes made to the table schema.
QC Entry 53393


[Note - similar issue exists for Table Viewer: add data which will cause errors (key violation fi.), close the tab and you'd lose your changes without a chance to correct)

[Nov Update]
- Switch to Data Explorer - Expand the 'Ado.Net' node - Right-click on the 'BlackfishSQL Remote Provider' node and select 'Add New Connection' - Enter 'DataTest' in the 'Connection Name' field - Right-click on the 'DataTest' node and select 'Modify Connection' - Enter 'sysdba' in the 'User Name' field, 'masterkey' in the 'Password' field, and 'D:\Data\DataTest.jds' in the 'Database' field - Click the 'Test Connection' button - Click 'Yes' when prompted to create the database - Click the 'OK' button to confirm database creation - Click the 'OK' button to close the 'Add Connection' dialog - Expand the 'DataTest' node in Data Explorer - Right-click on the 'Tables' node and select 'New Table' - Enter 'Field1' in the 'Name' column and press the down arrow - Enter 'Field1' in the 'Name' column and press the down arrow - Right-click on the 'Table Design:DataTest' tab and select 'Close Page' - Click the 'Yes' button when prompted to save changes Expected: You are prompted about the duplicate field names, and are given an opportunity to address the problem. Actual: You are prompted about the duplicate field names, but the tab is closed, losing all changes.

    52581

QC# Project Area
52581 Delphi.Net Database\Data Explorer\Integrated
Description: Steps:
[QC Short Description]
Data entered into a BlackfishSQL table via Data Explorer is not persisted

[QC Description]
If the integrated Data Explorer is used to enter data into a BlackfishSQL table, the data is not persisted, and all changes are lost.
QC Entry 52581


[Nov Update]
- Switch to Data Explorer
- Expand the 'Ado.Net' node
- Right-click on the 'BlackfishSQL Remote Provider' node and select 'Add New Connection'
- Enter 'DataTest' in the 'Connection Name' field
- Right-click on the 'DataTest' node and select 'Modify Connection'
- Enter 'sysdba' in the 'User Name' field, 'masterkey' in the 'Password' field, and 'D:\Data\DataTest.jds' in the 'Database' field
- Click the 'Advanced...' button
- Under the 'Logging' category, set the 'Connect' property to 'True', and click the 'OK' button
- Click the 'Test Connection' button
- Click 'Yes' when prompted to create the database
- Click the 'OK' button to confirm database creation
- Click the 'OK' button to close the 'Add Connection' dialog
- Expand the 'DataTest' node in Data Explorer
- Right-click on the 'Tables' node and select 'New Table'
- Enter 'Field1' in the 'Name' column
- Right-click on the 'Table Design:DataTest' tab and select 'Close Page'
- Enter 'DataTable' as the table name and click the 'OK' button
- Expand the 'Tables' node
- Double-click on the 'DATATABLE' node in Data Explorer
- Enter '1' in the 'FIELD1' column and press the down arrow
- Enter '2' in the 'FIELD1' column and press the down arrow
- Right-click on the 'Ado.Net:DataTest: DATATABLE' tab and select 'Close Page'

Expected: Prompt to save changes.
Actual: Closes without saving.

QC# Project Area
Delphi.Net Database\dbExpress Metadata
Description: Steps:
For Oracle, Boolean parameters are retrieved as Unknown Type.

[Nov Update]
1. For an Oracle db:

CREATE PROCEDURE BOOLEAN_ECHO_ORACLE(IN_PARAM IN BOOLEAN, OUT_PARAM OUT BOOLEAN) AS BEGIN OUT_PARAM := IN_PARAM;END;

2. In Data Explorer, navigate to this stored procedure and double click on it to view it's parameters

Exp. Value field blank
Act. Value field contains Object reference not set to an instance of an object

QC# Project Area
Delphi.Net Database\dbExpress Metadata
Description: Steps:

AdoDbxClient has trouble with certain GetSchema call with Informix.
A "Failed to enable constaints" error message is raised.

Run TestAdo.exe connection=informixconnection -s:TestRaid255674

QC# Project Area
Delphi.Net Database\dbExpress Metadata
Description: Steps:
Unable to create a primary key when using the metadata natively. Getting a 'Could not convert variant of type (Null) into type (OleStr)' when trying to make the create index sql. DataAccess.Native.exe connection=mssqlconnection -s:TestReadWriteAll

QC# Project Area
Delphi.Net Database\dbExpress Metadata
Description: Steps:
System.OverflowException: {"Value was either too large or too small for an Int32."}

When requesting metadata for columns where the precision is larger than Int32.MaxValue
Run:

TDBXBugsSuite.Native.exe connection=mysqlconnection -s:oTestRaid_255241
or
TDBXBugsSuite.Managed.exe connection=mysqlconnection -s:oTestRaid_255241

QC# Project Area
Delphi.Net Database\BlackFishSQL
Description: Steps:
Please generate a name to unnamed constraints.

[Nov Update]
In DataExplore
create a blackfishSQL table and keep the primary key check mark.

Try ALTER => failure !!

QC# Project Area
Delphi.Net Database\BlackFishSQL
Description: Steps:
Try to use the Triggers

NewRow.IsModified()

causes a NullReferenceException
NDataStore.DBX.JdsTest.Managed.exe -s:TestTrigger

QC# Project Area
Delphi.Net Database\BlackFishSQL
Description: Steps:
Triggers

Try accessing GetValue like GetInt32 on OldRow during an AFTER DELETE trigger.

=> exception
NDataStore.DBX.JdsTest.Managed.exe -s:TestTrigger

QC# Project Area
Delphi.Net Database\BlackFishSQL
Description: Steps:
Blackfish SQL remote ADO.Net connection to JDataStore database fails when trying to get meta data or executing a SQL Statement.

Errors are get Read -1 Needed 10 Error and No Product name for Data Provider. No meta data can be provided
1. Select Data Explorer in Rad Studio
2. Add new connection under ADO.Net | Blackfish SQL Remote Provider
3. Host=ngyrn-nt.inprise.com (or some other server running JDS Server)
4. Path=c:\jdatastore7\samples\jdatastore\datastores\employee.jds (or some other legal path)
5. user=sysdba
6. Password=masterkey
7. click OK.
8. Open Tables node, get Read -1 Needed 10 Error
9. Open SQL Windows, get No Product name for Data Provider. No meta data can be provided
10. Enter a SQL statement in the SQL Window, get error: Network error: Read -1 Needed 10

QC# Project Area
Delphi.Net Database\BlackFishSQL
Description: Steps:
The class JDSType has a name that is too close to JDatastore.
Please rename it to DataStoreType

QC# Project Area
Delphi.Net Database\BlackFishSQL
Description: Steps:
DBXClient

If a stored procedure is a function with 1 parameter, DbxClient complains when the parameter value is set about that paramneter 0 was not set. [However it should not be set since iit is a return value.]
TDBXHighlanderBugsSuite.Native.exe connection=BLACKFISHSQLCONNECTION -s:oTestRaid_255446

Note: Uncomment the section that calls the stored procedures FUNCC and FUNCD

QC# Project Area
Delphi.Net Database\BlackFishSQL
Description: Steps:
BlackfishSQL
All the exception classes should be deserializeable.

i.e. they must implement:
a constructor and a GetObjectData
since the base class implements ISerializeable

TODO:
Add testcase which causes an exception, saves it to file and restored the exception object.

QC# Project Area
Delphi.Net Database\BlackFishSQL
Description: Steps:
You cannot use Blackfish stored procedures from a TSQLDataset component. TDBXHighlanderBugsSuite.Managed.exe connection=BLACKFISHSQLCONNECTION -s:oTestRaid_255446

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

1. Create a connection to the sample EMPLOYEE database.
2. Create a new Delhpi for .Net package.
3. Add a unit, and in the unit, add the an empty class
4. Add the following code to the class as a stored procedure for Blackfish



class function TSprocDemo.GetSpecificEmployee(aConnection: DBConnection; aEMPNO: integer): DBDataReader;
var
TempCommand: DbCommand;
TempParameter: DbParameter;
begin
TempCommand := aConnection.CreateCommand;
TempCommand.CommandText := 'Select * From EMPLOYEE WHERE EMP_NO = ?';

TempParameter := TempCommand.CreateParameter;
TempParameter.DbType := DbType.Int32;
TempParameter.Direction := ParameterDirection.Input;
TempParameter.Value := aEmpNO;

TempCommand.Parameters.Add(TempParameter);

Result := TEmpCommand.ExecuteReader
end;

5. Register it with the database.....

CREATE METHOD GetSpecificEmployee AS 'SprocDemo::uSprocDemo.TSprocDemo.GetSpecificEmployee'


(Adjust the assembly name and unit name as needed)


6. Open an SQL Window and run it with

CALL GETSPECIFICEMPLOYEE(2)

This should work.

7. Create new VCL applicaction.
8. Drop connection, hook up to the connection used above.
9. Drop a TSQLDataset
10. Set CommandType to StoredProcedure, and the CommandText to "GETSPECIFICEMPLOYEE"
11. Open params property, not that the parameters are correct.
12. Set the parameter value for AEMPNO to 2
13. Set Active to True.

EXP: The Sproc opens.
ACT:


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

Error

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

Syntax Error: [line 1, col 18] SELECT expected, but <identifier> found.

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

OK Details >>



    53941

QC# Project Area
53941 Delphi.Net IDE\Code Completion
Description: Steps:
[QC Short Description]
Class Completion Still Broken

[QC Description]
I noticed some "fixes" to class completion but some simple stuff is still broken.
-- The function results in the class below of types &Object and &Type don't get the '&' when you do class completion.
-- If you remove the // comment in the function G definition so the function result is List<Integer>, then class completion balks when it sees the '<' character and punts.

program Project1;

{$APPTYPE CONSOLE}

uses
System.Collections.Generic;

type
MyClass = class
function O: &Object;
function T: &Type;
function G: List;//<Integer>;
end;

{ MyClass }

function MyClass.G: List;
begin

end;

function MyClass.O: Object;
begin

end;

function MyClass.T: Type;
begin

end;

begin

end.
QC Entry 53941
See description


NOTE: closing this one. opened 256335 to cover the remaining issue of not escaping Object and Type.

    51165

QC# Project Area
51165 Delphi.Net IDE\Code Editor
Description: Steps:
[QC Short Description]
Code Folding: incorrect for generic classes/methods

[QC Description]
Code folding is sometimes missing, sometimes misplaced when a unit contains generic classes, interfaces and the methods of their implementations.

There is no obvious pattern to this behaviour, i.e. it is not always the first, second, etc. Neither is it resolved by scrolling and redrawing.
QC Entry 51165
open attached .pas file.

see code folding missing on line 43

--------------
Write a couple of generic classes/interfaces in the same unit. Ensure that they have a few methods each in the implementation section.

QC# Project Area
Delphi.Net IDE\Code Editor
Description: Steps:
Code completion moves cursor to position before left ( of methods so that the user has to manually move behind it. 1. new vcl forms app
2. add System.IO to any uses
3. double click form
4. type System.IO.Directory.<wait>
5. select getParent
6. press enter

exp: cursor right of (
act: left of (

    51114

QC# Project Area
51114 Delphi.Net IDE\Code Editor\Error Insight
Description: Steps:
[QC Short Description]
ErrorInsight reports valid Methods as errors

[QC Description]
error-insight seems to report some entries that are actually correct. A
valid and existing method gets red-dotted.
QC Entry 51114
Please take the following example wich compiles fine: --------------------- uses System.Collections.Generic; type TApfel = class(TObject); TMyAepfelList = List<TApfel>; procedure Foo; var Apfel : TApfel; List1 : TMyAepfelList; begin Apfel:= TApfel.Create; List1:= TMyAepfelList.Create; List1.Add( Apfel ); // <-- error here 'Add' is red-dotted end; ---------------------

    47453

QC# Project Area
47453 Delphi.Net IDE\Docking
Description: Steps:
[QC Short Description]
Dock Tabs appear at wrong position

[QC Description]
If for instance in the delivered Default Layout the Object Inspector is unpinned, it's caption appears as a vertical tab on the left of the structure view. Saving this layout, switching to another one and switching back makes the tab appears to the right of the structure view. Reselecting the current layout brings the tab back where it belongs.
QC Entry 47453
if necessary, copy the factory "Default Layout.dst" from "<program files>\CodeGear\RAD Studio\5.0\bin" to "<Application Data>\Borland\BDS\5.0\" (Borland???) - start IDE - select "Default Layout" - unpin Object Inspector - save current layout overwriting Default Layout - select Debug Layout - select Default Layout exp: Object Inspector tab left from Structure View act: Object Inspector tab right from Structure View - select Default Layout exp: Object Inspector tab left from Structure View act: Object Inspector tab left from Structure View

QC# Project Area
Delphi.Net IDE\Help
Description: Steps:
Press F1 in Delphi.Net's WinForm or ASP WebForm's code editor got error

Error
---------------------------
Abstract Error.
---------------------------
OK Details >>
---------------------------

[HelpUpdate]
1. File | New | Delphi.Net | WinForm Application (or ASP Application)
2. click Code tab
3. click any keyword, ie : type or uses or anywhere
4. press F1

//Abstract Error.
+ $12[00347E7A]{rtl110.bpl } SysUtils.SysUtils.AbstractErrorHandler (Line 14258, "sys\sysutils.pas" + 0) + $12
+ $6[209D9271]{coreide110.bpl} EditorControl.EditorControl.TCustomEditControl.HelpKeyword (Line 4428, "EditorControl.pas" + 8) + $6
+ $17[209DF0D8]{coreide110.bpl} EditorControl.EditorControl.TCustomEditControl.AutoInvokeCodeCompletion (Line 7255, "EditorControl.pas" + 1) + $17
+ $6[0047D115]{vcl110.bpl } Controls.Controls.TWinControl.WndProc (Line 8923, "Controls.pas" + 129) + $6
+ $6[0047C8A8]{vcl110.bpl } Controls.Controls.TWinControl.MainWndProc (Line 8659, "Controls.pas" + 3) + $6
+ $0[0037107C]{rtl110.bpl } Classes.Classes.StdWndProc (Line 11596, "common\Classes.pas" + 8) + $0
+ $6A[77D48731]{USER32.dll } GetDC + $6A
+ $14A[77D48811]{USER32.dll } GetDC + $14A
+ $17F[77D4B4BB]{USER32.dll } DefWindowProcW + $17F
+ $1CD[77D4B509]{USER32.dll } DefWindowProcW + $1CD
+ $10[7C90EAE0]{ntdll.dll } KiUserCallbackDispatcher + $10
+ $44[77D5F3DE]{USER32.dll } SendMessageA + $44
+ $1B[209C9C7A]{coreide110.bpl} VClient.VClient.KeyBindingProc (Line 2644, "VClient.pas" + 20) + $1B
+ $2C[2099A20E]{coreide110.bpl} IDEKbd.IDEKbd.@interpret_bmi_macro$qqrp5BMI_tpcp11CmdMapTableppc (Line 30, "bmi.cpp" + 5) + $2C
+ $10[20998E0A]{coreide110.bpl} IDEKbd.IDEKbd... (Line 132, "kbpublic.cpp" + 88) + $10
+ $18[209C73B0]{coreide110.bpl} VClient.VClient.KbdFileOpen (Line 460, "VClient.pas" + 2) + $18
+ $8[20A6EA94]{coreide110.bpl} KbClient.KbClient.TIDEKBDFrameAPI.ProcessKeyStroke (Line 723, "KbClient.pas" + 141) + $8
+ $5[20A6E519]{coreide110.bpl} KbClient.KbClient.TIDEKBDFrameAPI.KeyboardChanged (Line 517, "KbClient.pas" + 6) + $5
+ $2[20A6E829]{coreide110.bpl} KbClient.KbClient.TIDEKBDFrameAPI.ProcessKeyStroke (Line 585, "KbClient.pas" + 3) + $2
+ $2[20A6F55C]{coreide110.bpl} KbClient.KbClient.TIDEKBD

QC# Project Area
Delphi.Net IDE\Help
Description: Steps:
No help found for context" message when you click the Help button in the Template Libraries dialog. 1. File | New | Other
2. Right-click in right pane
3. Select Template Libraries...
QC# Project Area
Delphi.Net IDE\HTML\ASP
Description: Steps:
Hard-coded string in source (see comment from Takeshi Arisawa for specifics).


Original bug description follows:
----------

One Filelist-Entry is not translated
"ASP.NET Files" should be
"ASP.NET-Dateien"
1. Click on DATEI - ÖFFNEN
2. open the Dateiliste
3. Scroll to ASP.NET Files

    51621

QC# Project Area
51621 Delphi.Net IDE\HTML\ASP
Description: Steps:
[QC Short Description]
Parameter Type Error when using VB.net ByRef events

[QC Description]
Case: VB.net Components with events that have ByRef parameters.

When the event is double clicked, the ide generates the procedure with Out parameters instead of Var . The compiler then complains that there is a mismatch. To make the app compile, the procedure parameters need to be changed to var .


This would not be a big deal to fix in the code but since it is in the designer generated area, changes get overwritten as we work with other controls. Also, the object inspector does not show these events.
QC Entry 51621
See sample VBControl with an event "onCustomTextChange" that has ByRef parameters. Install this .net component from the ide. Then create a new asp.net application. Insert the component to the Default.aspx. Then from the events tab of the object inspector, dbl click on the "onCustomTextChange" event. This should generate the erroneous procedure. definition.

See attached vb.net sample asp.net control VS2005 project and the Highlander project using the control.

A few notes from Nick Hodges:

The attached project has a compiled version of the resulting assembly in the

\VBControl\bin\release

directory. You can simply install that assembly, which will install the VBLabelControl. Dropping the control and then creating an event handler for onCustomTextChange event shows the bad parameters.

    53217

QC# Project Area
53217 Delphi.Net IDE\HTML\ASP
Description: Steps:
[QC Short Description]
"meta:resourcekey" attribute...designtime/runtime issues

[QC Description]
I manually added the "meta:resourcekey" attribute (for implicit localization... as is done in VS w/ "Generate Local Resouces") to my page and all the controls in my "Default.aspx" file. I also added a "Default.aspx.resx" file to my "App_LocalResources" folder and defined the appropriate entries for a translated button caption. Under the debugger I ran "Default.aspx" and had to click on continue to the System.ArgumentException, "culture name 'aspx' is not supported.". After clicking on the "Continue" button 6 times for this same exception message, it finally got past it and IT WORKED!

In the Delphi IDE, however I can't open the design surface. As long as the "meta:resourcekey" is a part of my page directive, I can ONLY open the aspx markup. I don't get a "Design" or a tab to edit the .pas. If I remove the "meta:resourcekey" attribute from my page directive, I can open the design surface, but every control with the "meta:resourcekey" attribute has an error message "Error Creating Control - xxx, Object reference not set to an instance of an object".

So the use of the "meta:resourcekey" in Delphi makes the runtime experience w/ all the debug messages annoying. And it makes the designtime experience virtually impossible.
QC Entry 53217
1. Add the "meta:resourcekey" attribute to any control in an aspx file. 2. Close the aspx file and try to open it in design mode. 3. Add the "meta:resourcekey" attribute to the page directive in an aspx file. 4. Close the aspx file and try to open it in design mode. 5. Try to run the web application w/ those attributes. Note: See demo in attachments: Open the designer for Default.aspx for an example of controls not rendering Adding meta:resourceKey="Button1 to the markup and switching to the designer results in "error creating control - object reference not set to an instance of an object" if you attempt to open webform1.aspx the designer tab is not displayed, this is because of the meta:resourcekey="PageResource1"attribute on the page tag

QC# Project Area
Delphi.Net IDE\HTML\ASP
Description: Steps:
Full source codes for the ASP.Net providers are not delivered in the build. The following files should be delivered:

$(BDS)\source\dotNet\asp\provider\aspnet_regdb.dpr
$(BDS)\source\dotNet\asp\provider\aspnet_regdb.dproj
$(BDS)\source\dotNet\asp\provider\aspnet_regdb.inc
$(BDS)\source\dotNet\asp\provider\Borland.Web.Commands.pas
$(BDS)\source\dotNet\asp\provider\Borland.Web.Management.AdoWebEventProvider.pas
$(BDS)\source\dotNet\asp\provider\Borland.Web.Management.DbSetup.pas
$(BDS)\source\dotNet\asp\provider\Borland.Web.Profile.AdoProfileProvider.pas
$(BDS)\source\dotNet\asp\provider\Borland.Web.Provider.dpk
$(BDS)\source\dotNet\asp\provider\Borland.Web.Provider.dproj
$(BDS)\source\dotNet\asp\provider\Borland.Web.Provider.inc
$(BDS)\source\dotNet\asp\provider\Borland.Web.Security.AdoMembershipProvider.pas
$(BDS)\source\dotNet\asp\provider\Borland.Web.Security.AdoRoleProvider.pas
$(BDS)\source\dotNet\asp\provider\Borland.Web.Strings.pas
$(BDS)\source\dotNet\asp\provider\Borland.Web.UI.WebControls.WebParts.AdoPersonalizationProvider.pas
$(BDS)\source\dotNet\asp\provider\Borland.Web.Utilities.pas
$(BDS)\source\dotNet\asp\provider\License.txt

    51753

QC# Project Area
51753 Delphi.Net IDE\HTML\ASP
Description: Steps:
[QC Short Description]
DynamicBoxCentered CSS template </form> in </div>

[QC Description]
In the DynamicBoxCentered template, the last four lines in MasterPage1.master are:

</form>
</div>
</body>
</html>

The order of </form> and </div> should be swapped - </form> should be outside the last </div>.

Objrepos\DelphiDotNet\DynamicBoxCentered\MasterPage1.master needs a small fix.
QC Entry 51753
I checked the .aspx contents of some generated CSS projects and found the following: DynamicBoxCentered template: The last four lines in MasterPage1.master are: </form> </div> </body> </html> The order of </form> and </div> should be swapped - </form> should be outside the last </div>. This is file Objrepos\DelphiDotNet\DynamicBoxCentered\MasterPage1.master that needs a small fix.

QC# Project Area
Delphi.Net IDE\HTML\ASP
Description: Steps:
When show all files is enabled in large ASP.NET projects, saving a file get's very slow This was reported in evangelist training.

File new ASP.NET project
Extract the attached zip file into the project directory (you should have a images folder and all of its content including subdirectories and .jpg files)
Right click on the project and check Show All Files (you should see the images folder)

File/New/Other Files/Text File
Ctlrl-S to save the text file

Repeat the following to show the delay when Show All Files is checked

Ctrl-S to save the text file and then immediately start typing

Actual: There is a significant delay before the editor excepts characters.
Expected: Less delay

QC# Project Area
Delphi.Net IDE\HTML\ASP
Description: Steps:
Web form and web service designers don't load after setting a dynamic property

File/New ASP.NET web project

File/New Web Service or Web Form

Drop SqlConnection on the designer

In Object Inspector, click “…” next to Dynamic Properties/Connection String

Check box

OK



Now you should find this in the ..pascs in the code file



Self.SqlConnection1.ConnectionString := (string(configurationAppSettings.GetValue('S' +

'qlConnection1.ConnectionString', TypeOf(string))));



Enter a space in the .pas file and click designer tab


Actual: designer loads error

Expected: designer loads without errors



    21440

QC# Project Area
21440 Delphi.Net IDE\HTML\ASP\Debugging
Description: Steps:
[QC Short Description]
Multiple exceptions from debugger if Cassini isn't closed

[QC Description]
When running an ASP.NET project under Cassini, the IDE doesn't close Cassini when the program terminates. If the program is then modified and run, the debugger throws multiple exceptions of type System.UnauthorizedAccessException, one for each assembly used by the project.

Clicking the "Continue" button for each of the notifications will let the project run correctly. However, many such clicks are required and the user has no way of knowing whether there is a real problem.

See "Steps" and "Workaround" for more information.
QC Entry 21440
1. Open an ASP.NET project and set to to use Cassini as the web server. 2. In the "ASP.NET" area of the Project Options dialog, make sure Cassini is set to run when the project starts (not opened). 3. Run the project. 4. Close the browser window to terminate the program. Notice that Cassini is still running. 5. Modify the project (add or change a line of code). 6. Press the Run button to compile run the project. Do NOT compile the project independently without running it. The debugger breaks with the following exception (the assembly name will change): Debugger Exception Notification --------------------------- Project CassiniWebServer.exe raised exception class System.UnauthorizedAccessException with message 'Access to the path "wcieat89.dll" is denied.'. A similar exception is raised for every assembly used by the project. This error doesn't reproduce 100% of the time, but still happens quite often.

    52536

QC# Project Area
52536 Delphi.Net IDE\HTML\ASP\Deployment
Description: Steps:
[QC Short Description]
The list of external files for a deployment is outdated

[QC Description]
The list of external files needs to be updated to take into account that the bdp was depreciated
QC Entry 52536
1) Create a new asp.net web application 2) Rich click on the deployment node in the project manager and select "new asp.net deployment" 3) When the deployment window appears, right click left hand listbox and select "external files" Expected I think the list should include the CodeGear asp.net provider files and newer dbx ones ie Borland.Web.Provider, Borland.VclRtl and the dbx ones I don't think the bdp files should be listed since they are depreciated actual: It seems to list bdp files

QC# Project Area
Delphi.Net IDE\HTML\ASP\Designer
Description: Steps:
ASP designer does not handle Dynamic properties. the generated code from the codedom does not load and the webconfig file is corrupted * new D.Net WebServiceApplication
* Drop a DataStoreConnection on designer (or any other connection component)
* set connectionstring to "abc"
* Make the connectionstring as a dynamic property
* Switch to code
* Switch to designer

exp: designer shows
act: Designer broken

* save All

exp: connectionstring in webconfig along with the old data
act: _ONLY_ connectionstring in webconfig

QC# Project Area
Delphi.Net IDE\HTML\ASP\Designer
Description: Steps:
ASP designer does not store integer values correctly in web.config when they are marked as dynamic properties.

This might be exactly the same as in Raid 255473, but this shows that not only strings have problems.
* new D.Net WebServiceApplication
* Drop SerialPort component on designer
* set baudrate to 9999
* Make the baudrate a dynamic property
* Switch to code
* Switch to designer

exp: BaudRate = 9999
act: BaudRate = 9600

* change it back to 9999
* save All

exp: baudrate in webconfig along with the old data
act: _ONLY_ baudrate in webconfig

* close Webservice
* Open webservice

exp: Baudrate = 9999 (since it is now actually in the web.config)
act: baudrate = 9600

QC# Project Area
Delphi.Net IDE\HTML\ASP\Designer
Description: Steps:
When using "composite controls" in the designer the Control does not render correct (it shows as a small square thus being cropped). Once in the design mode, of the control is moved, it will paint correctly, however; toggling to aspx and back to design will again mispaint the control. Open attached project
Click on design tab.
Expected (see attached bmp):
Two textBoxes and a button
Actual:
small little box (composite)
Move the control to the right.
Notice the "actual" control renders

    51094

QC# Project Area
51094 Delphi.Net IDE\HTML\ASP\Designer
Description: Steps:
[QC Short Description]
The Smart Task Menu doesn't get displayed when the control is in a Panel or an UpdatePanel

[QC Description]
When the control is in a Panel, it's smart task menu doesn't be displayed. Please see the steps for details.
QC Entry 51094
- Download and open the sample project that I've attached. - Open Default.aspx in the designer and scroll down to the GridView. - Right click on the GridView. - Select Smart Task from this context menu. Actual: - Nothing happens. - However, there isn't the smart task's arrow in the top corner of the control. Expected: - The Smart Task shows up. Also the smart task indictator that is normally displayed in the top right hand corner of the control isn't visible

    48693

QC# Project Area
48693 Delphi.Net IDE\HTML\ASP\Designer\Web Controls
Description: Steps:
[QC Short Description]
You cannot bind properties to values in resource files using the expression dialog

QC Entry 48693
1) Create a new asp.net web application 2) Go to the designer for webform1.aspx and add a asp.net label to the designer surface 3) In the object inspector, inspect the label and click on the expressions property value to launch the label1 expressions dialog 4) select text as the bindable property 5) set expression type to resources 6) In the expressions properties, classkey and resourcekey are available properties expected: you should be able to enter a value for resourcekey actual: it appears to be readonly Note: If you modify the markup by hand ie <asp:Label id="Label1" runat="server" Text="<%$ Resources:Resource, Welcome %>"></asp:Label> Then classkey is set to Resource and resourcekey is set to Welcome Unfortunately The text property in the inspector is empty, it should be Expression: Resource, Welcome

    52503

QC# Project Area
52503 Delphi.Net IDE\HTML\ASP\Projects
Description: Steps:
[QC Short Description]
CRS destroys directory structure in asp.net application

[QC Description]
When you try to add a custom control that is in a subdirectory, the entire directory structure gets destroyed and the project file becomes corrupted.

Same problem exists in Borland Studio 2006 too.

The same problem occurs with normal webpages.
How in the heck are we to create a site with different authentication levels on different directories if the IDE keeps removing any and all form of directory structure...
QC Entry 52503
1) Create a new New ASP.NET application. 2) Create a directory structure like this: projectdir |----- customctrls | |--------- control1 | |--------- control2 Put some pre-created custom control's in control1 and control2 directories. They can be empty, it's just the .ascx file and the .pas file that's really needed to show the problem. 3). In project manager rightclick the project, and select "add", then browse for the custom control in the subdirectory control1. 4). Notice now that the control is under the root directory of the project in project manager, the files have been moved and the entire structure is destroyed. Repeat step 3 several times, and the project file is irreparable corrupted and CRS crashes. Recommended Fix: Rewrite the Add functionality so that it leaves the directory structure intact as is. The rest of the IDE can handle things fine if the controls are in a subdirectory, because: Workaround: Manually edit the project files. It's a hell of a job to find out, but it works fine once you know what to put where..

QC# Project Area
Delphi.Net IDE\HTML\ASP\Providers
Description: Steps:
Calling ResetPassword in the membership provider with an invalid password question response does not fail. Call MembershipProvider.ResetPassword with an invalid password answer. It should raise an exception but it doesn't.

    50936

QC# Project Area
50936 Delphi.Net IDE\HTML\ASP\Providers
Description: Steps:
[QC Short Description]
Attempting to create users results in the error DuplicateProviderUserKey when the provider is attached to MySql via the AdoDbxClient

[QC Description]
The membership provider does not work against mysql and the adodbxclient
QC Entry 50936
1) Create a mysql database I'm using version 5.0.41-community-nt MySQL Community Edition (GPL) 2) Create a connectionstring in machine.config and run aspnet_regdb against that database 3) Open the supplied example 4) Modify the connectionstring in web.config so that it connects to your MySql database 5) Open CreateAccount.pas and set a breakpoint on procedure TWebForm4.CreateUserWizard1_CreateUserError(sender: TObject; e: System.Web.UI.WebControls.CreateUserErrorEventArgs); begin end; 7) Run the application and you should end up with CreateAccount.aspx in the browser 8) Enter all the user details and hit the create user button actual: The breakpoint is hit inspect e._error and its 10(0xa) 'DuplicateProviderUserKey' run the application The message below is displayed in the browser Your account was not created. Please try again. expected: The user should be created Note: I have successfully run this application against System.Data.SqlClient and Blackfish, so I think its something about about mysql or the dbxclient

    53187

QC# Project Area
53187 Delphi.Net IDE\HTML\ASP\Providers
Description: Steps:
[QC Short Description]
Password retreival using the PasswordRecovery control fails when the Membership provider is configured with requiresQuestionAndAnswer=false

[QC Description]
When requiresQuestionAndAnswer is set to false and a user is created without a question and answer, password retrieval fails when using the PasswordRecovery control
QC Entry 53187
1) Open the supplied example application 2) Run the application 3) Click on the "Forgot password" link 4) Enter the username mosh and click submit Expected: application should attempt to email password has been changed email to user actual: An error is displayed Unknown parameter name: @PasswordAnswer Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: Borland.Data.DataStore.SQLException: Unknown parameter name: @PasswordAnswer Source Error: Note: In the membership section of web.config I have set requiresQuestionAndAnswer to false. If I set this to true and I repeat the above with the mosh2 user, the application gets to the Identity confirmation page. The answer is "neo" The application then attempts to send the email . mosh was created without requiring a question and answer, whereas mosh2 was created with a QuestionAndAnswer

    52669

QC# Project Area
52669 Delphi.Net IDE\HTML\ASP\Providers
Description: Steps:
[QC Short Description]
If a web application is deployed and the provider assembly is not present an error is raised attempting to initialize SqlClient

[QC Description]
If a web application is deployed and the application is configured to use Borland.Data.BlackfishSQL.RemoteClient.dll as the provider, if that assembly is not present SqlClient appears to be initialized
QC Entry 52669
To reproduce this easily, just follow step #1 and then remove Borland.Data.BlackfishSQL.RemoteClient from the GAC before running the application.

1) Create a new asp.net web application and build it
2) Using the asp.net deployment feature, deploy the application to a machine that has never had Delphi installed on it

i.e I installed on my web hosting provider

3) Also deploy

Borland.Delphi.dll
Borland.VclRtl.dll
Borland.Web.Provider.dll to the bin directory

4) Run the application

actual:

Server Error in '/' Application.
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: An error occurred while attempting to initialize a System.Data.SqlClient.SqlConnection object. The value that was provided for the connection string may be wrong, or it may contain an invalid syntax.
Parameter name: ConnectionString

Source Error:

Line 172: <remove name="AspNetAdoRoleProvider"/>
Line 173: <add name="AspNetAdoRoleProvider"
Line 174: type="Borland.Web.Security.AdoRoleProvider, Borland.Web.Provider, Version=11.0.5000.0, Culture=neutral, PublicKeyToken=91d62ebb5b0d1b1b"
Line 175: connectionStringName="BlackfishSQLAspNet"
Line 176: applicationName="/"/>

expected:

An exception should be raised that the provider Borland.Data.BlackfishSQL.RemoteClient.dll cannot be found, rather than trying to start to use System.Data.SqlClient

QC# Project Area
Delphi.Net IDE\HTML\ASP\Providers
Description: Steps:
ASP.NET application with Interbase, IIS.

Connecting to the interbase fails with the following error.


Could not load file or assembly 'Borland.Data.DbxDynalinkDriver, Version=11.0.5000.0, Culture=neutral, PublicKeyToken=a91a7c5705831a4f' or one of its dependencies. The system cannot find the file specified.

I wonder how the .Net picked up the publickeytoken when it's not specified in the connectionstring because the publicKeyToken specified in the error message is different from what I have in my gac.

******* See RESOLUTION history
1) Install Product and Interbase client on a clean VM
2) Run and do a new ASP.NET web application using Cassini
3) Modify the IBCONNECTION in DataExplorer to point a valid IB 2007 database connection containing the ASP.NET provider schema. I was using "medington4:d:\databases\interbase\aspnet.gdb" which is all setup and accessible if you want to use it as well.
4) Open web.config for the application and change the connection string to be:

<add name="BlackfishSqlAspNet"
connectionString="connectionnName=IBCONNECTION"
providerName="Borland.Data.AdoDbxClient"/>
5) Drop a login control on the default web form
6) Run without debugging
7) type something into the login control username and password and click the login button

//exp: Invalid username/password error
//act: assemply load error message with a wrong publickey tokey:

Could not load file or assembly 'Borland.Data.DbxDynalinkDriver, Version=11.0.5000.0, Culture=neutral, PublicKeyToken=a91a7c5705831a4f' or one of its dependencies. The system cannot find the file specified.

QC# Project Area
Delphi.Net IDE\HTML\ASP\Providers
Description: Steps:
The Web Administration Tool does not recognize our provider 1. Create a new ASP.NET application.
2. Drop a login control
3. Run the app.
4. Enter anything for username/password
5. Press Login button (database will be created).
6. Close application
7. In Project Manager, right click the project name and select ASP.NET Configuration
8. Select the Provider tab

exp: Our provider is listed along with the MS provider
act: Only MS provider is listed

QC# Project Area
Delphi.Net IDE\Object Inspector
Description: Steps:
ObjectInspector throws nullreference exceptions.

The problem is a timing issue between the obejctinspector and the design surface. when the collection editor is closed, the designsurface regains focus, and this will cause the designsurface to resync the OI. THis will dispose all the existing instances of InteropProperty. When the original property tries to apply the value from the property editor, it will find that the internal field "property" has been cleared.

Suggested fix (in propInspInterop.cs, line 1500)

DesignerTransaction trans = property.BeginTransaction();
try
{
Object oldValue = property.PropertyValue;
Object newValue = property.UITypeEditor.EditValue(this, this, property.PropertyValue);
if (newValue != oldValue)
{
property.PropertyValue = newValue;
if (subProperties != null)
subProperties.Clear();
CheckRefresh();
}
}
finally
{
if (trans != null)
trans.Commit();
}


DesignerTransaction trans = property.BeginTransaction();
try
{
// keep a local copy of the actual property if the interopproperty
// is disposed while the editor is open
ObjectProperty tempProp = property;
Object oldValue = tempProp.PropertyValue;
Object newValue = tempProp.UITypeEditor.EditValue(this, this, oldValue);
if (newValue != oldValue)
{
tempProp.PropertyValue = newValue;
if (subProperties != null)
subProperties.Clear();
CheckRefresh();
}
}
finally
{
if (trans != null)
trans.Commit();
}
New Eco VCL application
Open the diagram for Pacakge_1 in the ModelView
Add two classes
select class 1
in the OI, open the property editor for "Constraints"
click OK (to close it)
select class 2
in the OI, open the property editor for "Constraints"
click OK (to close it)

exp: works just fine
act: Nullreference exception
NOTE: i got Object ref not set. stack trace in Comments.

    52834

QC# Project Area
52834 Delphi.Net IDE\Object Repository
Description: Steps:
[QC Short Description]
Object Repository does not work for VCL for .Net Forms

[QC Description]
Trying to inherit from a VCL for .Net form added to the repository always ends in a "Abstract Error" with the callstack below. This also does not work in BDS 2006.

[20017D9A]{rtl100.bpl } SysUtils.AbstractErrorHandler (Line 14112, "sys\sysutils.pas" + 0) + $12
[20004759]{rtl100.bpl } System.@AbstractError (Line 4231, "sys\system.pas" + 2) + $0
[20A3FD22]{coreide100.bpl} GalleryTypes.TGalleryItem.DoSelect (Line 146, "GalleryTypes.pas" + 5) + $6
[2164EE19]{delphicoreide100.bpl} DelphiGalleryItems.TInheritTemplate.CreateNewInheritedModule (Line 422, "DelphiGalleryItems.pas" + 5) + $5
[2164F531]{delphicoreide100.bpl} DelphiGalleryItems.TInheritTemplate.Selected (Line 595, "DelphiGalleryItems.pas" + 133) + $17
[20A3FD22]{coreide100.bpl} GalleryTypes.TGalleryItem.DoSelect (Line 146, "GalleryTypes.pas" + 5) + $6
[20973480]{coreide100.bpl} GalBrow.BrowseNewDialog (Line 182, "GalBrow.pas" + 22) + $4
[209734D3]{coreide100.bpl} GalBrow.BrowseNewDialog (Line 185, "GalBrow.pas" + 25) + $2C
[2097339E]{coreide100.bpl} GalBrow.BrowseNewDialog (Line 152, "GalBrow.pas" + 0) + $6
[20977BEC]{coreide100.bpl} Gallery.FileNewDialog (Line 685, "Gallery.pas" + 0) + $0
[00414CD3]{bds.exe } AppMain.TAppBuilder.FileNewInheritedForm (Line 2361, "ui\AppMain.pas" + 2) + $10
[20040113]{rtl100.bpl } Classes.TBasicAction.Execute (Line 11081, "common\Classes.pas" + 3) + $7
[20151321]{vcl100.bpl } ActnList.TContainedAction.Execute (Line 388, "ActnList.pas" + 1) + $2C
[20152084]{vcl100.bpl } ActnList.TCustomAction.Execute (Line 1000, "ActnList.pas" + 7) + $8
[2003FFDF]{rtl100.bpl } Classes.TBasicActionLink.Execute (Line 11010, "common\Classes.pas" + 2) + $7
[21328D19]{vclactnband100.bpl} ActnMenus.TCustomActionMenuBar.ExecAction (Line 976, "ActnMenus.pas" + 6) + $D
[2132A04F]{vclactnband100.bpl} ActnMenus.TCustomActionMenuBar.TrackMenu (Line 1542, "ActnMenus.pas" + 15) + $15
[2132A07F]{vclactnband100.bpl} ActnMenus.TCustomActionMenuBar.TrackMenu (Line 1547, "ActnMenus.pas" + 20) + $10
[2132D470]{vclactnband100.bpl} ActnMenus.TCustomActionMainMenuBar.TrackMenu (Line 3146, "ActnMenus.pas" + 3) + $3
[213288E5]{vclactnband100.bpl} ActnMenus.TCustomActionMenuBar.CMItemClicked (Line 878, "ActnMenus.pas" + 3) + $4
[2013C4F3]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[2013FE92]{vcl100.bpl } Controls.GetControlAtPos (Line 7095, "Controls.pas" + 4) + $73
[20140574]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7274, "Controls.pas" + 81) + $1D
[20140673]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7304, "Controls.pas" + 111) + $6
[2132A13E]{vclactnband100.bpl} ActnMenus.TCustomActionMenuBar.WndProc (Line 1575, "ActnMenus.pas" + 23) + $4
[2013FD9C]{vcl100.bpl } Controls.TWinControl.MainWndProc (Line 7073, "Controls.pas" + 3) + $6
[20040DD4]{rtl100.bpl } Classes.StdWndProc (Line 11583, "common\Classes.pas" + 8) + $0
(00003FA9){DelphiSpeedUp105.dll} [01D34FA9]
[201625D0]{vcl100.bpl } Forms.TApplication.ProcessMessage (Line 8105, "Forms.pas" + 23) + $1
[2016260A]{vcl100.bpl } Forms.TApplication.HandleMessage (Line 8124, "Forms.pas" + 1) + $4
[201628FF]{vcl100.bpl } Forms.TApplication.Run (Line 8223, "Forms.pas" + 20) + $3
[00422976]{bds.exe } bds.bds (Line 195, "" + 7) + $7
QC Entry 52834
* Start a new VCL for .Net project * Add some components to the form and save the project * Right click on the form and add it to the repository * Start a new VCL for .Net project * Open the repository, select the form just added to the repository, choose inherit and click ok * See the Abstract Error

    51839

QC# Project Area
51839 Delphi.Net IDE\Project Manager
Description: Steps:
[QC Short Description]
Cryptic error when opening a Delphi Win32 .dproj in Delphi .NET

[QC Description]
If I open a Delphi Win32 .dproj with only Delphi .NET personality running, I
get an error like this:

---------------------------
Error
---------------------------
Unable to load project C:\Documents and Settings\Hallvard\My Documents\RAD
Studio\Projects\EnumerationEnumerator\EnumerationEnumeratorDemo.dproj.
REGRESSION: BDS2006 gave an error message similar to the expected listed below.

- Run Delphi Win32
- File | New | Delphi for Win32 Console App
- Save project
- Exit Delphi
- Run Delphi .NET (no other personalities loaded)
- Open project saved above

exp: Message la: "This project requires the Delphi Win32 personality to be loaded"
act:

---------------------------
Error
---------------------------
Unable to load project C:\Documents and Settings\Hallvard\My Documents\RAD
Studio\Projects\EnumerationEnumerator\EnumerationEnumeratorDemo.dproj.
---------------------------
OK Details >>
---------------------------

[209DA602]{coreide100.bpl} ProjectFileUtils.MSBuildLoadProjectFile (Line
941, "ProjectFileUtils.pas" + 41) + $2C
[209DA630]{coreide100.bpl} ProjectFileUtils.MSBuildLoadProjectFile (Line
944, "ProjectFileUtils.pas" + 44) + $10
[21688EFA]{delphicoreide100.bpl}
BaseDelphiProject.TDelphiProjectFileModuleHandler.FileOpen (Line 3173,
"BaseDelphiProject.pas" + 2) + $B
[20A62636]{coreide100.bpl} DocModul.TFileOpenHandler.FileOpen (Line 3091,


---snip---

QC# Project Area
Delphi.Net IDE\Project Manager\Add reference
Description: Steps:
Together issue.
Removing a reference to System.Windows.Forms.dll from a VCL project causes a catastrophic error

the exception occurs in platformProjectImpl.cs, line 343.

IOTAReferences refs = p.References;
for (int i = 0; i < refs.Count; i++) {
IOTAReference iotaRef = refs[i];
string refName = iotaRef.Name; <<<< Here

bugfind credits goes to Holger

Workaround: Close the project, and reopen. Project builds and reference is removed.
Steps:
* New VCL .net form
* switch to model view tab
* enable modelling
* answer yes to all save dialogs
* Add reference to System.Windows.Forms.dll
* Remove the reference again

exp: reference gone
act: Catastrophic failure
------------------
ADDITIONAL: Project | Build results in a catastrophic faliure.
------------------
callstack on managed side:
[Managed to Native Transition]
> Borland.Studio.Together.dll!Borland.Studio.Together.Impl.Project.PlatformProjectImpl.updateReferences() Line 343 + 0x9 bytes C#
Borland.Studio.Together.dll!Borland.Studio.Together.Impl.Project.PlatformProjectImpl.onModified(object sender = {Borland.Studio.Interop.InteropModuleService.OTAProject}, System.EventArgs args = {System.EventArgs}) Line 955 + 0x7 bytes C#
[Native to Managed Transition]
[Managed to Native Transition]
Borland.Studio.Interop.dll!Borland.Studio.Interop.InteropModuleService.OTAModule.Borland.Studio.Interop.IInteropNotifier.Modified() Line 2063 + 0x15 bytes C#
[Native to Managed Transition]

callstack on native side:
[5304E633]{dotnetcoreide100.bpl} ToolsAPIWrapper.TInteropModule.Modified (Line 2577, "ToolsAPIWrapper.pas" + 3) + $2A
[4000A455]{rtl100.bpl } System.@CheckAutoResult (Line 18047, "sys\system.pas" + 6) + $0
[5217DA56]{coreide100.bpl} DocModul.TCodeIDocModule.NotifyModifiedEvent (Line 2355, "DocModul.pas" + 2) + $5
[0173666A]{designide100.bpl} ToolUtils.ForEach (Line 90, "ToolUtils.pas" + 5) + $F
[5217DAF0]{coreide100.bpl} DocModul.TCodeIDocModule.NotifyModified (Line 2362, "DocModul.pas" + 1) + $11
[5217A791]{coreide100.bpl} DocModul.TDocModule.Modified (Line 1235, "DocModul.pas" + 6) + $3
[520EB66E]{coreide100.bpl} ProjectModule.TBaseProject.Modified (Line 1204, "ProjectModule.pas" + 1) + $3

QC# Project Area
Delphi.Net IDE\Code Dom
Description: Steps:
Create ASP's event got

procedure Button1_Click(sender: TObject; e: System.EventArgs);

when it should be

procedure Button1_Click(sender: System.Object; e: System.EventArgs);
1. File | New | ASP Application
2. drop an asp:button
3. double click Button to Onclick
// procedure Button1_Click(sender: TObject; e: System.EventArgs);

// notice "TObject" should be "System.Object"

QC# Project Area
Delphi.Net IDE\Class Completion
Description: Steps:
Doing a class completion with a Generic in the procedure results in an error of:
---------------------------
Error
---------------------------
Expected ')' but '<' found in class TForm1.
---------------------------
OK Details >>
+ Copy and paste the following code:
=====================
TForm1 = class(TForm)
private
{ Private declarations }
public
function StringFromWordArray(words: ReadOnlyCollection<RecognizedWordUnit>; &type : WordType) : string;
procedure Problem(ASender : TObject; e: AudioSignalProblemOccurredEventArgs);
end;
=====================
+ Press Ctrl+C to complete the class
//exp: Class to be completed
//act:
---------------------------
Error
---------------------------
Expected ')' but '<' found in class TForm1.
---------------------------
OK Details >>
---------------------------

    51541

QC# Project Area
51541 Delphi.Net IDE\Class Completion
Description: Steps:
[QC Short Description]
Class Completion Fails with Generics on Right Side of = Sign

[QC Description]
My experience has been that ANY < after the equal sign in a class definition will cause class completion to not work. And not just in the class you are trying to complete! You get the error message on the first < in your code (on the right hand side of an equal sign).

So, I have to code class definitions until they will compile with only missing externals, then go through all my class defininitions and comment out the generics on the right side of the equal sign (which causes Error Insight to complain about each of those lines), then do class completion of each of the classes (which now works because the < characters are now in
comments), and finally go back and restore all the commented out generics on the right side of the equal sign! Now it will compile, and I just have to add the code in the body of each method. If you want to define ANOTHER class, you have to go back and comment out all the generics stuff on the right hand sides in order to do class completion on the new class.

I thought it might be "easier" to just type the procedure/function headers
myself in the implementation section, but with generics, the class name before the method name can be a lot to type each time!

Am I missing something in using generics? Having to follow this procedure to use generics in the editor REALLY sucks...
QC Entry 51541
program ClassCompl; {$APPTYPE CONSOLE} uses System.Collections.Generic; type IntegerComparer = class(IComparer<Integer>) public function Compare(I1, I2: Integer): Integer; end; begin end. Load above into IDE. Try class completion on IntegerComparer class. See?

    51096

QC# Project Area
51096 Delphi.Net IDE\Class Completion
Description: Steps:
[QC Short Description]
class completion duplicates field of qualified type

[QC Description]
When class completion is invoked on a class having a property with a qualified type name (one with at least one dot), the corresponding field is created for each invocation.

This is as mainly seen in .NET where qualified types are common, but also reproducable in Win32.

I actually stumbled across it using ECO where each ECO form has an EcoSpace property of type Eco.Handles.DefaultEcoSpace. Thus each invoked class completion adds another field for that property.
QC Entry 51096
- start IDE - create new VCL Form Application - move to the public section - enter: "property Foo: System.Int64 read FFoo;" - press Ctrl-Shift-C for class completion - field FFoo: System.Int64 is created - press Ctrl-Shift-C for class completion again exp: nothing happens act: another field FFoo: System.Int64 is created

QC# Project Area
Delphi.Net IDE\Code Parameters
Description: Steps:
parameter tooltip is not displayed correctly in this test case. Tooltip is not displayed for one of the parameters.

looks like code parameters are not working for membership provider.

(jpg attached)
1. Create ASP .NET App
2. On Page_Load function in Default.pas, write following
Membership.ValidateUser(
// exp: ValidateUuser has two parameters, username and password, so expect to have tooltip for "username" after "(" is entered
// act: tooltip for password is displayed

try FormsAuthentication.RedirectFromLoginPage also. Code completion displays the correct parameter, but parameter tooltips are completely wrong.

QC# Project Area
Delphi.Net IDE\Packages
Description: Steps:
HOT FIX ROLL UP 1-10

Object ref not set on shut down of IDE if you uncheck a Win32 package, while you have a .NET app open.

STACK TRACE Attached
boot IDE
New VCL.NET App
Save All
Tools | Options - set Save Project Desktop ON
Save All
Shut down IDE
Start IDE
// VCL.NET app should be open
Component | Install Packages
uncheck one
OK
Close IDE

//Object Ref not found

QC# Project Area
Delphi.Net IDE\Refactoring\Rename
Description: Steps:
ORIGINALLY REPORTED FOR JA... BUT CAN REPRODUCE THIS ON EN.

[FUNCTION ISSUE]
Rename function is wrong. It was not changed definitely, for example, when I changed variable name from 'i' to 'test'. See attach image.
1. Startup | CodeGear RAD Studio
2. File | New | VCL Forms Application - Delfhi for .NET
3. Coding
4. Refactoring | Rename "..."

QC# Project Area
Delphi.Net Debugger
Description: Steps:
rmtdbg105.exe hangs when reading the symbols for Eco.Core.dll Run | Load Process on the attached Project27.exe (the source is also included in the attachment)
Run it and click the button. The button will do an "Assembly.LoadFrom" on Eco.Core.dll
The IDE hangs.
If you look in task manager, rmtsbg105.exe is using 100% CPU

If you delete Eco.Core.pdb and repeat the steps, no hang is seen
QC# Project Area
Delphi.Net Debugger\Evaluator
Description: Steps:
Format specifiers have no effect in the evaluator. Set a breakpoint on the line marked #1 and run.

Evaluate the following expression.

IntegerVar,h

See the following result.

42

The value expected was 2A or $2A.


program Test;

{$APPTYPE CONSOLE}

var
IntegerVar: Integer;

begin
IntegerVar := 42;
WriteLn(IntegerVar); // #1
end.

    53491

QC# Project Area
53491 Delphi.Net Debugger\Evaluator
Description: Steps:
[QC Short Description]
Evaluation of HUGE string crashes debugger+IDE

[QC Description]
When the debugger tries to evaluate a huge tring (~1 million chars) - bds.exe crashes and dies with the following message:

bds.exe - bordbk105.dll
---------------------------
Debugger Assertion Failure: ""
in pcntrlsrv.cpp at line -1073741819
Continue execution?
QC Entry 53491
Make sure to add System.Text to uses

---BO SNIP---
var
LBuffy: StringBuilder;
S: string;
begin
LBuffy:=StringBuilder.Create;
LBuffy.Append('x', 1000000); //add a million x chars
//break on line below and evaluate 'LBuffy' or 'LBuffy.ToString' here and debugger+IDE will crash.
S:=LBuffy.ToString;
//break on line below and debugger+IDE crashes - even without any evaluation attempts
Showmessage(S);
end;
---EO SNIP---

    53465

QC# Project Area
53465 Delphi.Net Debugger\Evaluator
Description: Steps:
[QC Short Description]
Evaluation of string's Length property crashes debugger+IDE

[QC Description]
Evaluation of a string's Length property results in crash with the following error message:
--
Debugger Assertion Failure: ""
in pcntrlsrv.cpp at line 3088
Continue execution
---
QC Entry 53465
---BO SNIP---
var
L: Integer;
S: string;
begin
S:='xxx'; //assign any value
L:=S.Length; //set breakpoint here and evaluate 'S.Length'
ShowMessage(L.ToString); //show value of L (just so L wont get optimized away)
end;
---EO SNIP---

See also related/duplicate QC reports: 53588 & 53479

QC# Project Area
Delphi.Net Debugger\Interaction with IDE
Description: Steps:
You are unable to change either the Working directory or the Debug source path for an ASP.net app if the ASP.net option "Host with web server" is enabled Create a new delphi.net ASP.Net application
Run | Parameters
Note that the all the controls on the "Debugger" page are disabled.
Only the Host application and Parameters fields need to be disabled in this case

Note: If you uncheck "Host with web server" on the ASP.Net options page, then you can set the source path and working directory.

QC# Project Area
Delphi.Net ECO\IDE Integration
Description: Steps:
About box in ECO Utils menu can be resized and position of button "Close" is too far on the right, it gets cut off. 1. Start HL
2. ECO Utils / About...

QC# Project Area
Delphi.Net ECO\IDE Integration
Description: Steps:
When creating a WebForm app and a model package at the same time, the initialization of the EcoSpaceUnit fails with a designer error

1) File | New | Other | Eco | Eco Delphi.Net Project Wizard
2) Select the preset, Webform application and set the checkbox ON for "In separate assembly. click OK
//result:
EcoSpaceUnit opens in the designer with this error:
An error occurred while loading the document. Fix the error, and then try loading the document again. The error message follows:
Could not find type 'EcoSpaceUnit.PersistenceMapperSharer'. Please make sure that the assembly that contains this type is referenced. If this type is a part of your development project, make sure that the project has been successfully built. The variable 'PersistenceMapperSharer1' is either undeclared or was never assigned.
3) In Project Manager, double-click PersistenceMapperProvider.pas to open it
4) Click on the Design tab
//result:
Similar Designer errors
// comment from Jonas:
The project compiles without problems. if you close the project and reopen it, the designer works just fine.

If you create the project with the model in the same project as the rest (uncheck "In Separate assembly"), the same ecospace opens up just fine the first time.

The exception that actually occurs in the IDE is the following:

===
A first chance exception of type 'System.ComponentModel.Design.Serialization.CodeDomSerializerException' occurred in System.Design.dll

Additional information: The variable 'PersistenceMapperSharer1' is either undeclared or was never assigned.
===

callstack (see attached)

QC# Project Area
Delphi.Net ECO\IDE Integration
Description: Steps:
please change the layout of the "Select UML Packages for the ECO Space" dialog for localization. "Cancel" button does not fit into the dialog after we translate.
------------
"Cancel" button in ECO's Select Packages wizard is slightly truncated.
- Open a new ECO WinForm;
- Go to EcoSpace Designer and click a grey folder icon in the lower left corner;
//"Select UML Packages for the ECO Space" dialog opens;
// See the attached screenshot.

    53711

QC# Project Area
53711 Delphi.Net ECO\IDE Integration
Description: Steps:
[QC Short Description]
ECO uneccessarily loaded at startup of Win32/C++ Builder only personality

[QC Description]
As it seems the ECO package is still loaded in the Win32 and C*+ Builder single personality mode.
If ECO is not used by the IDE this shouldn't be loaded for Win32 and C++ Builder only mode.

Not doing this could reduce startup time a little bit.
QC Entry 53711
1. start IDE (single personality mode: Win32 or C++ Builder) 2. watch the ECO stuff being loaded (if not seen on the splash screen use process explorer or similar to look for loaded ECO stuff)

QC# Project Area
Delphi.Net ECO\IDE Integration
Description: Steps:
Webservice applications cannot be created using the Eco Project Wizard. The files being generated contain placeholders that need to be replaced and the IDE does not pick up the pas files. 1. Start HL
2. File / New / Other...
3. select tab ECO / New project
4. select Webform app, check Webservice
5. select no model at all
6. select dbx persistence
7. click ok

exp: project can compile and is set up properly
act: Webservice1.asmx is missing the pas file in the ide. if you browse the file you find parts like this that contain placeholders.

uses
System.Collections, System.ComponentModel,
System.Data, System.Diagnostics, System.Web,
System.Web.Services,
Eco.ObjectRepresentation,
Eco.Handles, EcoSpaceUnit, <NONE>;

    39104

QC# Project Area
39104 Delphi.Net ECO\Persistence Layer
Description: Steps:
[QC Short Description]
ECO crashes when selecting data conditionally from SQL 2005 when the number or rows exceeds certain amount.

[QC Description]
Attached is the test project I created. Please correct the connection string in order to connect to your own SQL server.
The EcoSpace is setup to use GUID as the keys; and the only ECO class is named "Class_1" with only one boolean attribute "Active". The winform contains 3 buttons, the "+ 10" would create and add 10 rows to the DB. the "All" would bind the datagrid to the expression "Class_1.allInstances" and the button "Active" would bind the datagrid to the expression "Class_1.allInstances->select(Active)"

1. setup SQL server and generate the schema
2. run the program and add 10 rows
3. check the "All" and "Active" buttons work properly
4. press 2 more times of the add buttons to add 20 more rows
5. check again the "All" and "Active" buttons work
6. close and restart the program
7. the "All" button works but the "Active" button would crash the program with exception "Conversion failed when converting from a character string to uniqueidentifier."

Reset the EcoSpace to use AutoInc as keys and repeat the test would result in exception: "Error executing SQL: SELECT Class_1_ALIAS.ECO_ID, Class_1_ALIAS.ECO_TYPE, Class_1_ALIAS.Active_COL FROM Class_1 Class_1_ALIAS WHERE Class_1_ALIAS.ECO_ID IN (, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , )"

P.S. my config:
Windows XP SP2 with all updates, BDS 2006 Update 1 with all hotfixes, MS SQL 2005 Express
QC Entry 39104
1. setup SQL server and generate the schema 2. run the program and add 10 rows 3. check the "All" and "Active" buttons work properly 4. press 2 more times of the add buttons to add 20 more rows 5. check again the "All" and "Active" buttons work 6. close and restart the program 7. the "All" button works but the "Active" button would crash the program with exception "Conversion failed when converting from a character string to uniqueidentifier." Reset the EcoSpace to use AutoInc as keys and repeat the test would result in exception: "Error executing SQL: SELECT Class_1_ALIAS.ECO_ID, Class_1_ALIAS.ECO_TYPE, Class_1_ALIAS.Active_COL FROM Class_1 Class_1_ALIAS WHERE Class_1_ALIAS.ECO_ID IN (, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , )"

    51669

QC# Project Area
51669 Delphi.Net ECO\Persistence Layer\Evolution
Description: Steps:
[QC Short Description]
Cannot evolve model after changing persistence mapper for enumerated type attribute

[QC Description]
I have changed an ECO model so that an attribute with an enumerated type now uses the GenericEnumAsInteger persistence mapper. When I attempt to evolve the DB, I get the following output in the ECO Messages tab :-

Eco.SqlMeta| Detecting changes
Eco.SqlMeta| Initializing Script
Eco.SqlMeta| Detecting type clashes...
Eco.SqlMeta| Analyzing new tables...
Eco.SqlMeta| Analyzing new columns...
Eco.SqlMeta| Analyzing new instances...
Eco.SqlMeta| Analyzing data movements...
Eco.SqlMeta| Analyzing old instances...
Eco.SqlMeta| Analyzing old columns...
Eco.SqlMeta| Analyzing old tables...
Eco.SqlMeta| Optimizing script...
Eco.SqlMeta| Drop column INVOICE.STATUS
Eco.SqlMeta| Add column INVOICE.STATUS
Failed to detect changes: System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list. at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args) at System.String.Format(IFormatProvider provider, String format, Object[] args) at System.String.Format(String format, Object[] args) at Eco.Internal.TBoldDataBaseEvolutor.DetectMapperChange(ClassDefinition NewClassDef, ClassDefinition OldClassDef, StructuralFeatureDefinition NewMemberMapping, StructuralFeatureDefinition OldMemberMapping, Object Param) at Eco.Internal.TBoldDataBaseEvolutor.ForEachMemberMappingPair(TBoldMemberMappingPairAction Action, Boolean IgnoreInstances, Object Param) at Eco.Internal.TBoldDataBaseEvolutor.GenerateWarnings() at Eco.Windows.Forms.DBEvolutionForm.EvolveDB(IServiceProvider serviceProvider, IDBEvolutor evolutor, Boolean silent)
QC Entry 51669
- Download the attachment and unzip - Open ContractManager.groupproj - Open the Project Manager window - Expand the ContractManager.exe node - Double-click on the EcoSpaceUnit.pas node - Right-click on the EcoSpaceUnit design surface and select 'Evolve Schema'

    51842

QC# Project Area
51842 Delphi.Net ECO\Persistence Layer\Mapping
Description: Steps:
[QC Short Description]
InvalidCastException when attempting to persist class with enumeration

[QC Description]
If I have a class that has an attribute with an enumeration as its type, and I've configured the enumeration to use the GenericEnumAsInteger persistence mapper, I get an InvalidCastException when I attempt to call save changes to a BlackfishSQL database.
QC Entry 51842
- Download EnumTest.zip and unzip - Open EnumTest.dproj - Select Run|Run from the IDE main menu - Click the 'Button1' button Expected: A Foo instance with its Bar property set to BarEnum.Bar1 will be created and saved to the BlackfishSQL database Actual: An InvalidCastException is thrown when EcoSpace.UpdateDatabase is called

    50587

QC# Project Area
50587 Delphi.Net ECO\Presentation Layer
Description: Steps:
[QC Short Description]
Bound TDBLookupComboBox not showing list contents correctly

[QC Description]
If a TExpressionHandle is bound to a TDBLookupComboBox, the contents of the dropdown list doesn't display until the dropped down list is clicked, if an item has already been selected. The list is dropped down, but is empty.
QC Entry 50587
- Download LookupComboBind.zip and extract - Open LookupComboBind.dproj - Select 'Run|Run' from the main menu - Click the button to the right of the Combobox to invoke the dropdown list - Select 'Item 1' from the list - Click the button to the right of the Combobox to invoke the dropdown list Expected: The list will display all possible selection values Actual: An empty list is shown - Click the list. The list will now be populated, and a value can be selected.

QC# Project Area
Delphi.Net ECO\Other
Description: Steps:
ECO license dialog pops up when Windows Update patches Visual Studio or when Visual Studio is run. It is especially problematic if you have multiple user accounts on a machine as the dialog pops up without Windows being able to show it and you get reminders about the message not being shown constantly again and again. 0. Install VS 2005 or any product that comes with parts of it, e.g. MS SQL Server 2005
1. Install HL

exp: any other product is not affected
act: ECO license dialog pops up when VS-dependant product is being used

    51619

QC# Project Area
51619 Delphi.Net ECO\Other
Description: Steps:
[QC Short Description]
Sorting the columns in quick prototype does not work

[QC Description]
I opened a quick prototype with data in it (of a model I made). Then I sorted the table with a click on the column title. When I double clicked on the cell to bring up the autoform of the current row, it brought up the data for another row. The row that had been in that spot prior to sorting. This happened with both persistent columns and derived columns.
QC Entry 51619
Make a model Open in quick prototype Select a table (add data if not already in there) Click on the column title to sort Double click on gray cell at left side of row to bring up auto form If the rows rearranged during sort, the data borught up will not match the selected row.

QC# Project Area
C++Builder Modeling
Description: Steps:
C++ Builder: Diagram should be updated after changing in the code inheritance list. Now Reload is required.

[Highlander Update]

Rev. 9858
1. add following code to the C++ project:
class A{};
class B{};
class C{};
2. check that all 3 classes are shown in the diagram
3. in the code make class A as parent of class C:
class C : A {};
4. switch to the diagram - ok, generalization link is drawn.
5. now in the code changed parent class to B:
class C : B{};
6. go to the diagram - the link is still drawn from C to A. Update (F5) doesn't help. Only after project reload the link is drawn as expected - from C to B.

QC# Project Area
C++Builder Modeling
Description: Steps:
Exception appears after switching to Model View mode



[saa] It reproductible only on my computer. I couldn't reproduce this problem on virtual machines
1. Create new C++ project (Console application)
2. Click to Model View-> Add Model Support Window appears-> Click yes and then choose default settings-> Click ok->
Exception appears

[vkarjakin]
Attached is Projects folder for this Exception. Clean (or rename) your C:\Documents and Settings\<your account>\My Documents\RAD Studio\Projects folder and extract to this folder attached content. You will receive this Exception. The problem is in the infinite loop because the subdirectory has the same name as the project root directory (Borland.SCI.Impl.Cpp.CppProjectStructure class uses short names by the Projects folder parsing)!
Such situation can be repeated in many projects because of many reasons.

QC# Project Area
Delphi Modeling
Description: Steps:
Don't loose GetProperty and SetProperty
declarations after Add Property action to the class with delegate

[Highlander Update]
1. Add Class to the diagram
2. Add Delegate or Delegate as function to the class
3. Add Property to the class

Result: It can be noted that Property is not shown in diagram, and in sourse code we see only

property Property1 : Integer read GetProperty1 write SetProperty1;

that is declarations of GetProperty1 and SetProperty1 were lost. As result code is not compilable.

QC# Project Area
C++Builder Modeling\SCI
Description: Steps:
Old class stays in the model after having been completely replaced by a new one.

[Highlander Update]
* new C++ console application (options: C++, no VCL, no Multi Threaded)
* add modeling support
* put the following code in the main.cpp

class a {
void f();
};
void a::f()
{}

* go to model tree
// act:
the class a is there
* go to the source code and replace both references to `a' with `b'
* go to model tree
// act:
both the class `a' and the class `b' are there but only the latter contains the method f()
------------------------------
Changed steps in build 2789.8895.1:
1. create vcl c++ project
2. add modeling
3. add a function to the class TForm1 with implementation out of class declaration - I'm not sure this step is essential.
4. check the class with new function is shown in the diagram and in the model tree
5. Go to the code and change class name from TForm1 to e.g. Taa - in unit1.cpp 4 times and in project1.cpp in USEFORM("Unit1.cpp", aa) (essential!) and in another line below (not really important)
6. Go to the diagram and see that 2 classes are shown TForm1 and Taa, ModelTree as well contains both classes. Only one class Taa should be shown.
7. After Project Reload extra TForm1 class disappears.

QC# Project Area
Delphi Modeling\SCI
Description: Steps:
Delphi Win32: The problem: correctly create references to inner types if the target classifer is located within the unit after the source classifier. Probably target classifiers should be replaced to be before source one.

[SpUpdMF]

QC# Project Area
Delphi Modeling\Class Diagram
Description: Steps:
It should be possible to delete struct field from Class Diagram

[Highlander Update]
1. Add Struct to diagram
2. Add Field to struct
3. Select struct field in diagram-> attempt to remove it ( press Del button or via context menu)


exp: Remove action is done
act: Nothing is done

QC# Project Area
Delphi Modeling\Audits
Description: Steps:
Should be possible to run Audits and Metrics on project level


From newsgroups:

Warren Postma

I have never (in delphi 2007 field test builds, nor in the RTM 2007, nor
2007 update 1, nor latest F/T H2 build) been able to get Metrics to work
for the whole project.

One form (.dfm/.pas) only, no problem.

But if I select the WHOLE PROJECT, audits fails in one of two ways:

1. No results ever. Frozen delphi (progress bar never moves, audit
results never returned).

2. Fast processing (no progress bar, but the whole thing cancels out,
fails silently), and we are returned to our audit-results window pane,
which is empty and contains no results.

How on earth does one do metrics on a whole project? Can you only do
metrics on a form by form basis?

NOTE: This means, go open a .dproj with 50 forms or so in it, not some
trivial piece of demo code, and actually TEST the audits/metrics
features on the whole projects. Does it work for you?

Warren

[Highlander Update]
Unzip attached project
Start Delphi
Open project GExpertsD9.dpr
Switch on modeling
Switch to Model View
Launch popup menu on top node GExpertsD9
Launch QA Audits
Select All Audits
Start

//exp. Audits results are shown
//act. Error message appears and Delphi is closed. See attached image.

The same situation with running metrics, Delphi is closed.

On some particular packages fast processing is observed. Audits or metrics result pane is empty in this case.
It's possible to run Audits&metrics for single class and for some (small?) packages.

QC# Project Area
C++Builder Modeling\MDL Import
Description: Steps:
Access violation when modelisation convertion is cancelled
once it is hit the error comes back in a loop - i have to kill bds.exe

[vk] The same problem in all projects in the section "Design Projects": UML1.5 Project, UML1.5 Project, etc. Here are 2 bugs
1) All design projects must be presented in all Architect shortcuts (CBuilder, Delphi, DelphiDotNet)
2) Design projects should be open without Exceptions

[Highlander Update]
1. French Pro hihglander is installed
2. start C++ builder
3. Fichier | Nouveau | autre (file | new|other)
4. projects de modelisation
5. Convertir depuis MDL
6. keep default settings - click OK
7. Annuler (cancel)

Error window access violation in dotnetcoreide100.bpl

[21E70B6C]{dotnetcoreide100.bpl} DotNetProject.TReferencesCategory.GetIndex (Line 3105, "DotNetProject.pas" + 3) + $7
[2098434A]{coreide100.bpl} ProjectFrm.TProjectManagerForm.ProjectTree2GetImageIndex (Line 1333, "ProjectFrm.pas" + 22) + $10
[20E77C08]{vclide100.bpl} IDEVirtualTrees.TBaseVirtualTree.DoGetImageIndex (Line 18527, "idevirtualtrees.pas" + 8) + $19
[20E7A20B]{vclide100.bpl} IDEVirtualTrees.TBaseVirtualTree.GetImageIndex (Line 20032, "idevirtualtrees.pas" + 6) + $25
[20E838B0]{vclide100.bpl} IDEVirtualTrees.TBaseVirtualTree.PaintTree (Line 27023, "idevirtualtrees.pas" + 217) + $27
[20E7CB80]{vclide100.bpl} IDEVirtualTrees.TBaseVirtualTree.Paint (Line 21712, "idevirtualtrees.pas" + 16) + $17
[20145563]{vcl100.bpl } Controls.TCustomControl.PaintWindow (Line 10157, "Controls.pas" + 6) + $5
[20140825]{vcl100.bpl } Controls.TWinControl.PaintHandler (Line 7367, "Controls.pas" + 4) + $14
[20140FF8]{vcl100.bpl } Controls.TWinControl.WMPaint (Line 7560, "Controls.pas" + 6) + $5
[201454FC]{vcl100.bpl } Controls.TCustomControl.WMPaint (Line 10146, "Controls.pas" + 2) + $4
[20E748F1]{vclide100.bpl} IDEVirtualTrees.TBaseVirtualTree.WMPaint (Line 16412, "idevirtualtrees.pas" + 8) + $4
[2013C4F3]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[20031615]{rtl100.bpl } Classes.TList.Delete (Line 2945, "common\Classes.pas" + 9) + $8
[200318DD]{rtl100.bpl } Classes.TList.Remove (Line 3081, "common\Classes.pas" + 3) + $4
[20140673]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7304, "Controls.pas" + 111) + $6
[20D1972A]{designide100.bpl} DeskUtil.SetFocusHook (Line 435, "DeskUtil.pas" + 4) + $C
[20E7EB5A]{vclide100.bpl} IDEVirtualTrees.TBaseVirtualTree.WndProc (Line 23133, "idevirtualtr

QC# Project Area
Delphi.Net Modeling
Description: Steps:
Delphi Win32 and .Net: add parameters with var/out/const modifier to global procedure/function using "Add/Remove Parameters for Operation" dialog both to interface and implementation sections. Now only in interface sections parameters with modifiers are partially set.
Adding parameters without modifier happens ok.
Adding paramerters with modifier to procedure/function within a class happens ok.

[Highlander Update]
1. Source code:
unit Namespace1;
interface
procedure p;
implementation
procedure p;
begin
end;
end.
2. case a. Now select p in Model View and try to change parameters from Object Inspector using "Add/Remove Parameters for Operation" dialog. Add one parameter and set any modifier var/out/const for it - parameter is added to both parts, but modifier is present only in interface part:
unit Namespace1;
interface
procedure p(out param0 : Integer);
implementation
procedure p( param0 : Integer ); // out is lost
begin
end;
end.

2. case b. Using the same dialog as in case a, try to add 2 parameters and modifier set only for first one (it's important that it should be a parameter after parameter with modifier). Result: exception dialog (see attachement).
Resulting code:
unit Namespace1;
interface
procedure p(out param0 : Integer ; param1 : Integer);
implementation
procedure p( param0 : Integer ); // out and other parameters are lost
begin
end;
end.

QC# Project Area
Delphi.Net Modeling
Description: Steps:
Delphi .Net and Win32: Don't lose design elements and diagram on copy/paste a namespace with a classifer.

[Highlander Update]
1. add in a namespace a class, a note, a constraint, an object, a design diagram (e.g. usecase) with some elements.
2. save all (it doesn't matter)
3. copy the namespace and paste it beside -> new namespace contains only the class and one of design elements (probably this doesn't have regularity - in one case a note was kept, in another an object). All other design elements and the design diagram are lost. But they should be kept.

QC# Project Area
Delphi.Net Modeling\SCI
Description: Steps:
It is impossible to compile Delphi project with included namespace

[dpr support]

[vi]Investigation note:
This same happens of course in namespaces 2nd and more levels created in an ordinar namespace.
After class adding to a namespace a pas file with 2 Unit1 is created, though unit statement contains only one Unit1.
Then dpr file contains only reference to this incorrect named pas file.
Workaround: rename pas file from Project Manager to remove extra Unit1. After it the code is compiled ok.

[Highlander Update]
1. Create Delphi .NET Console Application and switch on Modelling support
2. In the ModelView create included namespace Namespace1 using Project## namespace node (node with icon "{}")
3. Add class to the Namespace1.
4. Try to compile sources - you will receive error:

1) In the text editor in the ProjectXX.dpr file you will see the line with duplicated Unit1! - this is error
"uses ... Project##.Namespace1.Unit1.Unit1 in 'Project##.Namespace1.Unit1.Unit1.pas';"
2) After navigation to the compile error you will see Unit file with duplicated Unit1 part in the file name:
Project##Namespace1.Unit1.Unit1 - this is error in filename
But the source of this file contains single Unit1 - "unit Project##.Namespace1.Unit1;" - it is right

The namespace of 3rd level contains duplicated "Unit1" word too!

QC# Project Area
Delphi.Net Modeling\SCI
Description: Steps:
Find a solution to canhas projects with the same structure (names) in one folder.

[Highlander Update]
1. Create Delphi.Net Package project (Package1) in the default folder for projects.
2. Create namespace (Namespace1) in the project and Class (Class1) in this namespace.
3. Create another project (Package2) in the same folder.
4. Repeate item 2. for project Package2.

Class2 is not created.

AD : SCI asks VFSProject (for 'Package2') to create file with name 'Namespace1.pas' which already exists (in project 'Package1').


Now Class 2 is created and code is Ok.
But when project Package1 is opened, it can be noted that Class 2 is appeared.

QC# Project Area
Delphi.Net Modeling\SCI
Description: Steps:
Delphi .Net and Win32: It should be possible to add parameters to delegate/delegate as function via Object Inspector. Now only exception happens.

[Highlander Update]
[21E2C06F]{dotnetcoreide100.bpl} DotNetPropInsp.TDotNetProperty.Edit (Line 891, "DotNetPropInsp.pas" + 1) + $39
[2000A455]{rtl100.bpl } System.@CheckAutoResult (Line 18047, "sys\system.pas" + 6) + $0
[21E2C06F]{dotnetcoreide100.bpl} DotNetPropInsp.TDotNetProperty.Edit (Line 891, "DotNetPropInsp.pas" + 1) + $39
[20AB53C8]{coreide100.bpl} PropInsp.TPropertyInspector.PropListEditDblClick (Line 855, "PropInsp.pas" + 18) + $1C
[20E0ED7D]{vclide100.bpl} IDEInspListBox.TInspListBox.DoEditDblClick (Line 967, "ideinsplistbox.pas" + 2) + $A
[20E10B3B]{vclide100.bpl} IDEInspListBox.TInspListBox.ListButtonClick (Line 1660, "ideinsplistbox.pas" + 2) + $2
[2013C9F8]{vcl100.bpl } Controls.TControl.Click (Line 5229, "Controls.pas" + 9) + $8
[20E0BD4A]{vclide100.bpl} IDEListBtns.TListButton.WMLButtonUp (Line 579, "IDEListBtns.pas" + 8) + $11
[2013C4F3]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[201400D7]{vcl100.bpl } Controls.TWinControl.IsControlMouseMsg (Line 7168, "Controls.pas" + 1) + $9
[20140673]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7304, "Controls.pas" + 111) + $6
[2013FD9C]{vcl100.bpl } Controls.TWinControl.MainWndProc (Line 7073, "Controls.pas" + 3) + $6
[20040DD4]{rtl100.bpl } Classes.StdWndProc (Line 11583, "common\Classes.pas" + 8) + $0
[20163641]{vcl100.bpl } Forms.TApplication.StopHintTimer (Line 8672, "Forms.pas" + 3) + $6
[201625C8]{vcl100.bpl } Forms.TApplication.ProcessMessage (Line 8103, "Forms.pas" + 21) + $1
[2016260A]{vcl100.bpl } Forms.TApplication.HandleMessage (Line 8124, "Forms.pas" + 1) + $4
[201628FF]{vcl100.bpl } Forms.TApplication.Run (Line 8223, "Forms.pas" + 20) + $3
[00422976]{bds.exe } bds.bds (Line 195, "" + 7) + $7

QC# Project Area
Delphi.Net Modeling\Class Diagram
Description: Steps:
Exception occurs after name edit name in diagram and then change focus to the Object Inspector

Bug is unstable. I have reproduced two times.
approximate steps:

1. Add Namespace or Class-> focus is set to inplace editor
2. Change focus to the Object Inspector

Exception occurs

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at Borland.Together.Diagram.Core.InplaceEditorManager.b()
at Borland.Together.Diagram.Core.InplaceEditorManager.b(IInplaceEditor )
at Borland.Together.DrawingSurface.InplaceEditor.TextFieldInplaceEditor.c()
at Borland.Together.DrawingSurface.InplaceEditor.TextFieldInplaceEditor.b(Object , EventArgs )
at System.Windows.Forms.Control.OnLostFocus(EventArgs e)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.TextBoxBase.WndProc(Message& m)
at System.Windows.Forms.TextBox.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

QC# Project Area
Delphi.Net Modeling\Class Diagram
Description: Steps:
Delphi .Net and Win32: Dont' lose design links on container namespace copy-paste. Now elements are kept, but links are lost.
Note: copy/paste of only design diagram happens ok - links are kept.

[Highlander Update]
1. create a namespace
2. within it create a design diagram (e.g. UseCase), add a couple of elements and a link between them
3. now copy the container namespace and paste it beside
4. open an UseCase diagram from pasted namespace - it contains only elements and there is no links.

QC# Project Area
Delphi.Net Modeling\Class Diagram
Description: Steps:
Delphi .Net and Win32: it should be possible to rename a procedure inplace in the diagram. Now new name is rejected and old one is kept.
Note 1: functions are renamed inplace ok
Note 2: the same procedures are renamed ok from Object Inspector.

[Highlander Update]

QC# Project Area
Delphi.Net Modeling\Class Diagram
Description: Steps:
Delphi.Net: Show generic parameters of functions on the class icon. Now only class with generic parameters has distinction from ordinar class, it would be better if generic functions as well have distinctions. The better way to show these parameters as a part of name.
A = class
function F<T>:Integer; // now is shown as F, but F<T> is expected
procedure P<Y>; // the same
end;

QC# Project Area
Delphi.Net Modeling\Inspector
Description: Steps:
Delphi .Net and Win32: Remove property "params" from properties. Now dialog "Add/Remove parameters for Operation" appears and then after some parameters adding and OK pressing only exception happens. No parameters are applied (ok).

[Highlander Update]
Exception text:

[21E2C06F]{dotnetcoreide100.bpl} DotNetPropInsp.TDotNetProperty.Edit (Line 891, "DotNetPropInsp.pas" + 1) + $39
[2000A455]{rtl100.bpl } System.@CheckAutoResult (Line 18047, "sys\system.pas" + 6) + $0
[21E2C06F]{dotnetcoreide100.bpl} DotNetPropInsp.TDotNetProperty.Edit (Line 891, "DotNetPropInsp.pas" + 1) + $39
[20AB53C8]{coreide100.bpl} PropInsp.TPropertyInspector.PropListEditDblClick (Line 855, "PropInsp.pas" + 18) + $1C
[20E0ED7D]{vclide100.bpl} IDEInspListBox.TInspListBox.DoEditDblClick (Line 967, "ideinsplistbox.pas" + 2) + $A
[20E10B3B]{vclide100.bpl} IDEInspListBox.TInspListBox.ListButtonClick (Line 1660, "ideinsplistbox.pas" + 2) + $2
[2013C9F8]{vcl100.bpl } Controls.TControl.Click (Line 5229, "Controls.pas" + 9) + $8
[20E0BD4A]{vclide100.bpl} IDEListBtns.TListButton.WMLButtonUp (Line 579, "IDEListBtns.pas" + 8) + $11
[2013C4F3]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[201400D7]{vcl100.bpl } Controls.TWinControl.IsControlMouseMsg (Line 7168, "Controls.pas" + 1) + $9
[20140673]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7304, "Controls.pas" + 111) + $6
[2013FD9C]{vcl100.bpl } Controls.TWinControl.MainWndProc (Line 7073, "Controls.pas" + 3) + $6
[20040DD4]{rtl100.bpl } Classes.StdWndProc (Line 11583, "common\Classes.pas" + 8) + $0
[2004A426]{rtl100.bpl } Contnrs.TComponentList.GetItems (Line 380, "common\Contnrs.pas" + 1) + $4
[201625C8]{vcl100.bpl } Forms.TApplication.ProcessMessage (Line 8103, "Forms.pas" + 21) + $1
[2016260A]{vcl100.bpl } Forms.TApplication.HandleMessage (Line 8124, "Forms.pas" + 1) + $4
[201628FF]{vcl100.bpl } Forms.TApplication.Run (Line 8223, "Forms.pas" + 20) + $3
[00422976]{bds.exe } bds.bds (Line 195, "" + 7) + $7

QC# Project Area
Delphi.Net Modeling\Inspector
Description: Steps:
Editing template parameters in-place on a diagram or in IO constantly fails.

[Highlander Update]

QC# Project Area
Delphi.Net Modeling\Inspector
Description: Steps:
Delphi .Net and Win32: Inspector: it should be possible to add a parameter with array type via "Add/Remove Parameters for Operation" dialog. Now a parameter of default type is created and there is an exception.

[Highlander Update]
* create new Delphi Win32 app,
* save all somewhere,
* click Model View tab, enable modeling,
* right-click project node in Model Tree, choose Add|Namespace,
* right-click the newly created namespace node, choose Add|Class,
* right-click the newly created class node, choose Add|Procedure,
* select the procedure, select Params in OI, click ellipsis.

Try to add a parameter with type
array[1..5] of Integer
or
array of TObject

Exception:
[21E2C06F]{dotnetcoreide100.bpl} DotNetPropInsp.TDotNetProperty.Edit (Line 891, "DotNetPropInsp.pas" + 1) + $39
[2000A455]{rtl100.bpl } System.@CheckAutoResult (Line 18047, "sys\system.pas" + 6) + $0
[21E2C06F]{dotnetcoreide100.bpl} DotNetPropInsp.TDotNetProperty.Edit (Line 891, "DotNetPropInsp.pas" + 1) + $39
[20AB53C8]{coreide100.bpl} PropInsp.TPropertyInspector.PropListEditDblClick (Line 855, "PropInsp.pas" + 18) + $1C
[20E0ED7D]{vclide100.bpl} IDEInspListBox.TInspListBox.DoEditDblClick (Line 967, "ideinsplistbox.pas" + 2) + $A
[20E10B3B]{vclide100.bpl} IDEInspListBox.TInspListBox.ListButtonClick (Line 1660, "ideinsplistbox.pas" + 2) + $2
[2013C9F8]{vcl100.bpl } Controls.TControl.Click (Line 5229, "Controls.pas" + 9) + $8

QC# Project Area
Delphi.Net Modeling\Patterns
Description: Steps:
Delphi.Net and Win32: Stub implementation: don't loose parameter's modifiers.

[Highlander Update]
1. Original code (e.g. for Win32):
Interface1 = interface
procedure Proc1 (const name: string; Var param1 : Integer; out param2 : Integer);
end;
Class1 = class (TInterfacedObject, Interface1)
end;
2. Now for Class1 generated Stub Implementation. Results:
Class1 = class (TInterfacedObject, Interface1)
procedure Proc1( name : String ; param1 : Integer; param2 : Integer);
end;
So, all parameters' modifiers (const, var, out) are lost and the code is not compilable.

Server Response from: ETNASC04