[All]
Delphi 2009 and C++Builder 2009 Update 1 Bug Fix List
Von: Calvin Tang
Inhaltsangabe: List of 60 Bugs fixed by Update 1 for Delphi 2009 and C++Builder 2009
| QC #: |
Date Reported: |
Area: |
|
2007-02-02 |
IDE\ToDoList |
| Description: |
Steps: |
Reopening a project that has to do items and then adding a new VCL project on top, produces an AV in todoide100.bpl.
|
+ Download attached .zip (project1.zip) + Extract project and open project1.dproj + Click Project | Remove from Project + Click Unit2 to remove + Click OK + Click View | To Do (to bring up ToDo List in lower pane) + In the ToDo List, select the item that is bold (which should be from Unit1 since Unit1 is open - Unit 3 should be closed). + Leaving the item in ToDo selected, right click on the project group + Click Add New Project + Select VCL Form Application + Click OK //exp: project adds with no error //act: --------------------------- Error --------------------------- Access violation at address 03A75E9E in module 'todoide100.bpl'. Read of address 00000021. --------------------------- OK Details >> --------------------------- <details attached) |
| QC #: |
Date Reported: |
Area: |
|
2008-02-08 |
Modeling |
| Description: |
Steps: |
| C++ Builder: Provide a hot key for navigating to method definition, e.g. Shift+Double Click. Now there is only simple double click, that navigates to method declaration. |
|
| QC #: |
Date Reported: |
Area: |
|
2008-03-12 |
Modeling\Class Diagram |
| Description: |
Steps: |
C++ Builder: It should be possible to rename attribute via inplace editor. Now no changes are applied.
[vz] 17.06.08 Now this request is actual for enum values only. |
tested on rev# 11616
[saa]: verified on build 12.0.3189.17256 for Update1 |
| QC #: |
Date Reported: |
Area: |
|
2008-05-01 |
Modeling\Inspector |
| Description: |
Steps: |
Unexpected behaviour of object inspector when used by modeling. In isn't the same as when used with form designer.
|
Part A: 1. Create a new win32 VCL forms application 2. Select the form in design mode 3. Show the object inspector and make the object inspector so that only half of the of form properties are visbile. 4. Make sure the list is sorted by names 5. Move the vertical scroll bar down to the bottom. You should see the "visible" property which is near the end and you should not see "Action" which is the first property. 6. Click on the "visible" property value and drop down the list, select "false". 7. Note that the "visible" property is still selected and the OI doesn't scroll at all. That's fine.
Part B: 2. Add an OLE Automation object to your project, use "MyClass" as class name 3. Show model view, accept modeling 4. Add a new method to IMyClass. Name it "Func". 5. Select "Func" in modeling (actually it should already been selected since you just created) 6. Look at the object inspector. 7. Move the vertical scroll bar down to the bottom. You should see the "UI default" property which is near the end and you should not see "Alias" which is the first property. Adjust the height do that you don't see both properties ! 8. Select "UI default" property, drop down the list bow and select "fasle" 9. You see the object inspector scrolling to the first property Expected: same behaviour as in step A.1: the OI doesn't scroll and simply show the value you changed where you changed it.
|
| QC #: |
Date Reported: |
Area: |
|
2008-06-06 |
Modeling |
| Description: |
Steps: |
| Delphi Win32, .Net: Subrange types: show subrange type definition in the diagram instead of System.Integer. |
enum E1 = (a, b, c, d, e, f); MySubrange = b..e;
In this case MySubrange type is shown on the diagram (1) as typedef, (2) with System.Integer as a type. Object Inspector shows correct value "b..e". |
| QC #: |
Date Reported: |
Area: |
|
2008-06-16 |
Modeling\Inspector |
| Description: |
Steps: |
| C++ Builder: Add visibility property for nested structs, unions, enumerations. It should be behaviour as for classes. |
|
| QC #: |
Date Reported: |
Area: |
|
2008-06-26 |
Modeling\Inspector |
| Description: |
Steps: |
| C++ Builder: Inspector: It should be possible to set multiple inheritance for classes and structs via extends property in OI |
Since classes can have more than one parent- it should be possible to set parents via Extends property in OI like Implements property for Classes in Delphi (Select Interfaces to Implement dialog) |
| QC #: |
Date Reported: |
Area: |
|
2008-06-26 11:11:51 AM |
VCL\Ribbon Controls |
| Description: |
Steps: |
| Resizing of Ribbon causes a lot of flicker |
Create a new VCL App Add a ActionManager, set Style = Ribbon - Luna Add a Ribbon Add a Tab, add a group
Resize the form in the designer
//flicker re-painting the bar
Run the app resize the form //flicker occurs at runtime as well. |
| QC #: |
Date Reported: |
Area: |
|
2008-07-31 4:48:46 PM |
IDE\Translation Tools\Repository |
| Description: |
Steps: |
| Translation Repository must opens empty and have no information in default.tmx file at first time after install RAD. |
install RAD open Translation repository from ETM or RAD \\ or see default.tmx on disk
see that there is two unnecessary translation strings: Japanese: UTF-7 and German: UTF-7
UPD. On 12.0.3139.16067.1 build: there is related problem with refresh in Translation repository: so, if user try to add several strings in default repository(that contains Jap and Germ translations as described above) - only part of strings is visible, re-save and re-open tmx file needed. if repository is non-default - any other tmx or default was clear and save before adding - there is no refresh problems
|
| QC #: |
Date Reported: |
Area: |
| 65345 |
2008-08-06 |
RTL\Delphi\Format + Float |
| Description: |
Steps: |
[QC Short Description] CurrToStrF incorrectly works with international CurrencyString
QC Entry 65345
|
Compile and run the attached application below.
See the following program output indicating failure.
FAIL Expected =0?. #48#64#4 Actual =0@? #48#1088#46
program BTS263667;
{$APPTYPE CONSOLE}
uses Windows, SysUtils;
function StringToOrd(const Value: String): String; var C: Char; begin Result := ''; for C in Value do Result := Result + Format('#%d',[Ord(C)]); end;
procedure DoIt; var a: currency; f: TFormatSettings; s,s1: string; RetVal: String; begin GetLocaleFormatSettings(CP_ACP,f); f.CurrencyString:=#1088#46 ;// '?.'; f.CurrencyFormat := 1; // 1 = '1$' a := 0; s := CurrToStrF(a,ffCurrency,0,f); s1:=CurrToStr(a)+f.CurrencyString; if S <> S1 then begin WriteLn('FAIL'); WriteLn(' Expected =', S1, ' ', StringToOrd(S)); WriteLn(' Actual =', S, ' ', StringToOrd(S1)); end else WriteLn('PASS'); end;
begin try DoIt; except on E: Exception do WriteLN('FAIL Exception=', E.ClassName, '/', E.Message); end; end.
|
| QC #: |
Date Reported: |
Area: |
|
2008-08-12 5:45:31 PM |
Modeling |
| Description: |
Steps: |
| Delphi Win32. Remove fields from globals entries completely. Now if all fields of one type are removed, keywords are kept. |
1. add e.g. code:
var A:Integer; resourcestring B='test';
as globals to any namespace
2. Go to Model view or Class Explorer> expand globals entry for this NS > RClick on A or B > Delete.
Result: var/resourcestring keywords are not removed from source code.
Note: if add field e.g. by Model View and then use Undo - field would remove completely
|
| QC #: |
Date Reported: |
Area: |
|
2008-08-22 8:25:03 AM |
VCL\Ribbon Controls |
| Description: |
Steps: |
| Changing TRibbon.Font does not change Font of TRibbonApplicationMenuBar. Moreover, TRibbonApplicationMenuBar does not have Font property and ParentFont property. So it cannot show Surrogate Pair or Combining Characters on its items. |
1. Create new VCL Form Application. 2. Drop a Ribbon on Form 3. Create an ApplicatiomMenuBar and an item on it. 4. Set "Meiryo" to Ribbon.Font.Name. 5. Set #$D842#$DFB7 to the caption of item. 6. Display the item of ApplicatiomMenuBar.
You will find that Surrogate Pair is displayed as rectangle. |
| QC #: |
Date Reported: |
Area: |
|
2008-08-22 2:11:53 PM |
VCL\Ribbon Controls |
| Description: |
Steps: |
| Quick Access Toolbar doesn't have a caption in the ActionManager customize dialog box at Runtime. |
1. New vcl forms app. 2. Add an action manager. 3. Add a Ribbon. 4. Add a Quick Access Toolbar to the Ribbon. 5. Run 6. Click the Arrow on the QAT, select More Commands... 7. Switch to the Toolbars tab.
//exp: The "Quick Access Toolbar" is one of the available toolbars. //act: There is one option in the list, but it has no text label.
|
| QC #: |
Date Reported: |
Area: |
|
2008-08-22 2:54:23 PM |
VCL\Ribbon Controls |
| Description: |
Steps: |
| A group cannot have one csText and two csControls with TRibbonSpinEdit if the csControl items have images. |
1. Load the attached Project. 2. Select "Row 2" on the Group. 3. Set Image Index to 0. //exp & act: the image is displayed to the left of "Row 2" 4. Select "Row 3" on the group. 5. Set Image Index to 1. //exp & act: the image is displayed to the left of "Row 3" 6. Run. //exp: The Runtime form is displayed the same as the designtime. //act: Row Three was forced to a new column
(same thing happens if you set the image for Row 1 & 2, or 1 and 3) |
| QC #: |
Date Reported: |
Area: |
|
2008-08-27 4:18:13 PM |
Modeling\Class Diagram |
| Description: |
Steps: |
| Delphi:Class Diagram: Make unified behaviour for rerouting generalization and implementation links |
now the following beviour for reroute target of generalization link:
1. change target to: - from class to class-> it is done normally - from class to interface -> generalization link transforms to implementation link
beviour for reroute target of implementation link:
2. change target to: - from class to interface -> it is done normally - from class to class-> implementation link is disappeared
exp: It should be unified behaviour for both types of links:
1. it should be not allowed to reroute generalization link from class to interface 2. it should be not allowed to reroute implementation link from interface to class
|
| QC #: |
Date Reported: |
Area: |
|
2008-08-28 6:11:36 PM |
Modeling\Class Diagram |
| Description: |
Steps: |
| Delphi:Class Diagram: Remove generalization link from previous location after reroute action to other class |
1. create following code
unit ns;
interface
type C = class end;
A = class(C) end;
I1 = interface end;
B = class(TInterfacedObject, I1) end;
implementation end.
2. go to diagram -> select generalization link between A and C classes 3. change source of generalization link to B class
act: generalization link beetween Aand C is not disappeared. Go to source code - Code is correct. Reload action helps. |
| QC #: |
Date Reported: |
Area: |
|
2008-08-29 10:25:48 AM |
VCL\Ribbon Controls |
| Description: |
Steps: |
| When a Ribbon form is designed to be small on startup, the half of the ApplicationMenu button is erroneously shown on the titlebar. |
1. New VCL Forms App. 2. Add an ActionManger. 3. Add a Ribbon. 4. Add a Application Menu to the ribbon. 5. Set the form's width to less than 300 pixels or the height to less than 250 pixels. 6. Run //exp: The Ribbon is not shown, leaving more room for the document. //act: The ribbon isn't shown, but half of the Appliaction menu is showing, overlapping the default system icon and part of the window caption.
|
| QC #: |
Date Reported: |
Area: |
|
2008-08-29 11:15:25 AM |
IDE\Code Completion |
| Description: |
Steps: |
| Code completion shows enumeration members in the list of available symbols for VCL classes that have enumeration properties. |
File | New | C++ VCL Application. Drop a TEdit on the form. Double click the form to get FormCreate event handler. type: Edit1-> // code completion window comes up These choices appear under the Align property: alNone, alTop, alBottom, alLeft, alRight, alClient, alCustom and scoped versions underneath that: TAlign::alNone, TAlign::alTop, etc.
Notice there are a LOT of them...
Select TAlign::alNone Make // [BCC32 Error] Unit1.cpp(20): E2312 'alNone' is not an unambiguous base class of 'TEdit' |
| QC #: |
Date Reported: |
Area: |
|
2008-09-02 |
VCL\Ribbon Controls |
| Description: |
Steps: |
AV when select "Delete Help Tip" in Edit Screen Tips dialog if the Category node is focused.
--------------------------- Error --------------------------- Access violation at address 117155E0 in module 'vclribbon120.bpl'. Read of address 00000008. --------------------------- OK Details >> --------------------------- [117155E0]{vclribbon120.bpl} ScreenTips.TCustomScreenTipsManager.RemoveScreenTip (Line 868, "ScreenTips.pas" + 4) + $5 [0F3C4C23]{dclribbon120.bpl} ScreenTipsEditForm.TfrmScreenTipsEdit.aEditDeleteExecute (Line 280, "screentipseditform.pas" + 3) + $8 [5005710B]{rtl120.bpl } Classes.TBasicAction.Execute (Line 12221, "Classes.pas" + 3) + $7 [501E84A5]{vcl120.bpl } ActnList.TContainedAction.Execute (Line 448, "ActnList.pas" + 8) + $2C [501E9288]{vcl120.bpl } ActnList.TCustomAction.Execute (Line 1094, "ActnList.pas" + 7) + $8 [50056FCF]{rtl120.bpl } Classes.TBasicActionLink.Execute (Line 12150, "Classes.pas" + 2) + $7 [211D9635]{vclactnband120.bpl} ActnMenus.TCustomActionMenuBar.ExecAction (Line 1064, "ActnMenus.pas" + 6) + $D [211DAAEB]{vclactnband120.bpl} ActnMenus.TCustomActionMenuBar.TrackMenu (Line 1746, "ActnMenus.pas" + 15) + $15 [211DE044]{vclactnband120.bpl} ActnMenus.TCustomActionMainMenuBar.TrackMenu (Line 3472, "ActnMenus.pas" + 3) + $3 [211D91FD]{vclactnband120.bpl} ActnMenus.TCustomActionMenuBar.CMItemClicked (Line 943, "ActnMenus.pas" + 3) + $4 [501D0BFA]{vcl120.bpl } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6 |
1. File | New | VCL Application 2. drop a TScreenTipsManager and TActionList 3. double click ActionList1, Add 3 category standard action : Edit, Format, Window 4. in OI, click [...] ScreenTipManager.LinkActionList 5. click Add button in Colloction dialog 6. in OI, set ScreenTipsManager1.LinkedActionList[0].ActionList as ActionList1 7. double click TScreenTipsManager to popup Edit Screen Tips dialog 8. click Generate button 9. on left side TreeView, Expand Edit node 10. click menu Edit // "Delete Help Tips" submenu should be disabled 11. on Treeview, select EditCut1 12. click menu Edit: // "Delete Help Tips" submenu is enabled. 13. on Treeview, select "Edit" node 14. click menu Edit: // "Delete Help Tips" should be disabled when Treeview is focus on a category node? It is not disabled right now.
15. select "Delete Help Tip" // AV Access violation at address 117155E0 in module 'vclribbon120.bpl'. Read of address 00000008.
|
| QC #: |
Date Reported: |
Area: |
|
2008-09-02 6:39:05 PM |
VCL\Ribbon Controls |
| Description: |
Steps: |
| Copying and pasting a ribbon group gives it the same GroupIndex as the original group. It should be (if possible) a unique to Index to the page it was pasted into. |
1. New VCL Forms app. 2. Add a Ribbon. 3. Add a Tab 4. Add a Group. 5. Copy the Group. 6. Paste it onto RibbonPage1. //exp: The new Group has a new GroupIndex ( GroupIndex = 1) //act: the new Group's GroupIndex = 0, the same as the original
|
| QC #: |
Date Reported: |
Area: |
|
2008-09-04 3:36:52 PM |
Modeling\Class Explorer |
| Description: |
Steps: |
Class Explorer fails to show any info for large units
Attached to this bug are 2 units that show this. One is a contrived unit (LongUnit.pas). The other is an actual IDE source file (WinMsg.pas)
Looks like any file whose size is greater than 65535 fails to show up |
Create a new Delphi project Add both of the attached units to the project View | Delphi class Explorer
Note that it only shows a node for Project1
If you start removing large chunks of code from either unit, eventually that unit will show up in the explorer
TEST CASE 2: In dev build, create a new delphi project Project | Add to project Navigate to $(TP)\app\debugger directory Select every .PAS file and click Open Ignore any errors that appear (for form loading) Look at the delphi class explorer Any unit whose size is greater than 65535 fails to show up:
4/29/08 14:53 68,849 dbk.pas 3/25/08 16:23 74,834 DebuggerMgr.pas 8/07/08 13:59 78,670 Win32Debug.pas 8/19/08 15:37 87,692 DbkDebugOpts.pas 7/09/08 11:16 94,523 DbgInsp.pas 11/30/07 9:33 110,545 WinMsg.pas 8/19/08 15:57 391,569 Debug.pas |
| QC #: |
Date Reported: |
Area: |
|
2008-09-04 |
VCL\Ribbon Controls |
| Description: |
Steps: |
When TScreenTipsManager.LinkedActionLists do not have any items, or has items, but the item's ActionList property did not assign any value, application will crash at close if the "Quick Access menu" has been drop down.
--------------------------- Application Error --------------------------- Exception EAccessViolation in module Project2.exe at 00021D10.Access violation at address 00421D10 in module 'Project2.exe'. Read of address 00000008. --------------------------- OK ---------------------------
|
1. File | New | Delphi | VCL Application 2. drop TActionManager, and TRibbon, and TScreenTipManager 3. right click Ribbon1, select Add Quick Access Toolbar 4. Run 5. click Quick Access arrow. 6. either you let drop down menu close or not, click [X] of the window // application crash.
--------------------------- Application Error --------------------------- Exception EAccessViolation in module Project2.exe at 00021D10.Access violation at address 00421D10 in module 'Project2.exe'. Read of address 00000008. --------------------------- OK ---------------------------
|
| QC #: |
Date Reported: |
Area: |
|
2008-09-05 2:55:07 PM |
Modeling\UML Diagrams |
| Description: |
Steps: |
| Delphi:UML Diagrams: It should be possible to add UML diagram in following case |
I have two projects. The first one defines class diagrams and their > code counterparts (VCL application : JSetup). The second project > (Console application [*]: JSetupDesign) defines sequence and activity > diagrams. However if I add a new diagram into my second project (using > a namespace btw) - it doesn't matter what type - I can see the working > area of the new diagram. Furthermore the currently added diagram has > no name in the model view tree. It is just a blank name. If I try to > change the name, it is denied : "Property value cannot be set"
> Eventually if I try to add any UML component (say a little man symbol > for use cases) the diagram item is removed from the model view tree > view and is replaced with the UML symbol that I just added. > I must say that I did not encounter this behaviour in the first > project - yet. > Saving and reopening the project leads to the fact that the diagram > isn't shown anymore but the file in the project folder still exists.
[saa]: The first problem is reproduced with the similar results. 1. problem is reproduced if only project group JSetupProjectGroup is opened 2. attempt to add design diagram to JSetupDesign(contains only diagrams, no source code elements) -> work area is opened but no added diagram in model view tree(files in project folder are created)
WORKAROUND: 1) Reload has no action. 2) If we add new namespace - diagrams is added to this namespace correctly. 3) If we open JSetupDesign separately from project group- diagrams are added normally 4) for JSetup project - diagrams are created normally I found that project is corrupted after add modeling action to JSetup project, that is 1 case: run project group: JSetup project- modeling is off (Model support files are removed), JSetupDesign project- modeling is on(Model support files are original) in this case UML diagrams are added correctly
2 case: if switch on Modeling on JSetup - project fails |
| QC #: |
Date Reported: |
Area: |
|
2008-09-08 10:39:42 AM |
RTL\Delphi\Other Classes\TEncoding |
| Description: |
Steps: |
| Unicode and BigEndianUnicode encodings return incorrect result from GetChars if length of CharArray is longer than the minimum required length. |
program Project105;
{$APPTYPE CONSOLE}
uses SysUtils;
var B: TBytes; C: TCharArray; I: Integer; LEncoding: TEncoding; begin try LEncoding := TEncoding.Unicode; B := LEncoding.GetBytes('Hello'); SetLength(C, 100); I := LEncoding.GetChars(B, 0, Length(B), C, 0); Writeln('Exp: ', LEncoding.GetCharCount(B), ' Act: ', I); except on E:Exception do Writeln(E.Classname, ': ', E.Message); end; Readln; end.
|
| QC #: |
Date Reported: |
Area: |
|
2008-09-08 4:04:04 PM |
RTL\Delphi\Other Classes\TEncoding |
| Description: |
Steps: |
| TCharArray overload of TEncoding.GetByteCount doesn't perform bounds checking on the parameters. |
Compare TEncoding.GetByteCount(TCharArray) with Compare TEncoding.GetByteCount(string)
(JJS: as seen below.)
No checks made in the first overload of GetByteCount using TCharArray, but three bounds checks made on the GetByteCount using string.
<From SysUtils.pas>
function TEncoding.GetByteCount(const Chars: TCharArray; CharIndex, CharCount: Integer): Integer; begin Result := GetByteCount(@Chars[CharIndex], CharCount); end;
function TEncoding.GetByteCount(const S: string; CharIndex, CharCount: Integer): Integer; begin if CharIndex < 1 then raise EEncodingError.CreateResFmt(@SCharIndexOutOfBounds, [CharIndex]); if CharCount < 0 then raise EEncodingError.CreateResFmt(@SInvalidCharCount, [CharCount]); if (Length(S) - CharIndex + 1) < CharCount then raise EEncodingError.CreateResFmt(@SInvalidCharCount, [CharCount]);
Result := GetByteCount(PChar(@S[CharIndex]), CharCount); end;
|
| QC #: |
Date Reported: |
Area: |
|
2008-09-08 9:40:20 PM |
VCL\Additional Controls\Action Bar Controls |
| Description: |
Steps: |
| Resizing the IDE smaller causes the main menu to become narrow hiding most of the menu, while making it wider and it doesn't come back. |
1. Run bds. 2. Restore the window so it is not maximized. 3. Resize the window so it is very narrow (drag the right handle horizontally to the left). //The bar containing the menu resizes horizontally, obscuring most of the menu items. 4. Resize the window so it is wide again. //exp: the menu becomes visible again. //act: the parts of the menu that were hidden remain hidden.
** OR **
- Same steps with attached test case |
| QC #: |
Date Reported: |
Area: |
|
2008-09-10 10:34:52 AM |
Internet\XML\Data Binding |
| Description: |
Steps: |
| XML Databinding wizard hangs when trying to create a binding for bdsconfig.xml |
Run the wizard and try to create a binding for template\bdsconfig.xml (attached). |
| QC #: |
Date Reported: |
Area: |
|
2008-09-10 3:32:28 PM |
Internet\XML\Data Binding |
| Description: |
Steps: |
| The backspace key and some other editing keys are not being allowed in the XML Databinding Wizard options dialog. |
Bring up the wizard. Click the options button. Select the InitfPrefix entry. Press backspace to try and delete the XML letters. |
| QC #: |
Date Reported: |
Area: |
|
2008-09-11 11:03:09 AM |
RTL\Delphi\Format + Float |
| Description: |
Steps: |
FloatToText fails with CurrencyString longer than 1 character because the Ansi version of the function is called from the "Unicode" version.
The Ansi version of FloatToText needs to convert the CurrencyString to an Ansi string before using it.
Workaround:
After assigning CurrencyString, add this line:
AnsiString(Pointer(CurrencyString)) := AnsiString(CurrencyString);
Original description: FloatToStrF fails with ffCurrency on some locales
|
Add to an event handler:
CurrencyString := 'R$'; ShowMessage(FloatToStrF(42, ffCurrency, 15, 2));
It displays "R" (string is truncated). In a DbGrid you get squares/random unicode chars. |
| QC #: |
Date Reported: |
Area: |
| 66687 |
2008-09-12 |
Compiler\Delphi |
| Description: |
Steps: |
[QC Short Description] IDE hangs when trying to compile certain files
[QC Description] This is an error from the newsgroups. The files that come with this report as attachment will hang the IDE (it ismply does not respond anymore, and will remain in this state until you kill it) if you do a Build project. But only if the file msg_dat.pas is NOT open in the editor. QC Entry 66687
|
- Unzip attached project to its own directory
- Start Delphi 2009
- Open the .dpr or .dproj file of the project
- DO NOT open any of the units - Unit6 will be displayed automatically, but do not open the others
- Do a Project / Build
Exp: compiles with a few warnings
Act: shows a few warnings, and then IDE stops reacting.
The error does not happen if msg_dat.pas is open in a tab in the IDE! |
| QC #: |
Date Reported: |
Area: |
| 65342 |
2008-08-06 |
IDE\ToDoList |
| Description: |
Steps: |
[QC Short Description] Automated Incident Report
[QC Description] System Error. Code: 288. Attempt to release mutex not owned by caller.
IDE froze while editing. QC Entry 65342
|
1) IDE froze while editing.
2) I used Process Explorer to kill the following two threads (stack dump):
ntdll.dll!KiFastSystemCallRet
USER32.dll!GetLastInputInfo+0x105
ole32.dll!CoUnmarshalInterface+0x13e2
ole32.dll!CoWaitForMultipleHandles+0xe6
rtl120.bpl!$xp$29Syncobjs+0x28f
rtl120.bpl!Syncobjs+0x20
todoide120.bpl!Idetodolist+0x25
coreide120.bpl!Docmodul+0x2f
ntkrnlpa.exe+0x6dbeb
ntkrnlpa.exe+0x2b462
ntkrnlpa.exe+0x2bd44
ntkrnlpa.exe+0x13d8a3
ntkrnlpa.exe+0x6986c
ntdll.dll!KiFastSystemCallRet
kernel32.dll!Sleep+0xf
bordbk120N.dll!isDbkLoggingOn$qv+0x2d3cc
bordbk120N.dll!POSTEDHOOKPROC+0xe4cd
bordbk120N.dll!POSTEDHOOKPROC+0xe507
kernel32.dll!GetModuleFileNameA+0x1b4
3) IDE awoke with the reported error. I assume I can now save my work and restart the IDE. |
| QC #: |
Date Reported: |
Area: |
| 66782 |
2008-09-15 |
IDE\Project Management\Project Source |
| Description: |
Steps: |
[QC Short Description] Dot (.) is not allow in LIB Prefix
[QC Description] In Delphi 2007, I use LIB Prefix in Project Option setting to let compiler compile package library file with prefix added to the file name.
I used to put a dot (.) to split the prefix and package name. (e.g.: SQL.MyPackage.bpl where SQL. is prefix)
However, Delphi 2009 does not allow me to do so. QC Entry 66782
|
1. Open Delphi 2009 IDE
2. Click File | New Package
3. Click Project | Options...
4. Select "Description" page, enter "SQL." in LIB Prefix and press OK
5. A dialog prompt "Name cannot contain any of the following characters: < > : * | ? * . \ /" |
| QC #: |
Date Reported: |
Area: |
|
2008-09-15 2:17:37 PM |
Compiler\Delphi\Anonymous Methods |
| Description: |
Steps: |
| Overload resolution involving anonymous methods fails to compile certain code constructs. |
Try to build this:
program Test;
uses SysUtils;
type TInvoke = class class function BeginInvoke(Proc: TProc; Context: TObject = nil): Integer; overload; static; class function BeginInvoke<T>(Func: TFunc<T>; Context: TObject = nil): Integer; overload; static; end; { TInvoke } class function TInvoke.BeginInvoke(Proc: TProc; Context: TObject): Integer; begin Proc(); Result := 1; end; class function TInvoke.BeginInvoke<T>(Func: TFunc<T>; Context: TObject): Integer; var R: T; begin R := Func; Result := 1; end; begin TInvoke.BeginInvoke<string>(function: string begin Result := 'Test'; end); //<-- E2250 There is no overloaded version of // 'TInvoke.BeginInvoke<System.string>' that can be // called with these arguments end.
|
| QC #: |
Date Reported: |
Area: |
|
2008-09-18 10:31:06 AM |
Compiler\Delphi\Generics |
| Description: |
Steps: |
| When a generic type declares a private const, using that const within the body of a method on the generic type, causes the compiler to crash when instantiating the type. |
Compile the following:
See the following compile output indicating failure.
Fatal: F2084 Internal Error: AV00000000-R00000000-0
program Project4;
{$APPTYPE CONSOLE}
uses SysUtils;
type TFoo<T> = record strict private const FData: record FField1: Word; FField2: Word; FField3: Integer; end = ( FField1: SizeOf(Char); FField2: 0; FField3: -1); strict private FValue: T; FDataField: Pointer; public constructor Create(const AValue: T); end;
{ TFoo<T> }
constructor TFoo<T>.Create(const AValue: T); begin FValue := AValue; FDataField := @FData; end;
var Foo: TFoo<Integer>;
begin try Foo := TFoo<Integer>.Create(10); { TODO -oUser -cConsole Main : Insert code here } except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
|
| QC #: |
Date Reported: |
Area: |
|
2008-09-18 10:43:39 AM |
VCL\Emulation Classes |
| Description: |
Steps: |
| This is a follow-up t_str() issue. |
UnicodeString::c_str() must return wchar_t* ===== ALWAYS =====
So you should be able to execute code like this:
UnicodeString str("This is a test"); wchar_t buffer[1024];
wcscpy(buffer, ustr.c_str());
And when TCHAR mapping is set to wchar_t, the wcscpy can be changed to _tcscpy instead, as in:
_tcspy(buffer, ustr.c_str());
|
| QC #: |
Date Reported: |
Area: |
|
2008-09-18 2:32:19 PM |
RTL\Delphi\Format + Float |
| Description: |
Steps: |
| FloatToText and FloatToTextFmt don't support Unicode (calls Ansi version of the function). This causes Unciode characters in CurrencyString, DecimalSeparator or ThousandSeparator to fail. |
Add to an event handler:
CurrencyString := #$20A0; ShowMessage(FloatToStrF(42, ffCurrency, 15, 2));
and
ShowMessage(FormatFloat(#$20A0'##.00#############', 42.0));
It displays "?42.00" instead of the proper Unicode character. |
| QC #: |
Date Reported: |
Area: |
| 66919 |
2008-09-18 |
Compiler\Delphi |
| Description: |
Steps: |
[QC Short Description] Generics : compilation failure with const parameters
[QC Description] I encountered several cases of compilation failure of otherwise completely valid code when trying to port my list "templates" (using include tricks) to generics.
I managed to write some minimal code to reproduce the problem, the compiler fails with error E2037.
"[DCC Erreur] Crash.pas(33): E2037 La d�claration de 'DoNotCompile' diff�re de la d�claration pr�c�dente"
Note that changing "const" to "var" or removing the empty procedure or removing the a or b field will allow the code to compile.
For my full project I did not found an appropriate workaround (don't want to pass the argument as VAR and want to avoid a copy). QC Entry 66919
|
UNIT Failure;
INTERFACE
TYPE
Failure<T> = RECORD
{----------------------}
PUBLIC
TYPE
TAux = CLASS
PRIVATE
FInt : integer;
PUBLIC
PROCEDURE Empty;
END;
PRIVATE
A, B : INTEGER;
PUBLIC
PROCEDURE DoNotCompile (CONST AVal : Failure<T>);
END;
IMPLEMENTATION
PROCEDURE Failure<T>.TAux.Empty;
BEGIN
FInt := 3;
END;
PROCEDURE Failure<T>.DoNotCompile(CONST AVal : Failure<T>);
BEGIN
A:=0;
B:=0;
END;
END.
|
| QC #: |
Date Reported: |
Area: |
| 67043 |
2008-09-22 |
ActiveX |
| Description: |
Steps: |
[QC Short Description] Events of TCppWebBrowser are invoked with bogus parameters
[QC Description] When events of the TCppWebBrowser are invoked, all passed parameters except for the this pointer (which is included in the closure pointer and not gathered by the invoke mechanism) contain bogus.
Following the stack trace down to TOleControl.InvokeEvent reveals that Params.cArgs is 0.
My system is Windows Server 2003 SP2, IE6, but the problem occurs on Windows XP SP3, IE6 as well.
(I placed it in the ActiveX area as I don't know whether it is a code generator or a framework issue.) QC Entry 67043
|
- Create a new C++Builder project
- Drop a TCppWebBrowser component on the form.
- Use the object inspector to generate an OnTitleChange event.
- Change your source code to this:
...
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
CppWebBrowser1->Navigate (WideString (L"http://www.codegear.com/").c_bstr ());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CppWebBrowser1TitleChange(TObject *Sender, BSTR Text)
{
Caption = Text;
}
...
- Now run the application.
Exp.: The form caption changes to "CodeGear Home Page".
Act.: The form caption changes to a random string.
When setting a breakpoint in the OnTitleChange event, the stack trace/locals view shows that TOleControl.InvokeEvent assumes that the event has zero parameters and therefore passes no arguments.
Interestingly, everything works well when using the Delphi equivalent, the TWebBrowser component. Re-importing TCppWebBrowser, however, results in the same problem. |
| QC #: |
Date Reported: |
Area: |
|
2008-09-22 10:06:24 AM |
IDE\Build Tools |
| Description: |
Steps: |
From the public forums:
VCL applications built with C++ Builder 2009 don't seem to run on Windows 98 (SE), at least on the one system I tested. A new VCL application with a single blank form crashes before the form is displayed. However, applications built with C++ Builder 2007 do run without problem on Windows 98. ----- I did a quick test with Win98. Sure enough, running a BCB2009 .exe produces 3 exceptions at startup (2 0xeedfadeH in the .exe 1 0xc0000026H in kernel32.dll). That is not how it is supposed to work. |
New VCL application Copy to a system with win98 / NT 4 or earlier version of windows. Run the app. // exp: message from the loader indicating the application does not run on this version of windows. // Act: AV.
|
| QC #: |
Date Reported: |
Area: |
|
2008-09-23 6:35:31 PM |
IDE\Translation Tools\Repository |
| Description: |
Steps: |
ITE can not look up a translated string from repository if the original string is multi-line text.
|
Replace default.tmx with an attached .ZIP file. This repository contains four languages (EN/JP/DE/FR) resource string from our RTL source codes by RTM version.
Create VCL/W32 application, then Add Japane localized resource.
Almost string resources are translated automatically using Default.TMX, but three strings are not translated. ITE does not find these strings from repository.
|
| QC #: |
Date Reported: |
Area: |
| 66804 |
2008-09-15 |
IDE\Build Tools |
| Description: |
Steps: |
[ Actual problem ] Adding a build event to a Delphi or C++Builder project corrupts the ordering of data in the project file - MD
[QC Short Description] IDE does not respect per-project unit search path configuration
[QC Description] When build scripts are used, the IDE seems to ignore per-project custom unit search path, and does not pass them to the compiler.
When a set of units is present in the default search path, but a project depends on a different version of those units that are located in a different directory, because unit search path override does not function correctly, compilation will fail. QC Entry 66804
|
Create a new project;
Go to [Project Options] - [Delphi Compiler];
In the "Base" build configuration, type a custom directory in the "Search path" field;
Try to build the project;
In the "Output" window, locate the dcc32 compilation commandline;
Check the -U parameter clause, you will not see the custom directory you just typed in.
Updated steps (please read my comment):
** Before building the project, add something in the conditional defines and build script.
For example, define ABCD; and in pre-build script, add: echo $(DEFINES)
In addition, sometimes this problem seems to occur on the second+ build attempt, not the first.
i.e. Load the project, build it once and everything works, but then build again, you get error.
If it functions OK, the compilation commandline looks like:
...dcc32.exe ... --no-config ... -U "costum path"; ...
But when it malfuntions, the compilation commandline looks like:
...dcc32.exe ... --platform:x86 ... -U ...
(the custom path defined for the project is missing) |
| QC #: |
Date Reported: |
Area: |
|
2008-09-24 11:15:33 AM |
ActiveX\Code Generators\TLibImp frontend |
| Description: |
Steps: |
When importing the ER Studio type library the CoClass Shape is wrapped in TShape which conflicts with the VCL component TShape.
Test with both Delphi and C++ |
1. Component | Import Component 2. Choose ER Studio (C:\Program Files (x86)\Embarcadero\ERStudio7.6DE\ERSTUDIODE.exe) (.tlb can be found under testdata of automation) 3. Install into new package
//exp: For the install to work //act: Error that a comment isn't commented and that TShape conflicts with TShape |
| QC #: |
Date Reported: |
Area: |
|
2008-09-24 5:48:53 PM |
IDE\Code Browsing |
| Description: |
Steps: |
| Code navigation does not work in headers that aren't part of the project. |
File | New C++ App Double click the new form to get to source. Add "#include <iostream>" Add "istream is;" Ctrl-Click on "istream" //Exp & Act: navigate to root definition of istream (basic_istream) in iosfwd. Ctrl-Click on "char_traits<char>" in that definition // Exp: navigates to definition of char_traits // Act: Nothing happens. |
| QC #: |
Date Reported: |
Area: |
| 67227 |
2008-09-26 12:55:14 PM |
ActiveX\IDE\Wizards\Transactional Object |
| Description: |
Steps: |
Transactional Model and Generate Event support code doesn't work on the Transactional Object.
Another bug logged for C++ edition of this bug |
1. File | New ActiveX Library 2. File | New Transactional Object 3. Set Transactional Model to something other than the default 4. Check Generate Event Support code
//exp:Event code is generated and a custom guid is added to the Transactional Object's CoClass in the type library //act: nothing |
| QC #: |
Date Reported: |
Area: |
|
2008-09-27 1:24:12 AM |
Modeling |
| Description: |
Steps: |
| Restore DesignPatterns functionality after fix rev.17266 |
1) Most DesignPatters tests failed 2) - Create C++ project with Namespece1, Class1 in this namespace, Attribute1 in this class - change using Inspector Attribute1 type to Class1* Result: Error dialog apperas - cannot set ... - this is bug
fixed in rev.17292 in the branch In the trunk - buggy revision rev.17267, fixed 17306 |
| QC #: |
Date Reported: |
Area: |
|
2008-09-26 9:00:43 PM |
Internet\XML\Data Binding |
| Description: |
Steps: |
| Accesing the options for the XML Databinding Wizard on a second use will result in a list index out of bounds error. |
1) New Delphi VCL Forms app.
2) File | New | Other | Delphi Projectes | XML | XML Data Binding 3) Click the "Options" button 4) Click Cancel 5) Click Cancel
repeat from step 2.
At step 3 a "list index out of bounds error" is raised. |
| QC #: |
Date Reported: |
Area: |
|
2008-09-28 10:06:53 AM |
CodeGuard |
| Description: |
Steps: |
Japanese / Patch 3190.17285.1
Cannot start CodeGuard configuration, result in below error, see also attached screen shot. DE/EN/FR are OK.
--------------------- cgconfig.exe --------------------- abnormal program termination OK ---------------------
Note: US (and other localized version) has a problem in caption of CgCOnfig. The caption should be "- Global options" as default. But Tiburon Patch version may display "- options". "Global" is lacked!
|
- install Tiburon patch (Setup.3190.17285.1.exe) over RTM (3170.16989.1b.iso) JA version. - launch the IDE - Tools | CodeGuard configuration
Exp: show configuration dialog Act: abnormal program termination
|
| QC #: |
Date Reported: |
Area: |
| 67284 |
2008-09-29 |
Compiler\Delphi |
| Description: |
Steps: |
[QC Short Description] F2084 Internal Error: URW6343 (Generics/Anonymous methods)
[QC Description] The Delphi compiler fails with an "Internal Error: URW6343" if you use "Make Project". "Build Project" compiles without any error. QC Entry 67284
|
1. Extract the attached project
2. Open it in the Delphi 2009 IDE
3. Do a "Build Project"
4. Do a "Make Project"
Expected:
Both compilation finish without any error
Actual:
The "Make Project" fails with "F2084 Internal Error: URW6343"
Smaller test case and command line steps by Uwe Schuster:
unit AsyncCalls;
interface
type
TMultiArgProcCall<TProc, T1, T2, T3> = class(TObject);
TAsyncCalls = class(TObject)
private
type
TAsyncCallArgGenericMethod<T1, T2, T3> = function(Arg1: T1; Arg2: T2; Arg3: T3): Integer of object;
TAsyncCallArgMethod<T1, T2, T3> = class(TMultiArgProcCall<TAsyncCallArgGenericMethod<T1, T2, T3>, T1, T2, T3>);
public
end;
implementation
end.
program GenericsURW6343;
{$APPTYPE CONSOLE}
uses
AsyncCalls;
begin
WriteLn('PASS');
end.
Steps:
- dcc32 -B GenericsURW6343.dpr
- dcc32 -M GenericsURW6343.dpr
expected: it compiles
actual: GenericsURW6343.dpr(6) Fatal: F2084 Internal Error: URW6343
|
| QC #: |
Date Reported: |
Area: |
|
2008-10-01 6:35:36 PM |
Install |
| Description: |
Steps: |
Installer set boost_setup.exe for \\HLM\Software\CodeGear\BDS\6.0\AutoRun\UpdateCheck\ProgramToRun instead of setup.exe and result in always be invoked Modify/Repair/Uninstall dialog of boost_setup.exe when launching the IDE, see attached screen shots.
Issue occured on EN/JA/DE version, it may also happen on FR although did not checked it.
NOTE: it seems to same problem happen during FT period, see QC#66490 |
- on clean XP SP3 EN/JA VM - run 12.0.3195.17340.1\Setup.exe with all default as using Architect key - after finish installation, launch the IDE // act: bring up Modify/Repair/Uninstall dialog of boost_setup.exe |
| QC #: |
Date Reported: |
Area: |
|
2008-10-01 3:58:54 PM |
Modeling\Class Explorer |
| Description: |
Steps: |
Delphi. Remove must work neatly when several globals variable in Namespace are placed in one line in code: var A, B, C: integer and then User removes one of them through CE.
|
1. add variables as globals into any namespace: var A, B, C : integer;
2. open Class Explorer, select 'globals Namespace', select e.g B variable form attributes list, RClick> Delete.
Exp. Result: B variable only is removed from source code and CE attributes list
Act Result: a) All three variables are removed from source code b) All three varables aren't removed from CE attributes list c) after double click on any of them in CE attributes list Unhandled exception returns. See details in attached file please.
|
| QC #: |
Date Reported: |
Area: |
|
2008-10-01 4:15:49 PM |
Modeling\Model Tree View |
| Description: |
Steps: |
Delphi. Remove must work correctly when several globals variable in Namespace are placed as one line in code: var A, B, C: integer and then User removes one of them through Model View.
Now all variables are removed from source code. |
1. add variables as globals into any namespace: var A, B, C : integer;
2. open Model View, select 'globals Namespace', select e.g B variable, RClick> Delete.
EXP: B variable only is removed from Model View and from source code
ACT: looks as only B variable is removed from Model View, Ok - but all three variables are removed from source code in fact |
| QC #: |
Date Reported: |
Area: |
|
2008-10-06 3:39:26 PM |
IDE\Project Management |
| Description: |
Steps: |
Package import libraries (.bpi's) added to a non-package project are not linked.
This is especially a problem since changes were made to the runtime package list such that uninstalled packages in it are not explicitly added to the link list. |
Create a new C++ package. Add a unit to it (assume Unit1) Add the following to the unit header: #include <System.hpp> String PACKAGE Echo(String Str);
Add the following to the unit .cpp: String Echo(String Str) { return Str; }
Build the package, but do not install it.
Create a new C++ VCL Forms application Add "#include Unit1.h" (the previously created unit) Double-click the form to get an event handler. Add this code to it: ShowMessage(Echo("Hello World"));
Build. // Exp and Act: Unresolved external "Echo" referenced from Unit2 Add the package's .bpi to the VCL Forms project. Build. // Exp: Links correctly // Act: Same unresolved external because the link line doesn't contain "package.bpi" |
| QC #: |
Date Reported: |
Area: |
|
2008-10-07 |
VCL |
| Description: |
Steps: |
| reorder group do not work any more |
1. File | New | VCL Application 2. drop TRibbon 3. right click select Add "Add Tab" 4. add 3 group 5. right click Ribbon, select "re-order group" 6. select "group2", click Up button, // group2 move up 7. click OK //exp: group2 first, group1 second //act : no change |
| QC #: |
Date Reported: |
Area: |
|
2008-10-08 4:05:19 PM |
VCL\Ribbon Controls |
| Description: |
Steps: |
| Reorder groups shows a "lcomp not found" dialog if the any Group's name doesn't match it's caption. |
1. New VCL Forms App. 2. Add a TRibbon. 3. Add a Tab to the ribbon. 4. Add a two Groups to the tab. 5. Set the captions of the groups to "One" and "Two" 6. Right click the page to the right of the groups and select "Reorder groups" 7. Swap the two groups position. 8. Hit OK. //exp: The Group's order is swapped. //act: Two dialogs come up, "lcomp not found" The groups are not reordered. |
| QC #: |
Date Reported: |
Area: |
|
2008-10-08 4:10:07 PM |
VCL\Ribbon Controls |
| Description: |
Steps: |
| Groups moved to other tabs still show up on the Reorder groups page. |
1. New VCL Forms app 2. Add a Ribbon. 3. Add three tabs to the ribbon. 4. On the First tab, add two groups. 5. Right click the RibbonPage and select "Move Group" 6. Select RibbonGroup2 and RibbonPage2. Click OK. //act&exp: The Group is moved to the second tab. 7. With RibbonPage1 activated, right click it and select "Reorder Groups" //exp: RibbonGroup1 and RibbonGroup3 are the only groups listed. //act: RibbonGroup2 is listed still as well. |
| QC #: |
Date Reported: |
Area: |
| 67632 |
2008-10-07 |
RTL\Delphi\Format + Float |
| Description: |
Steps: |
[QC Short Description] Format "%e" fails for large values
[QC Description] It looks like the bug is connected with new modifications of SysUtils.WideFormatBuf QC Entry 67632 |
Try to execute this code, for example
str := Format( 'Test %14.6e', [Pi*1.0e9] );
or use any other large enough values. There are #0 symbols embedded into resulting string and it causes obvious problems! |
| QC #: |
Date Reported: |
Area: |
| 67876 |
2008-10-14 |
RTL\Delphi\Format + Float |
| Description: |
Steps: |
[QC Short Description] AnsiStrings.Format can't handle floating-point values
QC Entry 67876
|
AnsiStrings.Format can't handle floating-point values correctly; SysUtils.Format can. Here is an example:
procedure TForm1.Button1Click(Sender: TObject);
var s1: AnsiString;
s2: String;
begin
// BAD:
s1 := AnsiStrings.Format('%g_',[3.14]);
// value of s1: '3'#0','#0'_'
// GOOD:
s2 := SysUtils.Format('%g_',[3.14]);
// value of s2: '3,14_'
end;
|
| QC #: |
Date Reported: |
Area: |
|
2008-10-14 10:22:33 AM |
RTL\Delphi\Format + Float |
| Description: |
Steps: |
Format(%g) fails with floating point number when using the TFormatSettings overload.
|
procedure TForm1.Button1Click(Sender: TObject); var s2: String; Fmt: TFormatSettings; begin GetLocaleFormatSettings(GetThreadLocale, Fmt); s2 := SysUtils.Format('%g_',[3.14], Fmt); end;
//Exp: value of s2: '3.14_' //Act: value of s2: '3'#0','#0'_'
|
| QC #: |
Date Reported: |
Area: |
| 67934 |
2008-10-15 |
RTL\Delphi\RTL Exceptions |
| Description: |
Steps: |
[QC Short Description] format with formatsettings problem
[QC Description] When using the SysUtils.Format command with a TFormatSetting parameter, it gives an exception for strings of length >= 4095.
This also affects Indy.
var s : string; fs : tformatsettings; begin GetLocaleFormatSettings(0, fs);
setlength(s, 4094); s := sysutils.format('%s', [s], fs ); //OK
setlength(s, 4095); s := sysutils.format('%s', [s], fs ); //PROBLEM
//Exception message: //Project Project1.exe raised exception class EConvertError with message // 'Format '%s' invalid or incompatible with argument'.
end; QC Entry 67934
|
|
| QC #: |
Date Reported: |
Area: |
|
2008-10-16 2:59:22 PM |
Linker\ILINK32 |
| Description: |
Steps: |
| Linker version is currently 5.95. Needs to be updated to newer version for update. |
|
|
|