Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v20
Funcionalidades obsoletas o eliminadas

Funcionalidades obsoletas o eliminadas    


 

 

Durante más de 30 años, nuestro objetivo principal ha sido mejorar nuestro producto (utilizando nuevos conceptos y tecnologías) al tiempo que garantizamos la compatibilidad de las aplicaciones 4D. Como saben los primeros usuarios de 4D, siempre hemos puesto mucho esfuerzo en la compatibilidad, y podemos encontrar aplicaciones 4D en todo el mundo que se crearon hace años y años, con versiones antiguas de 4D y de un sistema operativo, que aún funcionan con las últimas revisiones del producto.

Desafortunadamente, a veces se vuelve demasiado difícil mezclar tecnologías antiguas con nuevas:

  • 4D debe brindar nuevas tecnologías, nuevas API y nuevos paradigmas a los desarrolladores
  • Los sistemas operativos cambian todos los días y, a veces, dejan de utilizar sus propias APIs antiguas

Es por eso que 4D a veces necesita etiquetar algunos comandos y funcionalidades como obsoletos, lo que significa que algún día se eliminarán del lenguaje en una versión principal futura.

Dejar que los desarrolladores sepan qué está en desuso y qué tipo de reemplazo se puede utilizar en su lugar hace que sea mucho más cómodo implementar el cambio en su código: no hay urgencia, no hay presión, y el desarrollador tiene tiempo de sobra para realizar los cambios necesarios.

FuncionalidadRemplazar conEstado en la versión actual de 4D
Driver PDFCreatorNative Windows PDF driverObsoleto
Incumplimiento de la notación de objetosVerifique la conformidad y active la opción de compatibilidad Utilizar de notación de objetosEliminado
Variables interproceso Shared objects and collections, StorageObsoleto
4D ODBC ProODBC/SQL Pass through integrado o 4D REST APIEliminado
4D for OCI en macOSODBC/SQL Pass through integrado o 4D REST APIEliminado
4D ODBC Driver en macOS4D REST APIEliminado
4D Internet Commands - MailTransporters (IMAPSMTPPOP3), Email objectsObsoleto
4D Internet Commands - File TransfertSystem workersObsoleto
Formularios usuarioFormularios dinámicos Obsoleto
Asignación dinámica de variables recibidas por medio de HTTP (opción compatibilidad para bases creadas antes de v13.4)Comando WEB GET VARIABLES (para recuperar variables). Comandos WEB GET BODY PART/WEB Get body part count (para recuperar archivos enviados)Obsoleto
Subtablas convertidasUtilice las tablas N->1Obsoleto
APIs de archivos y carpetas en MacPath to object , Object to pathObsoleto
Acciones estándar basadas en códigoModelos de cadenas (constantes "ak" del tema Acción estándar)Obsoleto
Recursos Mac Utilice la carpeta "Resources". Por compatibilidad, aún puede utilizarla en bases convertidas. Ya no soportamos comandos de acceso a escritura.OS (iconos cicn: eliminado.) Los archivos Database.RSR no se abren automáticamente. Debe utilizar Open resource file.
Gestión de prioridad de la CPUningunoObsoleto
Antigua capa de redUtilizar ServerNetObsoleto
4D MobileORDA y REST ServerObsoleto

Explicación de los valores para la columna “Estado”:

  • Eliminado: ya no está disponible en la versión actual (o la versión indicada).
  • Obsoleto: ya no se debe utilizar y se eliminará en una futura versión principal.
  • OS: depende de tecnologías OS oficialmente obsoletas (por ejemplo: formato PICT). Este estado es identico al estado Obsoleto, pero un sistema operativo podría retirar el soporte antes que nosotros.

Cada comando obsoleto tiene el prefijo "_o_" y no está disponible en listas 4D (editor de código, funcionalidad de autocompletar, etc.). Los comandos obsoletos (o desaprobados) no se eliminarán del código existente y continuarán funcionando normalmente mientras sean compatibles. Todavía es posible (pero no se recomienda) agregar un comando obsoleto en un método simplemente ingresando su nombre con el prefijo "_o_"; Se interpretará correctamente.

 

ComandoRemplazado porObsoleto desde
Tema Entorno 4D:
_o_DATA SEGMENT LIST-v11
Tema Backup:
_o_INTEGRATE LOG FILEINTEGRATE MIRROR LOG FILEv16
Tema Compilador:
_o_ARRAY STRINGARRAY TEXTv12
_o_C_GRAPH(uso de SVG con el comando GRAPH)v12
_o_C_INTEGERC_LONGINTv12
_o_C_STRINGC_TEXT(siempre que la base esté en Unicode)v12
Tema Entrada:
_o_ADD SUBRECORDADD RECORD en la tabla n de una relación N->1v12
_o_MODIFY SUBRECORDMODIFY RECORD en la tabla n de una relación N->1v12
Tema Arrastrar y soltar:
_o_DRAG AND DROP PROPERTIESComandos del tema Portapapelesv17 R4
Tema Eventos formulario:
_o_DuringRemplazar con Form event codey el evento apropiadov12
Tema Formularios:
_o_FORM GET PARAMETER-v17 R4
Tema Gráficos:
GRAPH (utilizando 4D Graph Area)Utilice SVG picture en su lugarv12
Tema listas jerárquicas:
_o_REDRAW LISTEliminar en código (no hace nada desde v11)v11
Tema List Box:
LISTBOX Get property constantes:
_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
Tema Objetos (Formularios):
_o_OBJECT Get actionOBJECT Get actionv16 R3
_o_OBJECT SET COLOROBJECT SET RGB COLORSv18
Tema Imágenes:
_o_PICTURE TO GIFPICTURE TO BLOBv16 R5
Tema impresión:
_o_PAGE SETUPSET PRINT OPTION, GET PRINT OPTIONPrint settings to BLOBBLOB to print settingsv18
Tema Selecciones:
_o_MOBILE Return selectionORDAv18
Tema SQL:
_o_USE EXTERNAL DATABASESQL LOGINv12
_o_USE INTERNAL DATABASESQL LOGOUTv12
Tema Cadena de caracteres:
_o_Mac to Winv11
_o_Win to Macv11
Tema Subregistros: todos los comandosRemplazar “nnn SUBRECORD” y “nnnSUBSELECTION” con una acción en el registro N o N-selection de N-table en una N->1 relationv12
Tema Documentos del sistema:
_o_Document typePath to object v12
_o_Document creatorPath to object v16 R6
_o_SET DOCUMENT TYPEObject to pathv16 R6
_o_SET DOCUMENT CREATORObject to pathv16 R6
_o_MAP FILE TYPESUtiliza UTIs e Info.plistv16 R6
Tema Entorno sistema:
_o_Font nameUtilice los identificadores de fuentev14
El comando OBJECT SET FONT ya no acepta un parámetro LongInt para la fuente: este parámetro ahora es una Cadena y debe especificar el nombre de fuente.
_o_GestaltGet system info / Is macOS / Is Windowsv17
_o_PLATFORM PROPERTIESGet system info / Is macOS / Is Windowsv17
Tema formularios usuario: todos los comandos
_o_CREATE USER FORM-v17 R4
_o_DELETE USER FORM-v17 R4
_o_EDIT FORM-v17 R4
_o_LIST USER FORMS-v17 R4
Tema servidor Web:
_O_WEB Get session process countUtilice sesiones escalablesv18 R6
4D Internet Commands:
POP3 Review Mail commandsPOP3Transporter classv18
SMTP Send Mail commandsSMTPTransporter classv18 R6
IMAP Review Mail commandsIMAPTransporter classv19
Downloaded Mail commandsIMAPTransporter classPOP3Transporter classv19
File Transfer commandsSystemWorker classv20

Una lista alfabetica de estos comandos obsoletos puede consultarse en el anexo Comandos obsoletos de Manual de lenguaje 4D.

A partir de 4D v20, la conformidad del código de su base con la notación de objetos es obligatoria. Si intenta convertir una base en la que la opción Utilizar la notación de objetos para acceder a las propiedades de los objetos aún no está marcada (modo de compatibilidad, ver Página Compatibilidad), 4D mostrará una caja de diálogo que le permitirá habilitar temporalmente la opción para poder abrir la base de datos. Todavía necesita marcar la opción explícitamente para habilitarla permanentemente, sin embargo se recomienda verificar la compatibilidad de la aplicación de antemano utilizando el CMS.

Si hace clic en Cancelar o si la base no permite el acceso al modo de desarrollo (base compilada, sin acceso en diseño...), se genera el error -10537 y la base de datos no se abre.

Nota: el modo de compatibilidad sólo estaba disponible en bases binarias.

El driver PDFCreator es obsoleto desde 4D v20. Windows 10 y versiones superiores incluyen un controlador PDF nativo. La constante PDFCreator Printer name ha sido renombrada _o_PDFCreator Printer name.

Varios módulos PHP han sido eliminados del intérprete PHP incluido en 4D v20, la mayoría de ellos porque ya no son necesarios o están obsoletos: DOM (Document Object Model), Iconv, LibXML, LibXSLT, SimpleXML, GD (Graphics Draw) Library, XML (eXtensible Markup Language), XMLreader, XMLwriter, WDDX (Web Distributed Data eXchange), Zlib, Zip. Si su aplicación utilizaba un módulo eliminado, puede que necesite utilizar comandos 4D relevantes o un intérprete FastCGI-php externo. Para más información, consulte la sección Soporte de módulos PHP.

Desde 4Dv 19 R4, debido al soporte del operador ternario, ya no se permiten los dos puntos ":" en los nombres de variable, campo, constante, función, plugin y método proyecto.

A partir de 4D v19, el plug-in 4D ODBC Pro ya no está disponible en todas las plataformas. Recomendamos utilizar el pass-trough integrado ODBC/SQL (ver SQL LOGIN y Presentación de los comandos del tema SQL) o la API REST 4D para manejar las funciones de conectividad ODBC/SQL.

A partir de 4D v19, el plug-in 4D for OCI ya no está disponible en macOS. Recomendamos utilizar el pass-through integrado ODBC/SQLL (ver SQL LOGIN y Presentación de los comandos del tema SQL) o la API REST 4D para manejar las funcionalidades de conectividad en esta plataforma.

A partir de 4D v19, el Driver 4D ODBC ya no está disponible en macOS. Recomendamos utilizar el API 4D REST para el acceso a datos externos en esta plataforma.

La opción de almacenamiento de archivos de datos externos ya no se soporta para los campos de tipo de objeto (ver Almacenamiento en el registro, en el archivo de datos, fuera del archivo de datos). Si se seleccionó esta opción para un campo objeto, se convierte automáticamente a En archivo de datos y se usa para nuevos registros. Los datos existentes en los campos objeto se reescriben de forma transparente en la nueva ubicación cuando se guarda el registro principal. Para forzar que todos los registros se reescriban a la vez, puede compactar el archivo de datos con la opción "Actualizar registros".

Después de años de servicio, es hora de que se retiren: las variables interproceso están son obsoletas. El uso de variables interproceso no se recomienda en los proyectos 4D porque no están disponibles desde los procesos apropiativos y no están adaptadas al manejo de valores complejos como arrays, objetos o colecciones (cuando no son compartidos) provenientes de múltiples procesos simultáneos. Finalmente, tienden a hacer que el código sea menos fácil de mantener. Para compartir valores de objetos y colecciones entre procesos, recomendamos encarecidamente utilizar las colecciones y objetos compartidos  y/o el comando Storage.

A partir de 4D Write Pro v19 R4, puede gestionar los saltos de fila. Para evitar confusiones con los saltos de párrafos y tablas, ahora todos los saltos se manejan mediante constantes dedicadas y acciones estándar (ver Atributos 4D Write Pro y Utilizar las acciones estándar 4D Write Pro). La constante genérica anterior (_o_wk page break inside) y la acción estándar (avoidPageBreakInsideEnabled) están en desuso y se admiten solo por razones de compatibilidad.

A partir de 4D v17 R4, los formularios de usuario están en desuso. Para ofrecer interfaces de usuario personalizables, ahora se recomienda utilizar formularios dinámicos (ver Formularios dinámicos en Manual de Diseño). Todos los comandos dentro del tema "Formularios de usuario" han quedado en desuso.

Los formularios de usuario aún son soportados por compatibilidad, sin embargo, ya no deben utilizarse. Su soporte será eliminado en futuras versiones.

En las versiones anteriores de 4D, el servidor web recopiaba automáticamente el valor de las variables enviadas a través de un formulario web o una URL en las variables 4D cuando tenían el mismo nombre.

Por razones de optimización y control, este principio no se mantiene a partir de 4D v14: el valor de las variables Web ya no se asigna automáticamente a las variables 4D. Para recuperar las variables enviadas utilizando un POST o un GET, debe utilizar el comando WEB GET VARIABLES exclusivamente.  Para recuperar las imágenes enviadas, debe utilizar los comandos WEB GET BODY PART/WEB Get body part count.

Nota: la asignación dinámica también está desactivada por defecto en las bases de datos 4D creadas a partir de la versión 13.4.

Sin embargo, por compatibilidad, este mecanismo se mantiene por defecto en las bases de datos creadas con una versión de 4D anterior a la 13.4. En este caso, se puede desactivar el uso de la opción de compatibilidad de asignación de variable automática en la página Compatibilidad de las Propiedades de la base.

Dado que este mecanismo es obsoleto, se recomienda desmarcar esta opción en sus bases de datos convertidas (y adaptar su código si es necesario) con el fin de facilitar futuras evoluciones.

En varias versiones principales, 4D ha advertido a los desarrolladores en contra del uso de las subtablas. Desde 4D v11, es imposible crear un campo del tipo subtabla. Los subregistros tienen algunas limitaciones conocidas. Por ejemplo, siempre se cargan en memoria; no se manejan por los comandos SEND RECORD o DUPLICATE RECORD.

No tenemos planes de eliminar el soporte para las subtablas en un futuro próximo, pero es realmente el momento de que los desarrolladores conviertan sus subtablas a tablas N-> regulares porque tenemos la intención de eliminarlas en una futura versión principal de 4D. Los desarrolladores que utilizan subtablas por razones de rendimiento (algunas situaciones específicas en las que la carga de los registros relacionados de era lenta) pueden estar tranquilos, especialmente con v12: utilizar las relaciones N <-> 1 clásicas es muy rápido.

Básicamente, hay dos formas principales para eliminar subtablas (nota: lo siguiente no es una tecnología completa de punta; sólo una visión general rápida):

  • Antes de la conversión de una estructura pre-v11: en 2004, crear la tabla N apropiada y el campo ID en la tabla 1 (si no está ya allí). Luego, cambie el código en todas las partes es necesario (ver más adelante).
  • Después de la conversión: en esta situación, 4D ha reemplazado la subtabla con una tabla N usando una relación especial, que permite que el lenguaje para trabajar con la subselección y los subregistros. El desarrollador 4D necesita eliminar esta relación especial, sustituirla por una relación normal y cambiar el código por todas partes si es necesario (ver más adelante).

Lo que queremos decir con "cambiar el código por todas partes si es necesario" es, básicamente:

  • Crear los nuevos formularios, actualizar los formularios incluidos
  • En los métodos (proyecto, formulario, objeto, etc.):
    • Remplace todos los comandos del tema "Subregistros" con el comando Selection o Record correspondiente (por ejemplo, reemplazar CREATE SUBRECORD con CREATE RECORD, llenando los campos ID)
    • Explícitamente cargar los registros N cuando sea necesario

Nota: a partir de 4D v14 R3, puede asignar valores a los campos "id_added_by_converter" especiales que se agregan automáticamente por 4D cuando convierte una base de datos que contiene subtablas. Esto le permite mantener el enlace "relación subtabla", y agregar o modificar registros relacionados, sin necesidad de usar comandos en desuso tales como _o_CREATE SUBRECORD. Una vez que haya actualizado sus métodos, estas relaciones especiales pueden ser sustituidas por otros estándares con ningún cambio en su código.

A partir de 4D v16 R6, las APIs basadas en Mac OS 9 para la administración de archivos y carpetas están en desuso en 4D. Estas API ya han quedado obsoletas por Apple desde hace mucho tiempo.

Los comandos 4D que dependen de las antiguas API se han renombrado: _o_Document type, _o_Document creator, _o_SET DOCUMENT TYPE, _o_SET DOCUMENT CREATOR y _o_MAP FILE TYPES.  Estos comandos se mantienen por compatibilidad, pero están en desuso y ya no deben utilizarse. 4D incluye dos nuevos comandos para manejar nombres de rutas y extensiones de archivos: Path to object y Object to path.

Las acciones estándar han sido rediseñadas internamente en 4D v16 R3. Ahora se basan en patrones de cadena y parámetros de soporte (para más información, consulte la sección Acciones estándar).

En las aplicaciones convertidas, las acciones estándar se vuelcan de forma transparente al nuevo diseño. Sin embargo, en el lenguaje 4D, las acciones estándar se basaban previamente en valores de código. Este principio es obsoleto y no debe utilizarse:

Esta es otra antigua tecnología Mac OS, en desuso desde Mac OS X 10.4 (Tiger, 2005). Los recursos se utilizan para almacenar datos estructurados, como texto y cadenas (localización), así como también iconos, etc. Básicamente, podemos decir que no son los recursos los que están en desuso, es su soporte en disco, conocido como el resource fork. El resource fork es parte del sistema de archivos de Mac OS y desde el inicio de Mac OS X, Apple ha tratado de eliminar este soporte, ya que no es compatible con otros sistemas de archivos (Unix, Windows), y es la fuente de una gran cantidad de problemas cuando los archivos se transfieren a través de la red.

En Windows, este mecanismo se emula y y los recursos Mac residen en un archivo .RSR.

Pero aún así, incluso si aún hay APIs para manejar los recursos (y Mac OS maneja de forma transparente los recursos almacenados en un data fork), ya no se recomienda utilizar este viejo mecanismo por varias razones:

  • Los textos y las cadenas son Mac-roman. No se puede almacenar Unicode en recursos de tipo TEXT o STR#
  • Los recursos PICT almacenan PICTs: no es moderno, obsoleto, sin transparencia, etc. (Consulte el tema "PICT" arriba.)
  • El conteo de los recursos y el tamaño de los recursos son limitados (unos 2.700 recursos o 16 MB)

Hemos eliminado soporte para comandos de escritura/creación de recursos

La gran mayoría de las aplicaciones 4D que utilizan recursos están, de hecho, utilizando recursos "Strings List", 'STR#'. 4D ofrece las herramientas para cambiar fácilmente del STR # a XLIFF:

  • El componente 4D Pop puede crear automáticamente los archivos XLIFF mediante la lectura y transferir el contenido de la STR #.
  • Todas las rutinas y las expresiones que hacen referencia a trabajo STR# sin cambio con XLIFF. Por ejemplo, si la etiqueta de un botón o un menú era ":15000,3" (que significa "conseguir el tercer elemento de STR# ID 15000"), 4D cargará el XLIFF apropiado (si existe).

Para otros tipos de recursos:

  • Poner los recursos en archivos separados dentro de la carpeta Resources (crear subdirectorios si es necesario):
    • Guardar recursos 'TEXT' en archivos XLIFF o .txt
    • Guardar recursos 'PICT' como archivos .jpg/.png/etc. separado
    • Guardar recursos 'PICT' + MASK’ como archivos png
    • Utilizar (en Mac) icns en lugar de ICON o iconos de colores
    • Guardar todos los recursos privados como sea apropiado para usted (normalmente: guardar como un archivo binario con una extensión específica)
  • Utilice la carpeta "Recursos" para almacenar sus recursos. Utilice Get 4D folder (carpeta de recursos actuales) para obtener dinámicamente la ruta padre para sus recursos.

 
 

 
PROPIEDADES 

Producto: 4D

 
ARTICLE USAGE

Funcionalidades obsoletas o eliminadas ( 4D v20)

 
DESCARGAR