One of the new features in the SmartInspect 3.4 release is support for FireMonkey on Windows. This is the first step towards full cross-platform FireMonkey support in an upcoming release.
However, adding this support has necessitated a change in the names of the Delphi client units, in order to separate the VCL and FMX clients.
Previously in a VCL project you would have added the SmartInspect and the SiAuto unit to your uses clause. Now, these have changed, to SmartInspect.VCL and SmartInspect.VCL.SiAuto. There are also equivalent units SmartInspect.FMX and SmartInspect.FMX.SiAuto
Note, we tried very hard to avoid this change, however for a number of reasons we needed a clear signal from the user whether they wanted to use SmartInspect in a VCL or FMX application (or neither. We’ll get to that in a moment), and after exploring a number of alternatives, this had the least number of negative consequences.
What does this mean for my existing projects?
Well, out of the box they won’t compile, however, before you inundate me with cranky emails, there are a few easy solutions:
- If you just hate these dotted namespaces, or if you’re using a version of Delphi that doesn’t support them, don’t worry. There is a version of the units with the old names in a delphi7 subdirectory. Change your paths in Delphi to point there instead and you’ll be fine.
We’ve marked the classes in those Units as deprecated, however we’ll do our best to sync any fixes/new features across. Eventually we’ll probably have to stop, but we’ll do it as long as we can.
- If you are happy to use the namespaces, but just don’t look forward to changing all your code, also don’t worry. Just add the following to your Unit Aliases in your Project Options and Delphi will substitute in the correct units when it compiles:
This is what we’re doing with existing projects. Add the aliases and then gradually change the uses clauses over time (or maybe never)
- Lastly, you can of course do a search and replace.
In most cases one of the above will get you going quickly. Very occasionally you may find you need to add SmartInspect.Core.pas to the uses clause, but this will likely be only if you have been using some internal SmartInspect types.
What if I’m writing code that isn’t specific to the VCL or FMX?
Like server-side code, or a console app, or even business logic that will be used by both? That’s where those core units come in: SmartInspect.Core.pas and SmartInspect.Core.SiAuto.pas. These act both as the base classes for the VCL and FMX versions, but also full SmartInspect clients that don’t contain the framework-specific pieces.
Again, apologies for this change. We take backwards compatibility very seriously, but introducing support for an entirely new framework means that it is practically unavoidable. However, this does set us up for future additions without triggering further breaking changes.
If you have any issues, please let us know on firstname.lastname@example.org