First, congrats on the new UniDAC release. It looks really nice. The introduction of the TUniAlerter was the last piece, which I needed to move from IBDac.
I have used the Migration Wizard as a start. It is very useful tool and it saves a lot of work. Unfortunately it was not able to convert everything I needed. Here some ideas, which can be easily added and will save a lot of time for people like me:
1. I got "Unit redeclared"-Compile Error in every converted unit. It was because of "DBAccess" and "MemDS" ware added by the MigWiz. Since IBDac also uses them, there is actually no need to add them again.
2. I have a lot of temp quieries with q.FetchAll := True. This works no more and I hat to change it manually to q.SpecificOptions.Values['FetchAll'] := 'True'. Not big deal, but takes time.
3. Same for IbcQuery.ExecSQL to UniQuery.Execute. I've had a lot of ExecSQL (which I know is for BDE compatibility only), but either you change it automatically with the MigWiz or please introduce an ExecSQL in TUniQuery.
4. Parameters of the Queries ware not converted at all. Big problem for me. They ware present in the uni queries, but their data type and in/out type ware not migrated. I hat to manually check every single query component and correct the declarations.
Those 4 points took most of the time (some hours). Since you are parsing the code anyway, changing such properties automatically will speed conversion process very very much.
I have a question, I need confirmation on:
5. There is no UniConnection.AutoCommit and UniQuery.AutoCommit, which are available in the IBDac components. Can I safely just ignore them, when creating by code?
And finally I've had some difficulties with the TUniAlerter:
6. MigWiz does not convert TIBCAlerter to TUniAlerter. This is very unfortunate, because some properties are not directly compatible.
7. Manual conversion is not directly possible, because the OnEvent event has different signature:
Code: Select all
procedure TformIBC.PictureEvent(Sender: TObject;
EventName: String; EventCount: Integer);
procedure TformUni.PictureEvent(Sender: TDAAlerter;
const EventName, Message: String)
8. There is a Assert error dialog, when you try to open the specific options of a UniAlerter. Here the Debug log:
Code: Select all
exception class : EAssertionFailed
exception message : Assertion failure (D:\Projects\Delphi\Dac\UniDac\Source\Design\UniSQLOptionsFrame.pas, line 96).
04ae4d4d dclunidac70.bpl Unisqloptionsframe TUniSQLOptionsFrame.DoActivate
04a4d8e7 dcldac70.bpl Crframe TCRFrame.ReActivate
04a4d8b1 dcldac70.bpl Crframe TCRFrame.Activate
04a4db95 dcldac70.bpl Crtabeditor TCRTabEditorForm.DoActivate
04a4608c dcldac70.bpl Creditor TCREditorForm.FormShow
002cd879 vcl70.bpl Forms TCustomForm.DoShow
--------
So, a summary:
Migration was easier than I thought. All properties of components that ware already placed on forms ware converted very correctly (except the Params of the Queries). Putting some of the IBC properties in the SpecificOptions works also. If my points 1 to 4 from above get implemented, it will be even faster.
The problem with TUniAlerter is a real "show stopper" for me. I was able to compile my application, but I hat to comment out the event handling. For now will be running my tests for all other application parts. I hope this issue will be fixes as soon as possible.
Best regards, keep up your great work, and happy new year!
Stoyan