Release Notes
Go Up to What's New
These Release Notes contain important information that might not appear in the main product documentation. We recommend that you read this page in its entirety. For the most current version of these notes, see Release Notes.
Contents
- 1 Installing, Uninstalling, and Upgrading Appmethod
- 2 FireMonkey
- 3 FireDAC
- 4 Box2D
- 5 IDE
- 5.1 Additional Options for BCC32C to Generate a Package
- 5.2 CodeGuard Option Is Not Supported by Clang-enhanced C++ Compilers
- 5.3 In the Multi-Device Form Designer You Can Only Delete a Component from the Master View
- 5.4 Renamed iOS Project Might Fail at Run Time or When Debugging
- 5.5 Mobile Setup Wizard Content Is Blocked on Windows Server 2008
- 5.6 Version Info Settings Inheritance
- 5.7 Windows 10 Compatibility
- 5.8 Changes in the AndroidManifest.template.xml File
- 5.9 Build Configuration for Android Services
- 6 C++ Toolchains
- 7 InterBase
- 8 External Software
- 9 Help
- 10 See Also
Installing, Uninstalling, and Upgrading Appmethod
Before you install, uninstall, or upgrade the product, read the following files, for your chosen language:
appmethod_install_xx.htm
: lists the system requirements, as well as installation and upgrade procedures.appmethod_license_xx.rtf
: contains your Software License and Support agreement.appmethod_deploy_xx.htm
: contains information about deployment.
Read the latest version of the appmethod_install_xx.htm
file, available at the following locations:
- Installation Notes.
- The installation directory. The default location is:
C:\Program Files (x86)\Embarcadero\Studio\17.0
FireMonkey
Names Must Be Assigned to All Components Before Creating a New View in the Form Designer
If you open an older FireMonkey app in 1.17, you might encounter the following error message:
Cannot inherit from form 'FormName". It contains a component with a blank name property.
The new Views Inheritance system requires that you assign a name to all components before you can create a new View in the Form Designer.
iOS App Might Not Close/Reopen Properly After Running without Debugging on the Device
If you run your iOS app on the device without debugging and then kill the process of your application on the device, you will need to run the PAServer reset command if you want to run the process outside the IDE; type 'r' at the PAServer command prompt.
Web Browser Might Not Support Some Linking Behavior on Various Platforms
On a Web page that is displayed with TWebBrowser, when you click a hyperlink with the Target property set to "_blank" or "_search", you might encounter the following issues:
- On Android and iOS platforms, the application opens a linked page in the same TWebBrowser window.
- On Win32 and Win64 platforms, the application opens a linked page in a new Internet Explorer window.
- On the Mac OS X platform, clicking the links has no effect (the application cannot open the linked page).
FireDAC
64-bit Windows C++ Application with a FireDAC Component Might Raise Error
The following error is raised when attempting to compile an application using a single FireDAC component, when the platform is Windows x64 with static linking:
c:\program files (x86)\embarcadero\studio\<n.n>\Bin\CodeGear.Cpp.Targets : warning : Warning: Out of memory c:\program files (x86)\embarcadero\studio\<n.n>\Bin\CodeGear.Cpp.Targets(2751,5): error MSB6006: "ilink32" exited with code 2.
The workaround is not not link FireDAC statically in Win64 C++ apps.
Workaround for INI File Errors with FireDAC
In previous versions, FireDAC created INI files in "C:\Program Files", which in modern Windows versions is read-only for regular Windows users. If you are getting errors like "Can't modify file" when adding new FireDAC connection definitions using the Data Explorer or FDExplorer, then FireDAC INI files might still be located in "C:\Program Files". To resolve the issue, you should download and run the FDFixIni utility, which relocates the FireDAC INI files to a correct location and updates the FireDAC registry. By default, the correct location is "C:\Documents and Settings\All Users\Documents\Embarcadero\Studio\FireDAC".
To resolve the issue:
- download FDFixIni from the Registered Users site: http://cc.embarcadero.com/item/29812;
- extract the .EXE from the downloaded archive;
- and run it. If the utility runs successfully, it will output two lines with
Move [old location] to [new location]
.
Box2D
Appmethod 1.17 does not provide prebuilt .dcu
files for the Box2D.*.pas
units.
- For Object Pascal projects using the
Box2D.*.pas
units, select Project > Options > Object Pascal Compiler, and update Search Path toinclude ${BDS)\source\FlatBox2D
. - For more information about using Box2D, see Box2D.
IDE
Additional Options for BCC32C to Generate a Package
When building a package that contains a component you want the IDE to use, you need to set additional options for the BCC32C, the Clang-enhanced C++ Compiler for 32-bit Windows.
Under Project > Options > C++ Compiler > Advanced > "Other options" > "Additional options to pass to the compiler", please add -tP in this field.
CodeGuard Option Is Not Supported by Clang-enhanced C++ Compilers
The CodeGuard option in Project > Options > C++ Compiler > C++ Compiler Debugging is not supported by clang compilers.
If you switch a project to the Clang-enhanced BCC32C compiler you must maintain CodeGuard set to false. See Options Not Supported by Clang-enhanced C++ Compilers for further information.
In the Multi-Device Form Designer You Can Only Delete a Component from the Master View
When you try to delete a component, such as a TButton, from a different view (not the Master view), the following error message appears:
Selection contains a component, Button1, introduced in an ancestor and cannot be deleted
The solution is to delete the component from the Master view. For more information about views, see Form Designer.
Renamed iOS Project Might Fail at Run Time or When Debugging
Renaming a project in the IDE can cause an iOS app to fail at run time and debug time. To correct the issue, do the following:
- Select Project > Deployment.
- In the Deployment Manager, click the Revert To Default speed button.
Mobile Setup Wizard Content Is Blocked on Windows Server 2008
In Windows Server 2008, Windows shows an Internet Explorer dialog box (blocking the Mobile Help Wizard content) when the Mobile Help Wizard opens. You must click the Add button (adding the content of the wizard to the whitelist of Internet Explorer) in order to see the content of the wizard.
Appmethod displays the Mobile Setup Wizard when you are working on a mobile application and you need to follow some configuration steps, or you run into an issue and need help. (You can also select Help > Help Wizards > Mobile Help Wizard to open the Mobile Help Wizard.)
You can see the mobile setup wizard here:
Version Info Settings Inheritance
To include version information in a project targeting Windows, do not change the key values on the All Platforms target. Instead, change the values individually for each platform (32-bit and 64-bit). The targets do not inherit the values properly from the All platforms target.
Windows 10 Compatibility
If you upgrade to Windows 10 from Windows 7, 8, or 8.1, you may experience some issues with the Structure pane in Appmethod C++. This issue is due to a faulty install of Microsoft Visual J# Version 2.0 in the Windows system.
The workaround is to reinstall Microsoft Visual J# Version 2.0. Follow these steps:
- Uninstall the Microsoft Visual J# Version 2.0. This process results in an error (it is expected).
- Search the registry and delete all entries related to J#.
- Reboot the device.
- Install Microsoft Visual J# Version 2.0.
- Reboot the device.
See the Microsoft Community forum for more information: Microsoft Community - Can not install Microsoft Visual J#® 2.0 on Windows 10 (not compatible)
Changes in the AndroidManifest.template.xml File
Projects from other versions targeting Android need to create again the AndroidManifest.template.xml, to avoid misbehaviours due to changes in the AndroidManifest.template.xml file.
To keep changes from an old AndroidManifest.template.xml, edit the new file and include your previous modifications.
See the steps to follow here: Re-creating the AndroidManifest.template.xml File.
Build Configuration for Android Services
Deploying an Android service application selecting a different build configuration from the one that was selected when the Android service was added to the host application, causes that some files are not added to the Deployment Manager and the application fails at run time.
For more information on how to solve the problem, see Android Services Troubleshooting.
C++ Toolchains
Resolving Multiple Declarations for DWORD or ULONG in OS X Applications
In a multi-device application compiled for the OS X target platform, E2238 can occur because the OS X headers iodbcunix.h
and sqltypes.h
declare typedef
statements for DWORD
and ULONG
, and the Appmethod C++ sysmac.h
file, which is included by System.hpp
, also provides similar typedef
statements. See E2238 for a workaround.
Specifying Dependent and Required Packages When Using a Component in a C++ Package
When using an existing component in a C++ package, the IDE does not automatically add the dependent (required) package for the component. You need to perform this step manually.
Without the relevant dependent (required) packages, the C++ package might fail to link because the linker cannot locate .obj files that must be initialized when that component is used. To avoid such linker errors, you need to add the package of the component and its dependencies to the Requires node of your C++ package (in the Project Manager).
The following example illustrates how to determine the required packages for a component and eliminate the Unable to open 'xxx.obj linker errors by creating a dummy VCL Forms Application that uses the component.
By default, a newly-created C++ Multi-Device Application links with the .rtl and .fmx packages, as shown by the *.bpi files listed on the linker line (viewable in View > Messages):
Ilink32 command line:
c:\BDSLoc\bin\ilink32.exe ... -aa -V5.0 -Tpe c0wfmx32w rtl.bpi fmx.bpi memmgr.lib sysinit.obj .\Win32\Debug\Project30.obj .\Win32\Debug\Unit26.obj , .\Win32\Debug\Project30.exe , .\Win32\Debug\Project30.map , import32.lib cp32mti.lib , , Project30.res
When you add new components, the IDE calculates dependent packages and adjusts the link line. To see this, add the component you want to use in a C++ Package to the Multi-Device Form. This example uses the component TFDSchemaAdapter. Now rebuild the application. You will see that several new .bpi files have been added to the link line:
Ilink32 command line:
c:\BDSLoc\bin\ilink32.exe ... -aa -V5.0 -Tpe c0w32w rtl.bpi fmx.bpi FireDACCommonDriver.bpi FireDACCommon.bpi xmlrtl.bpi dbrtl.bpi FireDAC.bpi FireDACSqliteDriver.bpi memmgr.lib sysinit.obj .\Win32\Debug\Project30.obj .\Win32\Debug\Unit26.obj , .\Win32\Debug\Project30.exe , .\Win32\Debug\Project30.map , import32.lib cp32mti.lib , , Project30.res
These new .bpi files are the packages on which your component depends. In the case of TFDSchemaAdapter, the .bpi files are:
FireDACCommonDriver.bpi FireDACCommon.bpi xmlrtl.bpi dbrtl.bpi FireDAC.bpi FireDACSqliteDriver.bpi
So to use the TFDSchemaAdapter component in a C++ Package, you need to explicitly add each one of these bpi files as 'Required' references in the IDE (see Packages).
Downloading DirectX Header Files
We only ship DirectX headers inside the Microsoft Windows Platform SDK. If you encounter errors such as "d3d.h file not found", the HPP generated for that Object Pascal unit contains #include <D3D*.hpp>
. You can do either of the following:
- Add a
{$NOINCLUDE Winapi.D3DX9}
directive to the unit that uses the D3D unit and regenerate the HPP file of that unit. The regenerated HPP will not contain the#include <Winapi.D3DX9.hpp>
. - Download the DirectX SDK that the D3D header relies upon. You can download the DirectX SDK for free from Microsoft. For more information, see Where is the DirectX SDK? (Windows).
Events with Structures or Sets of 5-8 Bytes Are Not Valid for BCC64
Events generated by the IDE that take a struct or set that is between 5 and 8 bytes are valid for 32-bit C++, but not valid for 64-bit C++. This only affects cases where the type is passed by value. For cases where the type is passed by reference, there is no difference between Win32 and Win64.
For example, an Access Violation occurs when accessing the TPoint &MousePos
parameter of the OnContextPopup event, because the TPoint &MousePos
parameter is invalid on the Win64 platform. If you look at the __closure type declaration, you can see the difference between Win32 and Win64. Here is the __closure declaration for the PopupMenu event of TControl:
#ifndef _WIN64
typedef void __fastcall (__closure *TContextPopupEvent)(System::TObject* Sender, const System::Types::TPoint &MousePos, bool &Handled);
#else /* _WIN64 */
typedef void __fastcall (__closure *TContextPopupEvent)(System::TObject* Sender, System::Types::TPoint MousePos, bool &Handled);
#endif /* _WIN64 */
To get the code to work for both Win64 and Win32, you must #ifdef the IDE-generated handler as follows:
#ifndef _WIN64
void __fastcall TForm46::FormContextPopup(TObject *Sender, TPoint &MousePos, bool &Handled)
#else
void __fastcall TForm46::FormContextPopup(TObject *Sender, TPoint MousePos, bool &Handled)
#endif
{
ShowMessage(System::String().sprintf(L"Mouse at (%d,%d)", MousePos.X, MousePos.Y));
}
InterBase
InterBase XE7 Edition Accompanies Some Editions of Appmethod 1.17
This note pertains to users who have both an earlier version of Appmethod and Appmethod 1.17 installed on the same machine. In this note, the mention of Appmethod also implicitly includes Object Pascal and Appmethod C++ editions.
Each version of Appmethod includes a license for a version of InterBase:
Product | InterBase Version |
---|---|
Appmethod 1.13 | InterBase XE3 Developer Edition |
Appmethod 1.14 | InterBase XE3 Developer Edition |
Appmethod 1.15 | InterBase XE3 Developer Edition |
Appmethod 1.16 | InterBase XE7 |
Appmethod 1.17 | InterBase XE7 |
Since all these Appmethod license suites are visible system-wide, only one license of InterBase can be used at any time.
For example, if you are running the "InterBase XE3 Developer Edition" that comes with Appmethod 1.14, you cannot start a simultaneous instance of the "InterBase XE3 Developer Edition" that comes with Appmethod 1.15. You cannot start a simultaneous instance of the InterBase XE7 edition that comes with Appmethod 1.17 either. When you try, you receive an error dialog that states "InterBase licensing error", and the InterBase log shows "Registration file error: License is in use by another instance of InterBase".
For more information about running multiple instances of InterBase, see Multiple Instances section in http://docs.embarcadero.com/products/interbase/IBXE7/OpGuide.pdf.
Workaround for InterBase Licensing Errors
- Stop all your instances of InterBase.
- Also, if you have set up this instance as a Windows Service, please disable it in the system Service Control Panel.
- Start the instance of InterBase that you want to use. It should now launch successfully with the proper license.
The aforementioned earlier Appmethod versions, and applications built by them, can also work with the updated InterBase XE7 edition installed with Appmethod 1.17. Have your older IDE tools and applications connect to your database via TCP loopback to this InterBase instance. For example:
localhost/gds_db:<dbpath>
In older versions of Appmethod, you might also want to select Tools > Options > Environment Options > Environment Variables and add the following new "User overrides" entries for making local client connections.
Variable | Value |
---|---|
IB_Protocol
|
gds_db
|
InterBase
|
C:\Program Files (x86)\Embarcadero\Studio\17.0\InterBaseXE7
|
External Software
Issues might occur for applications debugged in an environment that includes a third-party keyboard switcher such as the Yandex Punto Switcher. If the application is closed by Windows, and an access violation is raised by the application, please ignore this access violation error.
Help
By default, the help files are installed at:
C:\Program Files (x86)\Embarcadero\Studio\17.0\Help\Doc