RAD Studio 2007 - List of Fixes to Delphi.NET in December Update

By: Chris Pattinson

Abstract: List of 157 fixes (40 from Quality Central) for RAD Studio 2007, Delphi.NET personality in the December Update

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

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.

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.

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

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.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.

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\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

    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 (, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , )"

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 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 "..."

    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

    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:
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\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\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

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 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 Database
Description: Steps:
Implement TDBXBinaryLongSequenceGenerator

Use new TDBXBlobSequenceGenerator has getBytes and getString method.

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

Use new TDBXBlobSequenceGenerator has getBytes and getString method.

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)

    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

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\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.

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

    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

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

    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

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 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 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 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<TConcrete<T>.T>'

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

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

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

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

TConcrete<T> = class(TBase<T, TConcreteAlpha<T>>)
end;

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

var
x: TConcrete<Integer>;
begin
x := TConcrete<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 TBase<T, U>
where U: TBaseAlpha<T>
{
public U F;
public void M(T x)
{
F.P = x;
}
}

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

class TConcrete<T> : TBase<T, TConcreteAlpha<T>>
{
}

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

x = new TConcrete<int>();
x.F = new TConcreteAlpha<int>();
x.M(42);
Console.WriteLine(x.F.P);
}
}
--->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:
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 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 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 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.

    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.

    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; ---------------------

    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 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\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 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.

    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

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 (

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 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.

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 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>;

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 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 Install\Files
Description: Steps:
BlackfishSQL.slip file is not delivered into the $(BDSCOMMONDIR)\license directory.

This keeps the local driver from finding the license. This is also the documented directory.

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 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)

    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:
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"

    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 Install
Description: Steps:
Regression from recent build and BDS 2006

Missing Design Personality feature in Architect SKU, therefore it cause error when open UML-2.0 sample and also there's no Design Projects gallery.

Help file having topic of UML 2.0 sample project but cannot use it, too bad.
- File | New, Other
// act: No Design Projects gallery
- File | Open Projects // open Modeling\UML-2.0 sample
// act: error

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 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

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 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!

    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.

    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'

    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.

    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?

    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.

    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

    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 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:
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:
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 Modeling\Inspector
Description: Steps:
Editing template parameters in-place on a diagram or in IO constantly fails.

[Highlander Update]

    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---

    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

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

    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 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 >>
---------------------------

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.

    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.

    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.

    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.

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.

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 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 >>



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 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.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 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 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 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 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').

    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 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

    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

    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 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\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 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\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\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 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

    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 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 Documentation
Description: Steps:
Help Update

When invoking F1 for components under VCL .NET we get the same
Topic Found with same 3 titles : Components and Containers, Component Members and Component Class

Emeli note: as per Chris White this fix is not in Update1.

drop sqlconnection or tmainmenu to a VCL.NET
select component and <F1>

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:
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 Database\dbExpressCore
Description: Steps:
TDBXReader.Value[I].GetValueSize returns -1 when reading back VarBytes values. TDBXHighlanderBugsSuite.Managed.exe connection=mssqlconnection -s:oTestRaid_255618

    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.

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\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\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 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:
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 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
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 Documentation
Description: Steps:
Help - VCL .NET (split from 255545)
Pressing F1 on Object Inspector property results in no help coming up.

//try vcl.net as well
+ install latest help build on top of highlander RTM
+ Bring up the IDE
+ Click File | new | VCL Forms Application - Delphi Net
+ Drop a component on the form designer
+ Click on any property of the Object Inspector
+ Press F1
//exp: help for that property will come up
//act: nothing happens - no help comes up.

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 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

    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

    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

    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.

    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

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

    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 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:
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

    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.

QC# Project Area
Delphi.Net Modeling\Metrics
Description: Steps:
Delphi .Net and Win32: IUR (Inheritance Usage Ratio) metric should return 0, if parent class has no inheritance-specific members. Now it returns 100. A = class
end;
B = class(A)
end;

C=class
public var F1:Integer;
end;
D=class
procedure Proc;
end;

procedure D.Proc;
begin
F1:=4;
end;

Now IUR returns for classes B and D 100, but 0 is expected in both cases, because neither class A nor C has any inheritance-specific member, so no usage can be calculated.

QC# Project Area
Delphi.Net Modeling\Metrics
Description: Steps:
Delphi .Net and Win32: IUR (Inheritance Usage Ratio) metric should count non-protected (public and published) virtual methods as inheritance-specific members. case 1:
Class1 = class
public procedure Proc1;virtual;
end;
Class2 = class(Class1)
end;
Here IUR returns for Class2 100, but 0 is expected because Proc1 - is virtual method, but not overriden in Class2.

case 2:
Class1 = class
public procedure Proc1;virtual;
protected var F1:Integer;
end;

Class2 = class(Class1)
public
procedure Proc1;override;
end;

procedure Class2.Proc1;
begin
end;

Here IUR returns 0, but 50 expected - 1 inheritance-specific member is used from 2 available ones.

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 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
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 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\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.

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:
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, 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:
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:
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:
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 Documentation
Description: Steps:
ASP - Customize dialog


When help button is called dialog shoudl pass the focus to the help page brought up. Instead help page is under Customize dialog
File|new |ASP form
<Rclick> ToolsBar|Customize
click help button
//exp: help page on top
//act; customize is on top of the help page brought up

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 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 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



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...

    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.

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:
'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:
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 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 ?



    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)

Server Response from: ETNASC03