Delphi XE2 and C++Builder XE2 Update 1 Bug Fix List

By: Tim DelChiaro

Abstract: Lists of user reported issues that are fixed in Update 1 for Delphi XE2, C++Builder XE2 and RAD Studio XE2

The following is a list of user reported issues that have been fixed in Update 1 to Delphi XE2, C++Builder XE2 and RAD Studio XE2. You can get the latest updates from the registered user pages for Delphi, C++Builder and RAD Studio.

QC #: Date Reported: Area:
98343 8/30/2011 IDE
Description: Steps:
[QC Short Description]
Access violation in IDE when I tried to open a Delphi Project.

[QC Description]
I tried to open a Delphi Project.

This does not seem to be related to a particular project and it is a bit random. After this error, the IDE "crashed" in an endless loop of AIRs (that could not be sent). When I restarted the IDE I could open the project without problems.

AIR #98287 is probably the same issue or related. It was a different project though.

I've also attached the full stack trace as attachment, because the one in the steps was cut off in the middle.
QC Entry 98343
[5003CC85]{rtl160.bpl } System.@AfterConstruction (Line 14110, "System.pas" + 2) + $5 [50037ADF]{rtl160.bpl } System.@ReallocMem (Line 3634, "System.pas" + 85) + $0 [500417D8]{rtl160.bpl } System.DynArraySetLength (Line 28206, "System.pas" + 66) + $14 [50041825]{rtl160.bpl } System.@DynArraySetLength (Line 28243, "System.pas" + 3) + $0 [0FB0166F]{dclbindcomp160.bpl} System.Generics.Collections. + $23 [0FB01770]{dclbindcomp160.bpl} System.Generics.Collections. + $2C [0FB03D4B]{dclbindcomp160.bpl} System.Generics.Collections. + $1BB7 [50043167]{rtl160.bpl } System.TInterfacedObject._Release (Line 30018, "System.pas" + 1) + $3 [50043084]{rtl160.bpl } System.@IntfClear (Line 29837, "System.pas" + 10) + $0 [500430EF]{rtl160.bpl } System.@IntfAddRef (Line 29980, "System.pas" + 0) + $7 [0FAFBA95]{dclbindcomp160.bpl} Bindcompreg.TBindCompFactorySelectionEditor.AddDataBindingAction + $15 [0FB0D027]{dclbindcomp160.bpl} System.Generics.Collections. + $AE93 [0F9F67BA]{bindcomp160.bpl} Data.Bind.Components.EnumRegisteredBindCompFactories (Line 1720, "Data.Bind.Components.pas" + 2) + $6 [0FAFC191]{dclbindcomp160.bpl} Bindcompreg.TBindCompFactorySelectionEditor.AddFactoryActions + $179 [0FAFB8D3]{dclbindcomp160.bpl} Bindcompreg.TBindCompFactorySelectionEditor + $37 [20FD08D0]{designide160.bpl} DesignEditors.GetSelectionEditors (Line 3021, "DesignEditors.pas" + 25) + $15 [20FD0987]{designide160.bpl} DesignEditors.GetSelectionEditors (Line 3033, "DesignEditors.pas" + 4) + $7 [20FF32DC]{designide160.bpl} ComponentDesigner.TComponentRoot.GetSelectionEditors (Line 5013, "ComponentDesigner.pas" + 1) + $1B [51D6181B]{vcldesigner160.bpl} VCLSurface.TVclDesignSurface.GetSelectionEditors (Line 4389, "VCLSurface.pas" + 2) + $8 [51D6187E]{vcldesigner160.bpl} VCLSurface.TVclDesignSurface.GetSelectionMessages (Line 4396, "VCLSurface.pas" + 2) + $5 [51D5EB79]{vcldesigner160.bpl} VCLSurface.TVclDesignSurface.IsDesignMsg (Line 3138, "VCLSurface.pas" + 10) + $6 [5003C7EE]{rtl160.bpl } System.@IsClass (Line 13248, "
QC #: Date Reported: Area:
90131 12/5/2010 IDE\Project Management\Project Manager
Description: Steps:
[QC Short Description]
Adding .rc-file to package corrupts project

[QC Description]
Please, see steps to reproduce.
QC Entry 90131
1. Open attached project. 2. Project/Add. 3. Select Lock.rc from project's folder. Exp: added .rc-file. Normal project compilation. Act: Project/View Source - observe weird lines: {$R *.res} {$R '*.dres'} {$R *.dres} Try to compile - there will be error message: "[DCC Error] E1026 File not found: '*.dres'"
QC #: Date Reported: Area:
98810 9/9/2011 2:59:15 PM IDE\Code Completion
Description: Steps:
[Starter]
Code completion does not work.
In C++Builder XE2 Starter Edition do the following:

1. New C++ VCL Forms Application
2. Double-click on the form to create FormCreate method
3. Type in the body of the method:

Form1->

// exp: Code completion window to appear
// act: Cursor briefly changes to the Wait Cursor, but no code completion window appears.

Also test Parameter Insight:
Type in the body of the method:

Form1->ScaleBy(

// exp: Tooltip showing name and type of parameter
// act: No tooltip is shown
QC #: Date Reported: Area:
97267 8/6/2011 IDE\Code Completion
Description: Steps:
[QC Short Description]
Automated Incident Report

[QC Description]
Value not in the range 100 to 768.

Backspacing in the code editor with the code-helper window expanded to maximum.
QC Entry 97267
Must use a display with a vertical resolution of at least 1600 pixels. For example, a 1600x1200 display turned into portrait (vertical) mode.

1. Double click an event handler to open up the code editor.
2. Type in a valid component name (E.g. "Form1.")
3. After the code helper window shows drag it to it's maximum length with the mouse. - Only occurs when extended to it's maximum length
4. Backspace to erase the period that originally invoked the code helper window.
5. Bang - "Value not in the range 100 to 768" Error dialog.
QC #: Date Reported: Area:
95180 6/15/2011 IDE\Help
Description: Steps:
[QC Short Description]
Incorrect help for the Welcome page

[QC Description]
View Welcome page help is not correct. WP help exists. F1 shows the editor help. See ms-help://embarcadero.rs_xe2/rad/Page_d'accueil.html
QC Entry 95180
Start the IDE and display the Welcome page. Press F1. You see the editor help. The correct help page exists and is ms-help://embarcadero.rs_xe2/rad/Page_d'accueil.html
QC #: Date Reported: Area:
98901 9/14/2011 IDE\Build Tools
Description: Steps:
[QC Short Description]
"Delphi.Personality" and platform "Win32" missing or unavailable

[QC Description]
I'm using Windows Vista Business 32-bit, Windows 7 Ultimate 64-bit and C++ Builder XE2. When I create a new VCL project, add some Delphi files (.pas) to the project and try to compile, I receive the following error messages:

[DCC Fatal Error] Exception Exception: Compiler for personality "Delphi.Personality" and platform "Win32" missing or unavailable.
[DCC Error] Compiler for personality "Delphi.Personality" and platform "Win32" missing or unavailable.

It's impossible to build projects. C++ Builder XE2 is useless.

Forum discussion: https://forums.embarcadero.com/message.jspa?messageID=392065#392065
QC Entry 98901
1. Execute C++ Builder XE2 2. Create a new VCL project 3. Add some Delphi files (.pas) to the project 4. Compile
QC #: Date Reported: Area:
99039 9/19/2011 Install\Files
Description: Steps:
[QC Short Description]
Regression: CodeGear.Profiles.Targets file missing

[QC Description]
The CodeGear.Profiles.Targets file is missing from the Bin folder if you don't install all options. 

The is a regression in update #1. Because of this you can't deploy to Mac.
QC Entry 99039
- install Delphi personality only - install just FMX, OSX, X64 and source Browse for CodeGear.Profiles.Targets file in the Bin folder. It's not there.
QC #: Date Reported: Area:
69784 12/10/2008 VCL\Additional Controls\TBitBtn
Description: Steps:
[QC Short Description]
bkHelp TBitBtns don't work with HTML Help

[QC Description]
bkHelp TBitBtns ignore HelpType and HelpKeyword and instead always try to launch help using HelpContext. This doesn't work for HTML Help (.chm) help files.
QC Entry 69784

Fix in .patch file attached
1. Assign a .chm file to a project and link the HTMLHelpViewer unit so that it will work. 2. Create a form with a TBitBtn whose Kind property is bkHelp. 3. Set the TBitBtn's HelpType to htKeyword and assign a HelpKeyword. 4. Run the program and click the button. It complains that the .chm is not a valid help file; it should instead launch the .chm with the selected keyword.
QC #: Date Reported: Area:
98706 9/8/2011 VCL\Core VCL Classes\TForm
Description: Steps:
[QC Short Description]
[REGRESSION] Can't screen snap - Right edge and bottom edge can't snap

[QC Description]
Added by Sysop
<<<<
This is a regression. Delphi XE does not have this issue.
>>>>

I changed property form.Screen snap := True.
But, Right and Bottom edge are can't snap.
Top and Left edge is snapped.

I checked Windows 7 SP1, Windows XP SP3.
The same problem happened to them.
QC Entry 98706
1. New Project VCL form applicaiotn 2. Form1.ScreenSnap := True 3. Compile 4. Move form to Screen 4 edges 5. Top edge and left edge snap OK 6. Right edge and bottom edge can't snap
QC #: Date Reported: Area:
98042 8/23/2011 VCL\Standard Controls\TListBox
Description: Steps:
[QC Short Description]
[x64] TListBox.Items.Objects

[SB: This applies to TComboBox as well.
Fix in .patch file attached]

[QC Description]
unter 64-Bit gets a false result

there are several positions inside vcl.stdCtrls where a variable like TlistBoxItemData should be used

ex.
function TCustomListBox.GetItemData(Index: Integer): TListBoxItemData;
var
LItemData: Integer; (!!!!! this must be TListBoxItemData !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
begin
LItemData := SendMessage(Handle, LB_GETITEMDATA, Index, 0);
{$IF DEFINED(CLR)}
if LItemData <> 0 then
Result := GCHandle(FObjects.Item[TObject(LItemData)]).Target
else
Result := nil;
{$ELSE}
Result := LItemData;
{$IFEND}
end;
QC Entry 98042
unit DlgMain; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, math, Contnrs, Vcl.Mask; type TForm1 = class(TForm) Edit1: TEdit; Memo1: TMemo; ListBox1: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} function PtrToString(const ptr: pointer): string; begin Result := Format('%p',[ptr]); end; procedure TForm1.Button1Click(Sender: TObject); var sl: TStringList; i64: Int64; o: TObject; ItemData: TListBoxItemData; begin try ListBox1.Clear; sl := TStringList.Create(false); try i64:=StrToInt64(Edit1.Text); o:=TObject(i64); ListBox1.Items.AddObject(Edit1.Text, o); Memo1.Lines.Add('******* ListBox.Items.AddObject value ******'); Memo1.Lines.Add(PtrToString(o)); Memo1.Lines.Add('******* value with SendMessage(.., LB_GETITEMDATA, ..) ******'); ItemData := SendMessage(ListBox1.Handle, LB_GETITEMDATA, 0, 0); o:=TObject(ItemData); Memo1.Lines.Add(PtrToString(o)); Memo1.Lines.Add('******* value with ListBox.Items.Objects ******'); o:=ListBox1.Items.Objects[0]; Memo1.Lines.Add(PtrToString(o)); finally Freeandnil(sl); end; except on E: Exception do showMessage(e.Message); end; end; end.
QC #: Date Reported: Area:
95390 6/20/2011 VCL\Standard Controls\TMainMenu
Description: Steps:
[QC Short Description]
Checked menu items drawn incorrectly when a glyph is present

[QC Description]
Checked menu items drawn incorrectly when a glyph is present
QC Entry 95390

Fix in .patch file attached
Consider a menu item which is checked and has an associated glyph. Such a menu item needs to draw the glyph in such a way as to indicate the checked status of the item. For both VistaDraw and NormalDraw drawing routes this does not occur. For the BiDi route, it works fine. But it's clear that the BiDi route has not been kept up to date with the changes in its mirror image twin, NormalDraw! **VistaDraw** Here the fix is quite simple. The code is missing a call to draw a check mark background indicator. This needs to happen immediately prior to drawing the glyph. The required code is: // Draw glyph if (ImageIndex > -1) and (ImageIndex < ImageList.Count) then begin if Checked then DrawThemeBackground(ThemeServices.Theme[teMenu], Handle, MENU_POPUPCHECKBACKGROUND, CheckMarkBkgs[Enabled], LCheckRect, nil); with GlyphRect do ImageList.Draw(ACanvas, Left + ((Right - Left - ImageList.Width) div 2), Top + ((Bottom - Top - ImageList.Height) div 2), ImageIndex, Enabled) What is missing at present is the if Checked statement and the ensuing call to DrawThemeBackground. As an aside, and as I have said in so many of my long series of QC reports concerning flawed menu rendering, if you would just let the system draw the menu and stop doing owner draw for Vista menus, then all this would happen magically and would be bug free. **NormalDraw/BiDiDraw** Here the code is less clear to me but comparing against the Delphi 6 source the culprit appears to be the new WinXP boolean and various code path switches that it controls. I find that the checked indicators return if I force WinXP to be False, but clearly that's the right solution. The solution is going to be to remove some of the tests of WinXP in the NormalDraw routine.
QC #: Date Reported: Area:
89722 11/16/2010 VCL\Standard Controls\TMemo
Description: Steps:
[QC Short Description]
TMemoStrings.Insert() fails to insert blank strings at times.

[QC Description]
When using TMemo.Lines.Add() to insert blank strings, sometimes they are 
ignored.

This has been reproduced in XE Update 1, D2010 Update 4/5, and even in 
BCB 6 Update 4!
QC Entry 89722

Fix in .patch file attached
Place a TMemo on a TForm and leave it empty. Name it 'Memo1'. Add a TButton to the same form. Name it 'Button1'. Add the following OnClick event handler to Button1: procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add('2nd line'); Memo1.Lines.Add(''); Memo1.Lines.Add('4th line'); Memo1.Lines.Add(''); Memo1.Lines.Add('6th line'); end; Start the program and enter *one* line of text into the memo, e.g. '1st line', *without* hitting return. Your cursor should thus still be somewhere in line 1 of the memo. Click Button1 You'll find that the memo now holds these contents: 1st line (or whatever text you entered) 2nd line 4th line 6th line As you can see, the first blank line added during runtime is omitted.
QC #: Date Reported: Area:
97965 8/22/2011 VCL\Styles
Description: Steps:
[QC Short Description]
Title bar layout incorrect when BiDiMode is bdRightToLeft

[QC Description]
Title bar layout incorrect when BiDiMode is bdRightToLeft.

QC Entry 97965

Fix in .patch file attached
See screen capture
QC #: Date Reported: Area:
98259 8/28/2011 VCL\Styles
Description: Steps:
[QC Short Description]
TMainMenu causes position of certain controls to change when applying VCL Style

[QC Description]
I am running into an issue where the position of certain controls change when applying a VCL style. I believe it is related to the addition of a TMainMenu to the form. I can duplicate the issue with the following steps:

1. Create a new VCL Forms Application
2. Drop a TEdit and a TPageControl on the form. Position the two controls so that they both have the same Top value.
3. Edit the Project|Options and go to Application->Appearance section. Add one of the VCL styles to the project (e.g. Aqua Graphite). And then select that style as the Default Style.
4. Run the app. Both controls appear correctly themed and are the same distance from the top of the form.

5. Next, back in Delphi, drop a TMainMenu component on the form and add a menu item or two.
6. Run the application again. The TPageControl will be positioned lower than the TEdit.

The same thing happens with the TTabControl and TMemo. There may be other controls affected as well. I'm still investigating.
QC Entry 98259

Fix in .patch file attached
1. Create a new VCL Forms Application
2. Drop a TEdit and a TPageControl on the form. Position the two controls so that they both have the same Top value.
3. Edit the Project|Options and go to Application->Appearance section. Add one of the VCL styles to the project (e.g. Aqua Graphite). And then select that style as the Default Style.
4. Run the app. Both controls appear correctly themed and are the same distance from the top of the form.

5. Next, back in Delphi, drop a TMainMenu component on the form and add a menu item or two.
6. Run the application again. The TPageControl will be positioned lower than the TEdit.

Controls that are affected:
TPageControl
TTabControl
TCheckListBox
TRichEdit
TDateTimePicker
TTreeView
TDBLookupComboBox

QC #: Date Reported: Area:
98467 9/2/2011 VCL\Styles
Description: Steps:
[QC Short Description]
Mergeing menus in MDI-apps fails

[QC Description]
Mergeing menus in MDI-applications fails if a user defined style is used.

(OS: Win7 64Bit; the effect is the same for 32- and 64-Bit apllications)
QC Entry 98467
1) In Delphi, create a new MDI-Application. 2) Add a MainMenu to TMDIChild. 3) Add a Menuitem 'Test' to the menu and set GroupIndex=10 4) Run the application and select "File->New". This works fine: the menu "Test" is displayed at the end of the main menu. 5) Close the application, select Project->Options... and select and activate a user defined style (e.g. Ruby Graphite, it does not matter which one) 6) Repeat step 4: Now only the menuitem "test" is shown; the others are "gone".
QC #: Date Reported: Area:
98492 9/2/2011 VCL\Styles
Description: Steps:
[QC Short Description]
Inspector pane in VCL Style Designer should be hidden when Fonts, Colors nodes selected

[QC Description]
In the VCL Style Designer, when you click on the Colors or Fonts nodes in the tree, the Inspector pane still shows the last selected item's details in the property list. However, this is NOT what the user thinks is currently selected.

The Steps section illustrates the problem.
QC Entry 98492
Open the VCL Style Designer. Expand the Objects node and then click on one of the sub-nodes (e.g. Button). The Inspector pane will be updated with the current values for the Button: TSeStyleObject settings. One of the properties is Font. Next, click on the Fonts node in the tree view. The Objects node collapses and samples of the various fonts in the style are displayed in the middle area. However, the Inspector pane still shows the Button's details. Next, click on one of the fonts in the list (e.g. CheckBoxTextNormal). The CheckBoxTextNormal item gets selected, but the Inspector pane still shows the Button properties. However, this is very easy to miss. What makes this really problematic is that I have selected the CheckBoxTextNormal item so that I can change it's Font! However, instead of using the Inspector, a user must click on the Change... button instead. A bettter approach would be to use the Inspector to change the font and font color instead of having separate buttons to do this. However, at a minimum the Inspector should be cleared when the Fonts (and Colors) node is selected.
QC #: Date Reported: Area:
98506 9/3/2011 VCL\Styles
Description: Steps:
[QC Short Description]
GetElementSize returns the wrong values

[QC Description]
GetElementSize does not return the correct size value for the specified element.

The steps section demonstrates the issue.
QC Entry 98506
Create a new VCL application. Open the Project Options and go to Application -> Appearance. Add all available styles and set Default style to Aqua Graphite. Next, drop a TButton and a TCheckBox on the form. Double-click the button and create the following event handler: uses Vcl.Themes; procedure TForm5.Button1Click(Sender: TObject); var Details: TThemedElementDetails; Size: TSize; begin Details := StyleServices.GetElementDetails( tbCheckBoxUncheckedNormal ); StyleServices.GetElementSize( Canvas.Handle, Details, esActual, Size ); ShowMessage( Format( 'Size = ( %d, %d )', [ Size.cx, Size.cy ] ) ); end; Run the application and then click the button. The size that is reported in (13, 13). However, if you look at the actual check box that is displayed, you will see that the dimensions of the check box are 14 x 14. Furthermore, if you load up the Aqua Graphite style in the VCL Style Designer, you will see that the designer reports that the size of the check box is 16 x 16, when it is clearly not. This last issue is related to QC #98505 that I just reported.
QC #: Date Reported: Area:
98532 9/4/2011 VCL\Styles
Description: Steps:
[QC Short Description]
Remove the Auto-Collapse functionality in the VCL Style Designer

[QC Description]
Please remove the auto-collapse functionality that exists in the tree view in the VCL Style Designer. This behavior makes it extremely difficult (nearly impossible) to compare the settings of two different style elements. You spend more time moving the mouse and expanding nodes to get what you want to see.

Furthermore, the auto-collapsing behavior causes the selected nodes to move around. That is, if you click on a node you expect that node to remain where it was when you clicked on it. However, if another node was expanded, that other node will be collapsed and therefore, the node that you clicked on will shift position in the tree. This is very disconcerting to the user.
QC Entry 98532
 
QC #: Date Reported: Area:
97875 8/19/2011 VCL\Styles\Other
Description: Steps:
[QC Short Description]
Form closing problem

[QC Description]
In styled applications, sometimes Form.Close does not work.
QC Entry 97875
A test roject is attached. It has 2 forms: the main form and the popup form. The popup form closes itself when it loses the focus. This is a free-on-close form. The problem happens when the popup form loses the focus because the user opens the main menu on the main form. The popup form sends CM_RELEASE to itself, but its CMRelease is not called. This problem does not happen without styles.
QC #: Date Reported: Area:
98221 8/27/2011 VCL\Styles\Designer
Description: Steps:
[QC Short Description]
VCL Style Designer tree auto scrolls when a node is selected

[QC Description]
When you select a node in the VCL Style Designer tree. the tree is scrolled and the selected node is positioned at the bottom of the tree. 
QC Entry 98221
1) Select Tools | VCL Style Designer 2) Expand Objects 3) Expand DBGrid 4) Select curArrow
QC #: Date Reported: Area:
98271 8/29/2011 Debugger\Watches
Description: Steps:
[QC Short Description]
watches do [sometimes] not work in x64

[QC Description]
If you try to watch the value of a field when debugging a x64 application, the ide sometimes says "inaccessible value" and/or crashes
QC Entry 98271
1) Compile the attached application.
2) Set a breakpoint at "j := 42;" and run the application.
3) Add "j" to your watches-list. This works in win32, but fails in x64.
4) Add "self" to your watches-list, expand self object, and try to locate "j": in x64, the message "disconnected session" pops up and you have to restart delphi
5) or expand self object in Local Variables windows, and scroll down to find "J" variable.

n.b. if you remove some of the class' fields everything works fine...
QC #: Date Reported: Area:
98415 9/1/2011 Debugger\Evaluator\Delphi
Description: Steps:
[QC Short Description]
[x64] Evaluation of variables in inline methods is buggy

[QC Description]
[x64]
When I debug the code shown in steps, and evaluate the "i" variable, I get an incorrect value.
This happens in all places : the evaluate-dialog, the local variables view and the watch list.
QC Entry 98415
type RCodeBlock = record MinAddr, MaxAddr: IntPtr; end; var ValidCodeBlocks: array of RCodeBlock; procedure FindCodeBlocks; var SystemInfo: TSystemInfo; MemoryBasicInformation: TMemoryBasicInformation; Ptr: IntPtr; MaxAddr: IntPtr; i: Integer; begin GetSystemInfo(SystemInfo); Ptr := IntPtr(SystemInfo.lpMinimumApplicationAddress); while VirtualQuery(Pointer(Ptr), MemoryBasicInformation, SizeOf(TMemoryBasicInformation)) = SizeOf(TMemoryBasicInformation) do begin MaxAddr := IntPtr(MemoryBasicInformation.BaseAddress); Inc(MaxAddr, MemoryBasicInformation.RegionSize); if (MemoryBasicInformation.State = MEM_COMMIT) and (MemoryBasicInformation.Protect = PAGE_EXECUTE_READ) then begin i := Length(ValidCodeBlocks); SetLength(ValidCodeBlocks, i + 1); ValidCodeBlocks[i].MinAddr := Ptr; ValidCodeBlocks[i].MaxAddr := MaxAddr; end; Ptr := MaxAddr; end; SetLength(ValidCodeBlocks, i + 1); // SET BREAKPOINT HERE AND EVALUATE "Length((ValidCodeBlocks, )" TO SEE ACTUAL LENGTH end; procedure TAllClasses.FindAllClasses; procedure _FindClasses; var i: Integer; begin for i := 0 to Length(ValidCodeBlocks) - 1 do begin Ptr := ValidCodeBlocks[i].MinAddr - vmtSelfPtr; // SET BREAKPOINT HERE AND EVALUATE "i" - even the initial 0 (zero) is messed up. MaxAddr := ValidCodeBlocks[i].MaxAddr; while Ptr < MaxAddr do begin try if IsValidClass(Pointer(Ptr)) then ;// RegisterClass(Pointer(Ptr)); except Ptr := Ptr; end; Inc(Ptr, SizeOf(Pointer)); end; end; end; begin FindCodeBlocks; _FindClasses; end;
QC #: Date Reported: Area:
98312 8/30/2011 Debugger\Evaluator\Delphi
Description: Steps:
[QC Short Description]
[x64] Evaluation of open array variables shows too many elements

[QC Description]
[x64]
When I evaluate an open array variable using the mouse-hoover balloon, the popup shows about 900 items, while in reality the array has a much smaller length. The same thing happens in the Ctrl+F7 inspector dialog - evaluating Length() on the same variable, returns the correct length, so I would expect the evaluation of the array's contents to be limited to the actual length...
QC Entry 98312
Here some code, which shows this behaviour, copied from QC#98415 : type RCodeBlock = record MinAddr, MaxAddr: IntPtr; end; var ValidCodeBlocks: array of RCodeBlock; procedure FindCodeBlocks; var SystemInfo: TSystemInfo; MemoryBasicInformation: TMemoryBasicInformation; Ptr: IntPtr; MaxAddr: IntPtr; i: Integer; begin GetSystemInfo(SystemInfo); Ptr := IntPtr(SystemInfo.lpMinimumApplicationAddress); while VirtualQuery(Pointer(Ptr), MemoryBasicInformation, SizeOf(TMemoryBasicInformation)) = SizeOf(TMemoryBasicInformation) do begin MaxAddr := IntPtr(MemoryBasicInformation.BaseAddress); Inc(MaxAddr, MemoryBasicInformation.RegionSize); if (MemoryBasicInformation.State = MEM_COMMIT) and (MemoryBasicInformation.Protect = PAGE_EXECUTE_READ) then begin i := Length(ValidCodeBlocks); SetLength(ValidCodeBlocks, i + 1); ValidCodeBlocks[i].MinAddr := Ptr; ValidCodeBlocks[i].MaxAddr := MaxAddr; end; Ptr := MaxAddr; end; SetLength(ValidCodeBlocks, i + 1); // SET BREAKPOINT HERE AND EVALUATE "Length((ValidCodeBlocks, )" TO SEE ACTUAL LENGTH end; procedure TAllClasses.FindAllClasses; procedure _FindClasses; var i: Integer; begin for i := 0 to Length(ValidCodeBlocks) - 1 do begin Ptr := ValidCodeBlocks[i].MinAddr - vmtSelfPtr; // SET BREAKPOINT HERE AND EVALUATE "i" - even the initial 0 (zero) is messed up. MaxAddr := ValidCodeBlocks[i].MaxAddr; while Ptr < MaxAddr do begin try if IsValidClass(Pointer(Ptr)) then ;// RegisterClass(Pointer(Ptr)); except Ptr := Ptr; end; Inc(Ptr, SizeOf(Pointer)); end; end; end; begin FindCodeBlocks; _FindClasses; end;
QC #: Date Reported: Area:
97836 8/19/2011 Debugger\Remote Debugging\UI
Description: Steps:
[QC Short Description]
Warn when "Include remote debug symbols" is off

[QC Description]
The remote debugger is used when debugging a Win64 application locally. This only works when "Include remote debug symbols" is turned on in Project Options. If the option is off, trying to run the app with debugging will cause the "blue dots" to disappear and the app will run without the debugger without any explanation.

This is going to cause frustration for many developers because:
1. It is not obvious that the remote debugger is involved in debugging local Win64 apps
2. The options to compile debug info is separate from the option for remote debug info, causing developers to think that they've already turned on debugging info, missing the separate remote debugging info option.
3. The option for remote debug info is listed in the Linker section in Project Options. While this may be logical to somebody who understands how remote debug info is generated, it is not logical from the viewpoint of somebody looking to use the remote debugger.

Since it is not possible to debug Win64 or OS X apps in Delphi XE2 without the remote debugger, my suggestion would be to force "Include remote debug symbols" to be on whenever the option to generate debug info is turned on in the compiler options. Only for Win32 apps would "Include remote debug symbols" remain an independent option. Right now, the IDE turns on "Include remote debug symbols" by default for the Debug build configuration, but not for custom build configurations.

Alternatively, the IDE could show a warning when the user attempts to debug a Win64 app for which no remote debug symbols are present.
QC Entry 97836
[ See comment ]
QC #: Date Reported: Area:
95182 6/15/2011 Midas\TClientDataSet
Description: Steps:
[QC Short Description]
ClientDataset with Aggregate fields causes AV with MidasLib and FastMM in FullDebugMode

[QC Description]
Please do not mix this case with 89916 as:

There are no other version of Delphi installed on my machine - Only Delphi XE and there is no borlandmm.dll in system32 or other system folders.

Simple project to reproduce the problem has been attached. FastMM4 is version 4.97 - the latest stable version available.

The same test project works without any issues for Delphi 2010 (14.0.3593.25826)
QC Entry 95182
Working (Open, Edit, Close, Open) with TClientDataset causes AV DPR files has FastMM4 and MidasLib included.
QC #: Date Reported: Area:
98205 8/26/2011 Compiler\C++\Back End
Description: Steps:
[QC Short Description]
IDE fails to compile C++Builder packages containing pas-files

[QC Description]
IDE fails to compile C++Builder packages containing pas-files.
The compilation ends with the message "F2092 program or unit *** recursively uses itself" or with "F2084 internal error AV***".
QC Entry 98205
A test package is attached. Open RVPkgCBXE2.cbproj in RAD Studio. Right click the package name in the Project manager and choose "Build". A compilation ends with the error message "F2092 program or unit 'CRVData' recursively uses itself". If you choose "Install" instead of "Build", you may see this error for another unit. You can also open a delphi package RVPkgDXE2.dproj containing the same files and check that it can be installed without problems. The attached files are copies of real files of our components with all code removed from methods bodies. On the real versions of these files the compilation results are slightly different. The first two tries to build the package end with F2092 error, while the third try ends with F2084 (internal error). The full versions of the files are available on request.
QC #: Date Reported: Area:
96670 7/26/2011 Compiler\Delphi
Description: Steps:
[QC Short Description]
64bit app: F2084 Internal Error NI4131

[QC Description]
Trying to compile the decribed code-snippet gives internal error NI4131

This issue occurs only if target is 64bit app.
QC Entry 96670
Compile the attached application below.

See the following internal error indicating failure.

Fatal: F2084 Internal Error: NI4131


program BTS285413;

{ 64bit app: F2084 Internal Error NI4131 }

{$APPTYPE CONSOLE}

var 
m:currency;

function test(r:real48):string;
begin
result:='test';
end;

procedure DoBTS285413;
begin
m:=1;
WriteLn(test(m));
end;

begin
try
DoBTS285413;
WriteLn('PASS');
except
on E: Tobject do
WriteLn('FAIL - Exception=', E.ClassName);
end;
end.
QC #: Date Reported: Area:
97112 8/3/2011 Compiler\Delphi
Description: Steps:
[QC Short Description]
F2084 Internal Error: D27516

[QC Description]
In a project targeted for x86 and x64, the WIN64 define is used to distinguish between the two compilers. In x86 assembler is used and in x64 pure pascal (for the time beeing).

When doing a BUILD ALL (so not compile) in x86 -> no problem. Using the x64 version the internal error occurs ON A BLOCK OF CODE THAT IS _NOT_ COMPILED (because is enclosed by the 'not' WIN64 define.

A workaround is found in moving some of the code to an .inc file and include that code at the point where is belongs -> problem 'solved'...

The strange thing is: if (after the build attempt) a COMPILE is done, the compile succeeds AND generates the right code!
QC Entry 97112
[Pulsar Beta]
By USc: - save the following program - dcc64 -B QC97112.dpr expected: it compiles actual: QC97112.dpr(17) Fatal: F2084 Internal Error: D27516 program QC97112; uses Vcl.Forms; {$IFNDEF WIN64} procedure Foo; asm DD 07F6A0DBBh, 0086D3D2Dh, 091646C97h, 0E6635C01h DD 0A00AE278h, 0D70DD2EEh, 04E048354h, 03903B3C2h DD 06E656761h, 064655220h, 06E616D64h, 06FBBA36Eh end; {$ENDIF ~WIN64} begin WriteLn('PASS'); //on compile end. Original steps: See the attached project. When Unit2 is used (in Unit1) the problem is reproducable, when Unit3 is used instead, the workaround is working ;-)
QC #: Date Reported: Area:
98318 8/30/2011 Compiler\Delphi
Description: Steps:
[QC Short Description]
Internal Error D27551

[QC Description]
Compile a large project from scratch. All 822 dcus are generated. Then on the "begin" line of the main program, I get "Internal Error D27551".
QC Entry 98318
A test case containing proprietary code for this issue was submitted by Dmitry Streblechenko.

See Jason Sprenger for this test case.

QC #: Date Reported: Area:
97299 8/8/2011 Compiler\Delphi
Description: Steps:
[QC Short Description]
Compiler option -VN not listed/described

[QC Description]
The IDE is using the Delphi compiler with an -VN option. Can be seen in the "Message Window" during compilation.

Typing dcc32 or dcc64 <enter> in the command line brings up a list of possible options/switches. -VN is not listed there. Whereas e.g. -VR,-VT,-V are listed.
QC Entry 97299
1. Go to Start. Open RAD Studio command line. 2. Type dcc32 <enter> 3. A list of possible options is shown. 4. -VR,-VT,-V e.g. are listed, -VN is not listed/described.
QC #: Date Reported: Area:
98753 9/10/2011 Compiler\Delphi\Code Generation/Optimization
Description: Steps:
[QC Short Description]
EXCESSPRECISION OFF generates incorrect code in some cases

[QC Description]
I found this problem when I got a "value assigned to I never used" hint in my code although I is clearly used in the multiplication. I then discovered it was related to the EXCESSPRECISION OFF directive. See the steps to reproduce.

//USc: The hint is only shown with {$OPTIMIZATION ON}
QC Entry 98753
Steps by USc: - dcc64 QC98753.dpr - execute QC98753 expected: output is PASS actual: output is FAIL Note when you change I from Integer into Single it passes or when making Scale a typed constant as mentioned in the workaround. program QC98753; {$APPTYPE CONSOLE} {$EXCESSPRECISION OFF} function TestMultiply: Boolean; const Scale = 0.01; var I: Integer; F: Single; begin I := 4200; F := I * Scale; //will have the value 42 when EXCESSPRECISION is ON //will have the value 0 (incorrect) when EXCESSPRECSION is OFF Result := Round(F) = 42; end; begin if TestMultiply then WriteLn('PASS') else WriteLn('FAIL'); end. Original steps: {$EXCESSPRECISION OFF} procedure TForm2.TestMultiply; const Scale = 0.01; var I : integer; F : single; begin I := 4200; //Generates hint: "Value assigned to 'I' never used" when excessprecision is off F := (I * Scale); //Caption will have the value 42 when excessprecision is on //Caption will have the value 0 (incorrect) when excessprecision is off Self.Caption := IntToStr( Round(F) ); end;
QC #: Date Reported: Area:
97553 8/12/2011 Compiler\Delphi\Code Generation/Optimization
Description: Steps:
[QC Short Description]
NativeInt for-index fail when calling inline functions.

[QC Description]
See steps.
When "i" is Integer or "foo" isn't a inline function, the code works. Otherwise, the compile shows:
[DCC Hint] Project1.dpr(16): H2135 FOR or WHILE loop executes zero times - deleted
[DCC Hint] Project1.dpr(14): H2164 Variable 'i' is declared but never used in 'fail_win64'
QC Entry 97553


(JJS: Another test case is seen with the duplicate report 287356)
Compile and the following progam with dcc64.

See the compile-time hint indicating an issue.

Hint: H2135 FOR or WHILE loop executes zero times - deleted

Running the application produces the following output also indicating failure.

FAIL=0/2



program BTS286366;

{ Missing REX.B for cmpxchg16b [r8] etc }

{$APPTYPE CONSOLE}

var
Expected: Integer = 0;
Counter: Integer = 0;

const
bar : array[1..2] of Char = '12';

procedure foo(X: Integer); inline;
begin
Inc(Counter);
end;

procedure fail_win64;
var 
i: NativeInt;
begin
Expected := Length(Bar);
for i:=Low(bar) to High(bar) do
foo(i)
end;

begin
try
fail_win64;
if Counter = Expected then
WriteLn('PASS')
else
WriteLn('FAIL=', Counter, '/', Expected);
except
on E: TObject do
WriteLn('FAIL - Exception=', E.ClassName);
end;
end.
QC #: Date Reported: Area:
97597 8/14/2011 Compiler\Delphi\Code Generation/Optimization
Description: Steps:
[QC Short Description]
[x64 compiler] "Integer overflow" exception with pointer arithmetic

[QC Description]
[x64 compiler]
Compile and run the following code with "Overflow checking" ON.
Line with Inc raises "Integer overflow" exception. The same code works OK on x32.

procedure TForm35.FormCreate(Sender: TObject);
var
i1, i2: Int64;
pVal: PByte;
begin
pVal := Pointer(Self);
i1 := 10;
i2 := -4;
Inc(pVal, i1 * i2);
ShowMessage(IntToStr(IntPtr(pVal)));
end;

Uwe Schuster:
=================================
can repeat that with all values for Self >= 40 and have created the
following test case. Please file a QC report.

program Project20;

{$APPTYPE CONSOLE}

{$OVERFLOWCHECKS ON}

uses
System.SysUtils;

function Test: Boolean;
var
I1, I2: Int64;
pVal: PByte;
Counter: Integer;
begin
Counter := 0;

pVal := Pointer(39);
I1 := 10;
I2 := -4;
Inc(pVal, I1 * I2);//#1 works since pVal < I1 * I2
if pVal = Pointer(-1) then
Inc(Counter)
else
WriteLn('FAIL #1');

pVal := Pointer(40);
I1 := 10;
I2 := 4;
Dec(pVal, I1 * I2);
if pVal = nil then
Inc(Counter)
else
WriteLn('FAIL #2');

pVal := Pointer(40);
I1 := 10;
I2 := -4;
Inc(pVal, I1 * I2);//#2 does not work since pVal >= I1 * I2
if pVal = nil then
Inc(Counter)
else
WriteLn('FAIL #3');

Result := Counter = 3;
end;

begin
try
if Test then
WriteLn('PASS')
else
WriteLn('FAIL');
except
on E: Exception do
begin
Writeln('FAIL - Exception Error');
WriteLn(' ClassName=', E.ClassName);
WriteLn(' Message=', E.Message);
end;
end;
ReadLn;
end.
QC Entry 97597
program Project20; {$APPTYPE CONSOLE} {$OVERFLOWCHECKS ON} uses System.SysUtils; function Test: Boolean; var I1, I2: Int64; pVal: PByte; Counter: Integer; begin Counter := 0; pVal := Pointer(39); I1 := 10; I2 := -4; Inc(pVal, I1 * I2);//#1 works since pVal < I1 * I2 if pVal = Pointer(-1) then Inc(Counter) else WriteLn('FAIL #1'); pVal := Pointer(40); I1 := 10; I2 := 4; Dec(pVal, I1 * I2); if pVal = nil then Inc(Counter) else WriteLn('FAIL #2'); pVal := Pointer(40); I1 := 10; I2 := -4; Inc(pVal, I1 * I2);//#2 does not work since pVal >= I1 * I2 if pVal = nil then Inc(Counter) else WriteLn('FAIL #3'); Result := Counter = 3; end; begin try if Test then WriteLn('PASS') else WriteLn('FAIL'); except on E: Exception do begin Writeln('FAIL - Exception Error'); WriteLn(' ClassName=', E.ClassName); WriteLn(' Message=', E.Message); end; end; ReadLn; end.
QC #: Date Reported: Area:
96342 7/18/2011 Compiler\Delphi\Code Generation/Optimization
Description: Steps:
[QC Short Description]
Old object style generates AV

[QC Description]
Object (not a class) from Delphi 1 creates AV when passed as a value parameter.

There should be a specyfic structure of this object - it should inherit from the base object containing a record and have a string in it.

Same in XE1
QC Entry 96342
interface type TRec = record a: Integer; end; TBaseObj = object rec: TRec; end; TObj = object(TBaseObj) b: string; //if you coment this - everything works ok end; var obj: TObj; implementation procedure Test(obj: TObj); //specyfying const or var make it run ok begin obj.rec.a := 1; //Just to avoid optimization, the problem is in parameter passing. end; calling procedure test shows AV - read of adress 00000 See attached project. Build and run, then press the button.
QC #: Date Reported: Area:
98448 7/19/2011 2:15:20 PM Compiler\Delphi\Code Generation/Optimization
Description: Steps:
Using Old Style object types causes an AV error at runtime.

RAID 272600 is still present
Compile and run the project and unit source seen below.

See the following program output indicating failure.

FAIL: EAccessViolation: Access violation at address 00000000004092E9 in module '
BTS272600.exe'. Read of address 0000000000000024



program BTS272600;

{ Wrong code generation for returning an old-style object after 
"Make Project" 
}

{$APPTYPE CONSOLE}

uses
SysUtils,
uBTS272600;

procedure Bar;
begin
GetFoo;
end;

begin
try
Bar;
WriteLn('PASS');
except
on E: Exception do
Writeln('FAIL: ', E.ClassName, ': ', E.Message);
end;
end.



unit uBTS272600;

interface

type
TFoo = object
X: string;
end;

function GetFoo: TFoo;

implementation

function GetFoo: TFoo;
begin
Result.X := '';
end;

end.
QC #: Date Reported: Area:
98333 8/30/2011 Compiler\Delphi\Execution
Description: Steps:
[QC Short Description]
MacOS compiler: Internal Error: C1985

[QC Description]
This issue can be reproduced with the Optimization project option = True only. If Optimization = false then project will be compiled successfully.

Please see attachment - there is the sample that reproduces the issue.
QC Entry 98333
I get the following Internal Error when try to compile my project for MacOS (see attachment): [DCC Fatal Error] PgClasses.pas(2242): F2084 Internal Error: C1985
QC #: Date Reported: Area:
93745 5/10/2011 Compiler\Delphi\String Resources
Description: Steps:
[QC Short Description]
A resourcestring cannot contain the character NOT EQUAL TO (#$2260)

[QC Description]
I have resourcestring that contains the character ? (NOT EQUAL TO, #$2260).
When Delphi compiles the project, the .drc file contains a '?' instead of this character, so translators cannot see the string to translate correctly.

Michel


Added by Sysop
<<<<<
For example, this issue can be reproduced with Delphi XE/2010(English) on WinXP/7(English) .
Please see comments of QC for more information.
>>>>>
QC Entry 93745
In the code S_Symbol = #$2260; ... use S_Symbol ... Compile the project and have a look at the .drc file : MyFile_S_Symbol, "?"
QC #: Date Reported: Area:
98185 8/26/2011 RTL\Delphi
Description: Steps:
[QC Short Description]
TryStrToInt works differently in Win64

[QC Description]
The following code...

var
Temp: Integer;
begin
Writeln(TryStrToInt('x', Temp));
end;

Prints "FALSE" in Win32 (which is good), but "TRUE" in Win64 (which is bad).
QC Entry 98185

Fix in .patch file attached
 
QC #: Date Reported: Area:
97852 8/19/2011 RTL\Delphi\File Management
Description: Steps:
[QC Short Description]
TPath.GetTempPath gets an invalid result

[QC Description]
The TPath.GetTempPath implementation failes if the 'long path' is shortet than the 'short path'.

This can happen for a username "GGW 3".

The short path is:
"C:\Users\GGW3~1\AppData\Local\Temp"

an the long path is (should be):
"C:\Users\GGW 3\AppData\Local\Temp"

QC Entry 97852

Fix in .patch file attached
//-- commented original code class function TPath.GetTempPath: string; var Len: Integer; begin Result := ''; // DO NOT LOCALIZE SetLastError(ERROR_SUCCESS); // get memory for the buffer retaining the temp path (plus null-termination) Len := Windows.GetTempPath(0, nil); SetLength(Result, Len - 1); if Windows.GetTempPath(Len, PWideChar(Result)) <> 0 then begin Len := GetLongPathName(PChar(Result), nil, 0); //SetLength(Result, Len - 1); // <-- to early if the long path shorter than ***** BAD PLACE *** GetLongPathName(PChar(Result), PChar(Result), Len); SetLength(Result, Len - 1); // <- This is the correct place for the code end; end;
QC #: Date Reported: Area:
89688 11/15/2010 RTL\Delphi\File Management\TPath
Description: Steps:
[QC Short Description]
IOUtils.TPath.GetTempPath fails on some pathes

[QC Description]
TPath.GetTempPath returns an unusable result when the long path name is shorter than the short path name.

Although this might sound strange, there is a simple occasion when this happens: 
when there is a folder name with less than eight characters, but containing a blank: say "BDS XE".
While the long version has six characters, the short version "BDSXE~1" has seven.

The problematic code in TPath.GetTempPath is the request for the long path name:

Len := GetLongPathName(PChar(Result), nil, 0);
SetLength(Result, Len - 1);
newLen := GetLongPathName(PChar(Result), PChar(Result), Len);

In our case the short path name will be cut of in the SetLength command and the resulting GetLongPathName uses
a different input string than before. Thus the resulting long path name is one character less than it should be and
the result includes a trailing #0 character.
QC Entry 89688
- create a folder "c:\temp 1"
- open Tools - Options - Environment variables 
- override TMP to "c:\temp1~1"
- create a program that checks the result of TPath.GetTempPath

exp: result = 'c:\temp 1\'
act: result = 'c:\temp 1'#0


program Project1;

{$APPTYPE CONSOLE}

uses
IOUtils,
SysUtils;

var
RetVal: String;
begin
try
RetVal := TPath.GetTempPath;
if Pos(#0, RetVal) > 0 then
WriteLn('FAIL')
else
WriteLn('PASS');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
QC #: Date Reported: Area:
98664 9/7/2011 RTL\Delphi\Format + Float
Description: Steps:
[QC Short Description]
Sysutils Format fails on Currency data types

QC Entry 98664
Create form with Memo and Button. Put the following code in the button click event: procedure TForm1.Button1Click(Sender: TObject); var C:currency; D:double; begin C:=4.4433; D:=4.4433; Memo1.Lines.Add(format('Currency 2F %.2f',[C])); Memo1.Lines.Add(format('Currency M %m',[C])); Memo1.Lines.Add(format('Double 2F %.2f',[D])); Memo1.Lines.Add(format('Double M %m',[D])); Memo1.Lines.Add(format('Literal 2F %.2f',[4.4433])); Memo1.Lines.Add(format('Literal M %m',[4.4433])); end; On pressing the button the following output is returned: Currency 2F 4.443 Currency M 4.4433 Double 2F 4.44 Double M $4.44 Literal 2F 4.44 Literal M $4.44 Note that the currency data type had format specifiers ignored. Result should be Currency 2F 4.4 Currency M $4.44 Double 2F 4.44 Double M $4.44 Literal 2F 4.44 Literal M $4.44 Note - running with $.2 currency format here. Automation test case by USc: - dcc QC98664.dpr - execute QC98664 expected: output is PASS actual: output is FAIL #1 Expected: "$3.44" Actual: "3.4433" FAIL #2 Expected: "3.44" Actual: "3.443" FAIL #3 Expected: "3,44 ?" Actual: "3,4433" FAIL #4 Expected: "3,44" Actual: "3,443" FAIL program QC98664; {$APPTYPE CONSOLE} uses SysUtils; var Counter: Integer = 0; procedure TestFormatCurrency(AFormatSettings: TFormatSettings; const AFormat: string; ACurreny: Currency; const AExpected: string; ATest: Integer); var Actual: string; begin Actual := Format(AFormat, [ACurreny], AFormatSettings); if Actual = AExpected then Inc(Counter) else begin WriteLn('FAIL #', ATest); WriteLn(' Expected: "', AExpected, '"'); WriteLn(' Actual: "', Actual, '"'); end; end; var FormatSettingsUS, FormatSettingsDE: TFormatSettings; begin FormatSettingsUS := TFormatSettings.Create($409); FormatSettingsDE := TFormatSettings.Create($407); TestFormatCurrency(FormatSettingsUS, '%m', 3.4433, '$3.44', 1); TestFormatCurrency(FormatSettingsUS, '%.2f', 3.4433, '3.44', 2); TestFormatCurrency(FormatSettingsDE, '%m', 3.4433, '3,44 ' + #8364, 3); TestFormatCurrency(FormatSettingsDE, '%.2f', 3.4433, '3,44', 4); if Counter = 4 then WriteLn('PASS') else WriteLn('FAIL'); end.
QC #: Date Reported: Area:
91160 1/27/2011 SOAP
Description: Steps:
[QC Short Description]
Easy to resolve memory leak produced in WSDLLookup.pas

[QC Description]
Hello,

Simply FLookup.Free isn't here producing a small memoryleak.

WSDLLookup.pas

{ TWSDLLookup }

destructor TWSDLLookup.Destroy;
begin
ClearWSDLLookup;
<<<<<<<<<<<<<<<< need Flookup.Free here;
inherited;
end;
QC Entry 91160
Ops. open the unit in the ide and go to line 56 :?)
QC #: Date Reported: Area:
89836 11/19/2010 SOAP\Components
Description: Steps:
[QC Short Description]
Wrong calculated byte array size - TSOAPDomConv.WriteVarArrayAsB64

[QC Description]
procedure TSOAPDomConv.WriteVarArrayAsB64(RootNode, Node: IXMLNode; const Name: InvString; V: Variant);
var
I, DimCount, VSize: Integer;
LoDim, HiDim: array of integer;
P: Pointer;
Encd: AnsiString;
ElemNode: IXMLNode;
BorlPrefix: DOMString;
begin
DimCount := VarArrayDimCount(V);
SetLength(LoDim, DimCount);
SetLength(HiDim, DimCount);
for I := 1 to DimCount do
begin
LoDim[I - 1] := VarArrayLowBound(V, I);
HiDim[I - 1] := VarArrayHighBound(V, I);
end;
VSize := 0;
for i := 0 to DimCount - 1 do
VSize := (HiDim[i] - LoDim[i] + 1);


Must be

VSize := 0;
for i := 0 to DimCount - 1 do
VSize := VSize + (HiDim[i] - LoDim[i] + 1);

QC Entry 89836
 
QC #: Date Reported: Area:
96178 7/13/2011 Modeling\Model Tree View
Description: Steps:
[QC Short Description]
Modeling cut-and-paste makes IDE lockup

[QC Description]
I'm trying XE trial and used modeling to get some docs on ACBr, a brazilian open source commerce automation project. It's an almost 1,5MLOC component suite project.

Activate modeling, it creates the projects and namespaces all dandy. The bad thing happens when I create an sub-namespace (empty) and put (drag) some existing classes on it's default diagram. The classes on diagram came with an shortcut mark on it, so it were not a copy - just an link.

The thing is that I needed to move that diagram elements to a separate diagram. I've done it by cut-and-paste - or better, I tried to do it.

When I tried to paste the IDE simply start to eat memory like crazy (jumping from 150Mb to 700Mb+ in a matter of seconds) and stops responding.
QC Entry 96178
I tried with ACBr. So, download ACBr and use it's BUILD.bpg to install it. Or get an equivalent size open-source project. After that, activate Model Support on all projects on the project group. On (for example) ACBrSerial package, create an namespace (name it Test, it's name doesn't really matters) and open it's default diagram. Grab some classes, bring their ancestors, etc to get something about 6-7 classes on the diagram. Create a new diagram on that name (Add->Class diagram). Try to cut and paste the classes on the namespace default diagram on the new diagram. Delphi will eat loads of memory and lock up. Only way to get backto work is killing BDS.EXE.
QC #: Date Reported: Area:
97407 8/10/2011 FireMonkey
Description: Steps:
[QC Short Description]
Page down / Up does not work on Listbox and comboboxes

[QC Description]
When pressing the page up / down, it is not reflected in the list box or combo box controls.
QC Entry 97407
- Create a firemonkey HD application. - Drop a list box control - Add 20 items - Start the app - Press the page down and nothing will happen.
QC #: Date Reported: Area:
98159 8/25/2011 FireMonkey
Description: Steps:
[QC Short Description]
[MacOS] FireMonkey drop down controls on OSX render the dropped down component over all apps

[QC Description]
If you have a FireMonkey application running on OSX, any components with a drop down portion (e.g. TComboBox, TCalendarBox) will have the dropped down portion rendered over all windows, even when the application loses focus.
QC Entry 98159
- Create a new FireMonkey HD application - Add a TCalendarBox to the form - Deploy to OSX and run - Click the arrow to drop down the calendar - Open a Finder window and move it over the calender portion Expected: The calendar closes up when the application loses focus Actual: The calendar is rendered over the Finder window
QC #: Date Reported: Area:
98189 8/26/2011 FireMonkey\Effects
Description: Steps:
[QC Short Description]
Bevel effect not working

[QC Description]
Bevel Effect shows black along the top edge where it should be the brightest.
QC Entry 98189
-Create a new firemonkey application -Add a TRectangle -Add a TBevelEffect
QC #: Date Reported: Area:
97923 8/20/2011 FireMonkey\Additional
Description: Steps:
[QC Short Description]
TComboTrackBar, setting Value property does not refresh combo until second call

[QC Description]
There's a minor bug at TComboTrackBar.SetValue, see steps

Changing the Value property refresh the combo with its previous value instead of the new one.
QC Entry 97923
-New FMX HD app -Drop a TComboTrackBar -Object inspector: Change the Value propety Exp: Text property and combo display the new Value Act: Old Value is displayed Suggested fix: procedure TComboTrackBar.SetValue(const AValue: Single); begin if (FValue <> AValue) and (not ReadOnly) then begin // set the Value property of the trackbar and supress change notifications // coming from it FTrackBarNotify := False; FTrackBar.Value := AValue; FTrackBarNotify := True; // set the Text property <---------------------- THESE LINES GO AFTER MODIFYING FTrackBar.Value FText := GetValueAsString; end; end;
QC #: Date Reported: Area:
98431 9/1/2011 FireMonkey\Colors
Description: Steps:
[QC Short Description]
[MacOS] FMX: Red & Blue Colors are swapped

[QC Description]
The colors Red & Blue are swapped in the FireMonkey TBitmap.Clear and TBitmap.FillColor functions when running an application on OSX.
QC Entry 98431
1. File | New FireMonkey Application 2. Add a TImageViewer control, and the following FormCreate and FormPaint events procedure TForm1.FormCreate(Sender: TObject); var bmp: TBitmap; begin bmp := TBitmap.Create(40, 40); bmp.Clear(claRed); ImageViewer1.Bitmap := bmp; bmp.Free; end; procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); begin Canvas.Clear(claRed); end; 3. Run the application on OSX expected: ImageViewer contains a red rectangle act: ImageViewer contains a blue rectangle
QC #: Date Reported: Area:
93818 5/12/2011 FireMonkey\Runtime
Description: Steps:
[QC Short Description]
FireMonkey 2D fails with AV when running in a VMWare VM

[QC Description]
A minimal FireMonkey 2D application consiting of a button on a form fails with an AV when running on a XP SP3 VM hosted on ESXi 4.1. Similar behavior has also been observed by another FT user on VMware Workstation 7.1.4

The problem may be related to the capabilities of the VMware SVGA II video driver
QC Entry 93818
[PulsarBeta] 

Environment: - Windows XP SP3 virtual machine with all Windows updates applied - VMWare ESX 4.1 host with latest updates applied - VMWare SVGA II driver (vmx_svga.sys) 11.6.0.35 1) Start the Pulsar IDE 2) Create a new FireMonkey 2D Application 4) Add a button to the default form 5) Run the application under the debugger 6) Click the button Expected: Button pressed Actual: Application raises an AV inside the SetTextureUnitFromContext method of TDirectXContext. The AV occurs because FHandle has a value of zero and is being typecast to IDirect3DDevice9.
QC #: Date Reported: Area:
93811 5/12/2011 FireMonkey\Runtime
Description: Steps:
[QC Short Description]
Sizing with status bar is wrong

[QC Description]
If you place a status bar on a FM 2d form and then use it at runtime, the form moves position to 0, 0 and the form dimensions are incorrect.
QC Entry 93811
new FM 2d app add Status bar Run Resize the form using the statusbar gripper. exp: form resizes smoothly act: the forms position moves to the top left corner of the monitor and the width and height are increased too much. Make sure the form you are resizing is central to the desktop to easily see the effect
QC #: Date Reported: Area:
95205 6/16/2011 FireMonkey\Runtime
Description: Steps:
[QC Short Description]
No taskbar icon if BorderStyle = bsToolWindow

[QC Description]
A FMX 2D or 3D application has no taskbar icon if the BorderStyle is bsToolWindow or bsSizeToolWin
QC Entry 95205
1: Create new FireMonkey 2D or 3D Application 2: Set BorderStyle of main form to bsToolWindow 3: Run application 4: Observe missing icon on task bar
QC #: Date Reported: Area:
96429 7/20/2011 FireMonkey\Runtime
Description: Steps:
[QC Short Description]
Changing TVisualObject3D.Visible does not repaint the viewport

[QC Description]
Other properties call Repaint, but Visible does not.

procedure TVisualObject3D.SetVisible(const Value: Boolean);
begin
if FVisible <> Value then
begin
FVisible := Value;
if FVisible then
StartTriggerAnimation(Self, 'IsVisible');

// POSSIBLE FIX ----------
if Assigned(FViewport) and 
(not (csDestroying in ComponentState)) then
FViewport.NeedRender;
// -------------------------------------

end;
end;

QC Entry 96429
-New FMX 3D app -Drop a TCube 3d shape component on Form -Type Cube1 OnClick event: procedure TForm44.Cube1Click(Sender: TObject); begin Cube1.Visible:=False; end; Run, click the cube Exp: The cube disappears Act. Still visible If you now resize the form, the viewport is repainted and the cube is not painted (this is fine).
QC #: Date Reported: Area:
97589 8/13/2011 FireMonkey\Runtime
Description: Steps:
[QC Short Description]
fsItalic no longer works

[QC Description]
fsItalic no longer works in beta9
QC Entry 97589
- create a new FMX HD project - drop a TLabel on the form and set its Font.Style to fsItalic - run on Mac exp: label appears italic obs: it doesn't
QC #: Date Reported: Area:
97802 8/18/2011 FireMonkey\Runtime
Description: Steps:
[QC Short Description]
Unnecessary repaint of TForm3D when moving the mouse over 3D controls

[QC Description]
When moving the mouse over a 3D control, at mouse enter and mouse leave, the TControl3D forces a Repaint.

This has a very high CPU cost when there are many 3D controls on the viewport.

I think the repaint should not be forced. If there are animations that should be triggered on mouse movement, the animations will start and will change PropertyName, and that property changes should automatically invalidate the form.

QC Entry 97802
-Run attached FMX 3D app -Move the mouse over the spheres. Exp: Form caption does not change Act: Form caption changes while moving the mouse, indicating repaints are performed.
QC #: Date Reported: Area:
97531 8/12/2011 FireMonkey\Runtime
Description: Steps:
[QC Short Description]
More TCanvasQuartz.FillText/MeasureText leaks

[QC Description]
- The str variable is leaked:

"CFRelease(str)" should be added to those routines

- fontrefs are leaked:

All "fontref := newFontRef;" lines should be replaced with;

begin
CFRelease(fontref);
fontref := newFontRef;
end;
QC Entry 97531
 
QC #: Date Reported: Area:
98639 9/7/2011 Databinding
Description: Steps:
[QC Short Description]
Insert/Append fails with empty clientdataset with livebinding

[QC Description]
A firemonkey grid that is bound to an empty dataset shows 2 dialogs "At beginning of table" followed by "At end of table"
when clicking in the grid after Insert/Append a new record either programatically or via TBindNavigator.
QC Entry 98639
Create a firemonkey project with: - TClientDataset - TDataSource - TBindingsList - TBindScopeDB - TBindNavigator - FMX.TGrid; Add some fielddefs to the dataset.and select create dataset Hook up the datasource, the grid live bindings and BindNavigator. Run the application Insert a new row with the Bind Navigator; Click in the grid to attempt to add data to the newly created row. Dialogs are show as in description

Server Response from: ETNASC04