4D v18.2

Deprecated or removed features

Home

 
4D v18.2
Deprecated or removed features

Deprecated or removed features    


 

 

For over 30 years, our main goal has been to enhance our product (using new concepts and technologies) while ensuring the compatibility of 4D applications. As early adopters of 4D know, we have always put a lot of effort into compatibility, and we can find 4D applications all over the world that were created years and years ago, with old versions of 4D and of an OS, that are still working with the latest revisions of the product.

Unfortunately, it sometimes becomes too difficult to mix old technologies with new:

  • 4D must bring new technologies, new APIs, and new paradigms to developers
  • OSes change every day, and sometimes deprecate their own old APIs

This is why 4D sometimes needs to tag some commands and features as deprecated, meaning that one day, they will be removed from the language in a future major version.

Letting developers know what is deprecated and what kind of replacement can be used instead makes it much more comfortable for them to implement the change in their code: There is no urgency, no pressure, and the developer has plenty of time to make any necessary changes.

FeatureReplacementStatus in current 4D version
4D & 4D Server 32-bit versions4D 64-bit/4D Server 64-bitRemoved.
4D Write4D Write ProRemoved
4D View4D View ProRemoved
XSLT commandsUse PHP libxslt module or the PROCESS 4D TAGS commandRemoved
QuickTime support (compatibility option)Use native formatsRemoved
Float field typeAutomatically converted to RealRemoved
Non-Unicode mode (converted pre-v11 database)Move to UnicodeRemoved
Pictures in PICT formatUse modern formats; help is provided by GET PICTURE FORMATSRemoved
DatabaseOutsidePackage keynone Removed
Right-to-left features removednone Removed
User FormsDynamic Forms Deprecated
Dynamic assignment of variables received through HTTP (compatibility option for databases created prior to v13.4)WEB GET VARIABLES command (to recover variables). WEB GET BODY PART/WEB Get body part count commands (to recover posted files)Deprecated
Converted SubtablesUse N->1 tablesDeprecated
Mac OS QuickDraw fonts no longer supportedFont namesRemoved
API QuickDraw for plug-insNew SDK plug-in for third-party plug-insRemoved
File and folder APIs on MacPath to object, Object to pathDeprecated
Code-based standard actionsString patterns ("ak" constants in the Standard Action theme)Deprecated
Mac Resources Use "Resources" folder. For compatibility, you can still use it in converted databases. We no longer support write access commands.OS (cicn icons: removed.) Database .RSR files are not opened automatically. You need to use Open resource file.
Management of CPU prioritynone Deprecated
Legacy network layerUse ServerNetDeprecated
4D MobileORDA and REST ServerDeprecated

 

Explanation of values for the “Status” column:

  • Removed: No longer available in the current version (or the version indicated).
  • Deprecated: Should no longer be used and will be removed in a future major version.
  • OS: Depends on officially deprecated OS technologies (e.g.: PICT format). Status is the same as Deprecated, but an OS could remove the support before we do.

Every obsolete command is prefixed by "_o_" and is not available in 4D lists (code editor, type-ahead feature, etc.). Obsolete (or deprecated) commands will not be removed from existing code and will continue to work normally as long as they are supported. It is still possible (but not recommended) to add an obsolete command in a method by simply entering its name prefixed by "_o_"; it will be interpreted correctly.

 

CommandReplaced withObsolete since
4D Environment theme:
_o_DATA SEGMENT LIST-v11
Backup theme:
_o_INTEGRATE LOG FILEINTEGRATE MIRROR LOG FILEv16
Compiler theme:
_o_ARRAY STRINGARRAY TEXTv12
_o_C_GRAPH(use SVG with the GRAPH command)v12
_o_C_INTEGERC_LONGINTv12
_o_C_STRINGC_TEXT (as soon as database is in Unicode)v12
Data Entry theme:
_o_ADD SUBRECORDADD RECORD in the n table of a N->1 relationv12
_o_MODIFY SUBRECORDMODIFY RECORD in the n table of a N->1 relationv12
Drag and Drop theme:
_o_DRAG AND DROP PROPERTIESCommands from the Pasteboard themev17 R4
Form Events theme:
_o_DuringReplace with Form event code and the appropriate eventv12
Forms theme:
_o_FORM GET PARAMETERDisabledv17 R4
Graphs theme:
GRAPH (using 4D Graph Area)Use an SVG picture insteadv12
Hierarchical Lists theme:
_o_REDRAW LISTRemove in code (does nothing since v11)v11
Language theme:
_o_NO TRACEUse the No trace button of the debuggerv18
List Box theme:
LISTBOX Get property constants: 
_o_lk display hor scrollbar/_o_lk display ver scrollbarOBJECT GET SCROLLBARv16 R3
_o_lk footer heightLISTBOX Get footers heightv16 R3
_o_lk header heightLISTBOX Get headers heightv16 R3
_o_lk hor scrollbar position/_o_lk ver scrollbar positionOBJECT GET SCROLL POSITIONv16 R3
Objects (Forms) theme:
_o_DISABLE BUTTON/_o_ENABLE BUTTONOBJECT SET ENABLEDv12
_o_OBJECT Get actionOBJECT Get actionv16 R3
_o_OBJECT SET COLOROBJECT SET RGB COLORSv18
Pictures theme:
_o_PICTURE TO GIFPICTURE TO BLOBv16 R5
Printing theme:
_o_PAGE SETUPSET PRINT OPTION, GET PRINT OPTIONPrint settings to BLOBBLOB to print settingsv18
Selection theme:
_o_MOBILE Return selectionORDAv18
SQL theme:
_o_USE EXTERNAL DATABASESQL LOGINv12
_o_USE INTERNAL DATABASESQL LOGOUTv12
String theme:
_o_Mac to Winv11
_o_Win to Macv11
Subrecords theme: all commandsReplace “nnn SUBRECORD” and “nnn SUBSELECTION” with an action on the N record or N-selection of the N-table in a N->1 relationv12
System Documents theme:
_o_Document typePath to objectv12
_o_Document creatorPath to objectv16 R6
_o_SET DOCUMENT TYPEObject to pathv16 R6
_o_SET DOCUMENT CREATORObject to pathv16 R6
_o_MAP FILE TYPESUse UTIs and Info.plistv16 R6
System Environment theme:
_o_Font nameUse font identifiersv14
The OBJECT SET FONT command no longer accepts a LongInt parameter for the font: this parameter is now a String and you must specify the font name.
_o_GestaltGet system info / Is macOS / Is Windowsv17
_o_PLATFORM PROPERTIESGet system info / Is macOS / Is Windowsv17
User Forms theme:
_o_CREATE USER FORMDynamic Formsv17 R4
_o_DELETE USER FORMDynamic Formsv17 R4
_o_EDIT FORMDynamic Formsv17 R4 
_o_LIST USER FORMSDynamic Formsv17 R4
4D Internet Commands:
FTP_ProgressReturns an error if calledv16 R2
Note: progress parameter is no longer supported with FTP_Append, FTP_Receive, FTP_Send

You can find an alphabetical list of obsolete commands in the Deprecated Commands appendix of the 4D Language Reference.

The following commands, previously deprecated, have been removed from 4D and must not be used in your code. If they are called, they will trigger an error (Error 33 - Unimplemented command or function). 

Warning: Calls to removed commands cannot be detected by the check syntax or compile features. You must verify your code to make sure that it does not contain any calls to removed commands.   

 

CommandReplaced withRemoved in
4D Environment theme:
_o_ADD DATA SEGMENT-v17 R5
Graphs theme:
_o_GRAPH TABLEBuild the data in arrays and call GRAPH in a SVG picturev17 R5
Pictures theme:
_o_PICTURE TYPE LISTPICTURE CODEC LISTv17 R5
_o_QT COMPRESS PICTURECONVERT PICTUREv17 R5
_o_QT COMPRESS PICTURE FILEWRITE PICTURE FILE/PICTURE TO BLOBv17 R5
_o_QT LOAD COMPRESS PICTURE FROM FILEREAD PICTURE FILE/CONVERT PICTUREv17 R5
_o_SAVE PICTURE TO FILEWRITE PICTURE FILEv17 R5
Resources theme:
_o_ARRAY TO STRING LIST-v17 R5
_o_Create resource file-v17 R5
_o_DELETE RESOURCE-v17 R5
_o_Get component resource ID-v17 R5
GET ICON RESOURCE-v17 R5
_o_SET PICTURE RESOURCE-v17 R5
_o_SET RESOURCE-v17 R5
_o_SET RESOURCE NAME-v17 R5
_o_SET RESOURCE PROPERTIES-v17 R5
_o_SET STRING RESOURCE-v17 R5
_o_SET TEXT RESOURCE-v17 R5
String theme:
_o_Convert caseCONVERT FROM TEXT/Convert to text when necessary. v17 R5
_o_ISO to MacJust remove the command from the method if conversion is not necessaryv17 R5
_o_Mac to ISO (which means the database runs in Unicode mode)v17 R5
System Environment theme:
_o_Font numberUse font identifiersv17 R5
User Interface theme:
_o_Get platform interface/_o_SET PLATFORM INTERFACECan be used only for converted application; with the Automatic Platform constantv17 R5
_o_INVERT BACKGROUND-v17 R5
Web server theme:
_o_SET CGI EXECUTABLE-v17 R5
_o_SET WEB DISPLAY LIMITS-v17 R5
_o_SET WEB TIMEOUT-v17 R5
_o_Web Context-v17 R5
Windows theme:
_o_Open external window-v17 R5
XML theme:
_o_XSLT APPLY TRANSFORMATIONUse PHP libxslt module or the PROCESS 4D TAGS commandv17 R5
_o_XSLT GET ERRORUse PHP libxslt module or the PROCESS 4D TAGS commandv17 R5
_o_XSLT SET PARAMETERUse PHP libxslt module or the PROCESS 4D TAGS commandv17 R5

Projects represent an important evolution of 4D databases architecture. Since projects rely on latest software interface requirements and most modern technologies, they do not support some legacy features, listed below. These features are now deprecated and should no longer be used in your databases, for a better compliance with the project architecture.

For detailed information on the project architecture in 4D, please refer to the 4D projects documentation on developer.4d.com. 4D provides an automatic export tool to convert .4db databases to projects. During the export, deprecated features are automatically converted, removed or generate errors (see Converting databases to projects).

The following form objects and properties do not comply with current interface requirements and are now deprecated. They are not supported in Dynamic Forms, and may generate a warning or an error in the project conversion log file (see comments).  

Deprecated featureConversion statusComment
Highlight buttonserrorMust be converted to 3D buttons 
Picture radio buttonserrorMust be converted to 3D buttons
DialserrorMust be converted to progress indicators
MatrixwarningMatrix objects are automatically converted to svg pictures and stored in the resources folder of the database  
Boolean field as radio buttonswarningSupported but automatically converted to a pair of standard grouped radio buttons with associated expressions: [table]Boolean_field and Not([table]Boolean_field)
On Background picture format-Converted to Truncated (non-centered)
List box - Scrollable area compatibilitywarning/errorUse regular list box features
List box - Connected list boxes compatibilityerrorUse standard list box features
Platform interface "printing" propertywarningObjects with "printing" property are automatically converted to "flat" style (button, checkbox, radio button, variable/field with "system" border)

The following database structure options are deprecated and will be edited or generate errors in the project conversion log file (see comments).  

Deprecated featureConversion statusComment
"Can't Modify" field optionwarningAutomatically moved at form level during export to project
"Display only" field optionwarningAutomatically moved at form level during export to project
"Mandatory" field optionerrorSelect "Reject NULL value input" option
Toolbox  

The following Toolbox editors or features are deprecated and are not supported in projects:

Deprecated featureConversion statusComment
Picture librarywarningPictures are automatically exported to the resources folder of the database
GET PICTURE FROM LIBRARY-Do not work - Use READ PICTURE FILE instead
"Editable by user" list option- 
LIST OF CHOICE LISTS--
SAVE LIST-Error at runtime if called from a project
Group named "" or "*"errorReserved in projects
Standard user named "Designer" or "Administrator"-Names reserved in projects

Legacy compatibility modes are not supported in projects. Compatibility settings are reset as for a new database during the export to project. If your database still rely on old compatibility settings, you need to consider updating it. 

We highly recommend that you read the series of blog posts devoted to how to get rid of compatibility settings

Starting with 4D v17 R5, 32-bit versions of 4D and 4D Server are no longer produced or delivered. Only 64-bit versions are available, allowing the 4D applications to take full advantage of this powerful architecture.

Although 64-bit versions support most legacy 4D features, they favor most recent technologies and do not support those that have been declared obsolete in previous versions. Upgrading databases developed for 32-bit versions may require some adaptations. Please consult the "Changing from 32-bit versions to 64-bit versions" page in the Conversion to v17 manual. 

XSLT is no longer available in 4D. Calling an XSLT command will generate an error 33 "Unimplemented command or function".  

To support our customers still using XSLT in 4D, we made the choice to rely on the PHP XSL library, which provides a comprehensive API allowing you to perform all operations necessary for your XSL transformations. This library is an efficient tool which can easily replace the removed _o_XSLT APPLY TRANSFORMATION_o_XSLT SET PARAMETER and _o_XSLT GET ERROR. 4D has produced a specific document to help you use PHP XSL as a replacement for the 4D XSLT commands: Download XSLT with PHP technical document (PDF).

We also suggest that you consider using 4D tags when dealing with the dynamic generation of HTML pages, since in most cases it is easier if you handle HTML code as unformatted text (see also the PROCESS 4D TAGS command).

Support for QuickTime (through a database parameter) is removed from 4D starting with v17 R5. Picture codecs related to QuickTime are no longer supported on macOS and Windows.

As of v18, Float data field type is no longer supported the 4D database. This field type was only used by the SQL engine of 4D. If your database was using a Float type field, it is automatically converted to Real type when the database is open in v18 or higher. Existing data are not converted, unless you compact the data or re-save records. 

Note that this data type was only fully handled by the SQL engine. Float values were converted to Real values in 4D if they were handled via the 4D language.

Support for ASCII mode (synonym for “non-Unicode mode”) is removed from 4D v17 R5 and higher. When opening a converted database that was not set to Unicode, 4D displays the following alert dialog box:

This alert will be displayed at each startup while the Unicode mode option is not checked in the "Compatibility" page of the database settings. You must – for converted structures – activate the Unicode mode. The Conversion to 4D v14 PDF document gives hints about this topic.

The PICT format (deprecated by Apple since 2005) is no longer supported in 4D starting with v17 R5. It means that pictures in PICT format cannot be rendered by any means, they must be converted. Use the GET PICTURE FORMATS command to detect and filter pictures using the PICT format in your data file.

Specific deployment mode for merged single-user 4D applications on the mac platform using a DatabaseOutsidePackage key in the info.plist is no longer supported. Starting with 4D v17 R5, the DatabaseOutsidePackage key is ignored. 

As for 4D v17 R4, 4D no longer provides specific support for right-to-left interfaces on Windows. Corresponding options are no longer available in the database settings or form properties. In converted databases, right-to-left settings will be ignored at runtime.

As of 4D v17 R4, user forms are deprecated. To provide customizable user interfaces, it is now recommended to use dynamic forms (see Dynamic Forms in the 4D Design Reference). All commands within the "User Forms" theme have been deprecated.

User forms are still supported for compatibility, however, they should no longer be used. Their support will be removed in future releases.

4D Mobile feature is deprecated as of 4D v18 and should no longer be used. Access to 4D data through REST requests is now supported by ORDA technology and the 4D REST Server. 

In previous versions of 4D, the Web server automatically recopied the value of variables sent through a Web form or a URL into 4D variables when they had the same name.

For reasons of optimization and control, this principle is not maintained starting with 4D v14: the value of Web variables are no longer automatically assigned to the 4D variables. To recover variables sent using a POST or a GET, you must use the WEB GET VARIABLES command exclusively. To recover the posted files, you must use the WEB GET BODY PART/WEB Get body part count commands.

Note: Dynamic assignment is also disabled by default in 4D databases created beginning with version 13.4.

However, for compatibility, this mechanism is maintained by default in databases created with a version of 4D earlier than 13.4. In this case, you can disable it using the Automatic variable assignment compatibility option on the Compatibility page of the Database Settings.

Since this mechanism is obsolete, we strongly recommend that you uncheck this option in your converted databases (and adapt your code if necessary) so as to facilitate future evolutions.

Over several major versions, 4D has warned developers against the use of subtables and since 4D v11, it is no longer possible to create a field of the SubTable type. Subrecords have several known limitations. For example, they are always loaded in memory; they are not handled by the SEND RECORD or DUPLICATE RECORD commands.

We do not plan to remove support for subtables in the near future, but it’s really time for developers to convert their subtables to regular N-> tables because we do plan to remove them in a future major version of 4D. Developers who used subtables for performance reasons (certain specific situations where loading related records was slow) can be reassured, especially since v12: the speed is here and using classic N<->1 relations is very fast.

Basically, there are two main ways to remove subtables (note: the following is not a full tech tip; just a quick overview):

  • Before conversion from a pre-v11 structure: in 2004, create the appropriate N table and the ID field in Table 1 (if not already there). Then change the code everywhere it is needed (see below).
     
  • After conversion: in this situation, 4D has replaced the subtable with a N table using a special relation, that allows the language to work with the subselection and the subrecords. The 4D developer needs to remove this special relation, replace it with a normal relation and change the code everywhere if it is needed (see below).

What we mean by “change the code everywhere if it is needed” is, basically:

  • Create the new forms, update included forms
     
  • In the methods (project, form, object, etc.):
    • Replace all commands of the “SubRecords” theme with the corresponding Selection or Record command (for example, replace _o_CREATE SUBRECORD with CREATE RECORD, filling the ID fields)
    • Explicitly load the N records when needed

Note: Starting with 4D v14 R3, you can assign values to the special "id_added_by_converter" fields that are automatically added by 4D when it converts a database containing subtables. This allows you to keep the "subtable relation" link, and add or modifiy related records, without needing to use deprecated commands such as _o_CREATE SUBRECORD. Once you have updated your methods, these special relations can be replaced with standard ones with no change in your code.

QuickDraw fonts (e.g. Geneva, Chicago) are now deprecated and you should no longer use ID numbers to designate fonts. The _o_Font name command is kept for compatibility but will be removed in subsequent versions. The OBJECT SET FONT command now only accepts font names.

There are two types of plug-ins: those using the new plug-in API, and those that still use the old one (with QuickDraw).

For plug-ins using the old tool box (with QuickDraw): to maintain compatibility, the drawing/rendering is no longer done directly in a QuickDraw port, as in previous versions, but instead through a GWorld QuickDraw offscreen area dedicated to the plugin.

Consequently, you have to respect a few rules, like plugins must not modify the current port set by the container (form object).

For plug-ins using the new tool box: only this new tool box is used and not QuickDraw (see https://github.com/4D/4D-Plugin-SDK).

Starting with 4D v16 R6, Mac OS 9-based APIs for file and folder management are deprecated in 4D. These APIs have already been deprecated by Apple for a long time. 

4D commands relying on the old APIs have been renamed: _o_Document type, _o_Document creator, _o_SET DOCUMENT TYPE, _o_SET DOCUMENT CREATOR, and _o_MAP FILE TYPES. These commands are maintained for compatibility, but are deprecated and should no longer be used. 4D includes two new commands to handle pathnames and file extensions: Path to object and Object to path.

Standard actions have been internally redesigned in 4D v16 R3. They are now based on string patterns and support parameters (for more information, please refer to the Standard actions section).

In your converted applications, standard actions are transparently remapped to the new design. However, in the 4D language, standard actions were previously based on code values. This principle is deprecated and should no longer be used:

This is another old Mac OS technology, deprecated since Mac OS X 10.4 (Tiger, 2005). Resources are used to store structured data such as text and strings (localization), as well as icons, etc. Basically, we can say that it’s not the resources that are deprecated, it’s their on-disk support, known as the resource fork. The resource fork is part of the Mac OS file system, and since the beginning of Mac OS X, Apple has tried to remove this support as it is not compatible with other file systems (Unix, Windows), and is the source of a lot of problems when files are transferred via the network.

On Windows, this mechanism is emulated and Mac Resources reside in a .RSR file.

But even if there are still APIs to handle resources (and Mac OS transparently handles resources stored in a data fork), it is no longer recommended to use this old mechanism for several reasons:

  • Text and strings are Mac-Roman. You can’t store Unicode in resources of type TEXT or STR#
     
  • PICT resources store PICTs: not modern, deprecated, no transparency, etc. (See the “Pictures in PICT format” topic above.)
     
  • The count of resources and the size of the resources are limited (about 2,700 resources or 16 MB)

We have removed support for commands that write/create resources.

The vast majority of 4D applications using resources are, in fact, using the “Strings List” resources, ‘STR#’. 4D provides tools to easily move from STR# to XLIFF:

  • The 4D Pop component can automatically create the XLIFF files by reading and transferring the content of the STR#.
     
  • All the routines and expressions that reference STR# work with no change with XLIFF. For example, if the label of a button or a menu was “:15000,3” (meaning “get the third item of STR# ID 15000”), 4D will load the appropriate XLIFF (if it exists).

For other kinds of resources:

  • Put resources in separate files inside the Resources folder (create sub-directories if needed):
    • Save 'TEXT' resources in XLIFF or .txt files
    • Save 'PICT' resources as separate .jpg/.png/etc. files
    • Save 'PICT' + MASK’ resources as png files
    • Save any private resources as appropriate for you (typically: save as a binary file with a specific extension)
       
  • Use the “Resources” folder to store your resources. Use Get 4D folder(Current resources folder) to dynamically get the parent path for your resources.

Modifying the CPU priority is an obsolete setting. Memory management for 4D applications has been optimized over the different versions and it is unnecessary and may even be counterproductive to modify the default settings. As a result:

  • the "CPU Priority" area ("General" page of the Database Settings) is now displayed only in converted databases where a custom value has previously been set. We recommend clicking on the Factory settings button in this case in order to reinitialize these parameters and remove them from the dialog box. 
     
  • beginning with 4D v16 R2, obsolete selectors of the SET DATABASE PARAMETER command have been renamed (_o_4D Remote mode scheduler, _o_4D Local mode scheduler and _o_4D Server scheduler) and must no longer be used.

 
 

 
PROPERTIES 

Product: 4D
Theme: Deprecated or removed features

 
HISTORY 

 
ARTICLE USAGE

4D v18 Release Notes ( 4D v18)
4D v18.x Release Notes ( 4D v18.1)
4D v18.x Release Notes ( 4D v18.2)