Delphi 2009 and C++Builder 2009 Update 1 Bug Fix List
By: Calvin Tang
Abstract: 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 Pag | |