Watch, Follow, &
Connect with Us
Public Report
Report From: Delphi-BCB/IDE/Open Tools API    [ Add a report in this area ]  
Report #:  78289   Status: Closed
Read/Write of keyboard macros broken (IOTARecord.ReadFromStream, WriteToStream)
Project:  Delphi Build #:  14
Version:    14.0 Submitted By:   Erik Berry
Report Type:  Basic functionality failure Date Reported:  10/1/2009 5:17:47 PM
Severity:    Commonly encountered problem Last Updated: 3/20/2012 2:24:39 AM
Platform:    All platforms Internal Tracking #:   273151
Resolution: Fixed (Resolution Comments) Resolved in Build: : 15.0.3890.34076
Duplicate of:  None
Voting and Rating
Overall Rating: No Ratings Yet
0.00 out of 5
Total Votes: 3
Description
Using IOTARecord to read/write macros to a stream always fails with this error message: "Invalid Key macro format."  I believe the problem is
that the code to read/write the macro stream (VEdTypes.TRecord.ReadFromStream) was not adjusted for unicode compatibility.

The attached test case works fine in older releases.  This bug prevents the macro library tool in GExperts from working.
Steps to Reproduce:
Compile and install the attached package into the IDE with the default keymapping
Focus the code editor, Shift+Ctrl+R to begin a macro, type "zzz" and then CR, Shift+Ctrl+R to end recording, Shift+Ctrl+P to playback the macro, and the zzz CR should appear in the editor
Help, Test Wizard which tries to read the macro to a stream and then write it immediately back to the IDE stream
Resulting error from VEdTypes.TRecord.ReadFromStream:
---------------------------
Error
---------------------------
Invalid Key macro format.
---------------------------
OK   Details <<  
---------------------------
[208899ED]{coreide140.bpl} VEdTypes.Error (Line 641, "VEdTypes.pas" + 0) + $11
[20889AB7]{coreide140.bpl} VEdTypes.TRecord.ReadFromStream (Line 654, "VEdTypes.pas" + 4) + $0
[502717F7]{vcl140.bpl  } Dialogs.ShowMessagePos (Line 6202, "Dialogs.pas" + 0) + $F
[131D2D2B]{WizPackage.bpl} Testrecord.Register + $167
[2075F021]{coreide140.bpl} ExptMain.TExpertServices.WizardItemClick (Line 659, "ExptMain.pas" + 2) + $12
[50075663]{rtl140.bpl  } Classes.TBasicAction.Execute (Line 12512, "Classes.pas" + 3) + $7
[502B182D]{vcl140.bpl  } ActnList.TContainedAction.Execute (Line 448, "ActnList.pas" + 8) + $2C
[502B2608]{vcl140.bpl  } ActnList.TCustomAction.Execute (Line 1094, "ActnList.pas" + 7) + $8
[50075527]{rtl140.bpl  } Classes.TBasicActionLink.Execute (Line 12441, "Classes.pas" + 2) + $7
[214BB9E1]{vclactnband140.bpl} ActnMenus.TCustomActionMenuBar.ExecAction (Line 1066, "ActnMenus.pas" + 6) + $D
[214BCEA7]{vclactnband140.bpl} ActnMenus.TCustomActionMenuBar.TrackMenu (Line 1748, "ActnMenus.pas" + 15) + $15
[214C0460]{vclactnband140.bpl} ActnMenus.TCustomActionMainMenuBar.TrackMenu (Line 3474, "ActnMenus.pas" + 3) + $3
[214BB5A5]{vclactnband140.bpl} ActnMenus.TCustomActionMenuBar.CMItemClicked (Line 945, "ActnMenus.pas" + 3) + $4
[50295DFC]{vcl140.bpl  } Controls.TControl.WndProc (Line 7062, "Controls.pas" + 91) + $6
[50295A20]{vcl140.bpl  } Controls.TControl.Perform (Line 6840, "Controls.pas" + 10) + $8
[50299E58]{vcl140.bpl  } Controls.GetControlAtPos (Line 9563, "Controls.pas" + 4) + $76
[5029A583]{vcl140.bpl  } Controls.TWinControl.WndProc (Line 9776, "Controls.pas" + 101) + $1D
[5029A6C0]{vcl140.bpl  } Controls.TWinControl.WndProc (Line 9819, "Controls.pas" + 144) + $6
[214BCF96]{vclactnband140.bpl} ActnMenus.TCustomActionMenuBar.WndProc (Line 1783, "ActnMenus.pas" + 25) + $4
[50299D60]{vcl140.bpl  } Controls.TWinControl.MainWndProc (Line 9540, "Controls.pas" + 3) + $6
[50076360]{rtl140.bpl  } Classes.StdWndProc (Line 13014, "Classes.pas" + 8) + $0
[50290916]{vcl140.bpl  } Controls.FindControl (Line 3377, "Controls.pas" + 6) + $9
[502C8749]{vcl140.bpl  } Forms.TApplication.ProcessMessage (Line 9784, "Forms.pas" + 30) + $1
[502C878E]{vcl140.bpl  } Forms.TApplication.HandleMessage (Line 9814, "Forms.pas" + 1) + $4
[502C8AB9]{vcl140.bpl  } Forms.TApplication.Run (Line 9951, "Forms.pas" + 26) + $3
[0042D94A]{bds.exe     } bds.bds (Line 200, "" + 8) + $FFFB
Workarounds
None
Attachment
TestRecord.zip
Comments

Thomas Mueller at 10/2/2009 8:31:43 AM -
Just to make clear what this is about: The Makro Library expert in GExpert does not work in Delphi 2009 and Delphi 2010 because of this problem.

Server Response from: ETNACODE01