Ver Mensaje Individual
  #10  
Antiguo 14-03-2014
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Reputación: 22
gatosoft Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
Algo importante sobre las versiones

Varios colegas me han sugerido emplear directivas de compilación $IfDef...$Else...$EndIf para mantener el código de todas las ediciones (7..XE5) en un único grupo de archivos. Pero he de recalcar que no es mi deseo optar por esa vía. Sé que mantener paquetes separados para cada versión de Delphi supone un mayor esfuerzo por parte de mí y mis colaboradores en el proyecto, pero estoy convencido de que es mejor así, habrán visto que Borland y Embarcadero lo han hecho también de esta manera. La ventaja de peso es que es más fácil de administrar el código en ediciones limpias y separadas, haciendo copiar y pegar las veces que sea necesario, que trabajar sobre un único grupo de unidades repletas de directivas que, pensando en la variedad de versiones modernas de Delphi, terminarían ofuscando el código fuente, volviéndolo difícil de mantener por parte de los autores y difícil de consultar por parte de los usuarios. Es deseable que GH Freebrary llegue a ser un digno complemento de la RTL/VCL/FMX; olvidémonos de la puerta fácil de las directivas para versión.
No comparto tu justificación con respecto a Embrcadero, pues ellos mantienen una sola versión porque es su razón de ser, obliga a sus usuarios a actualizarse a versiones mas recientes paravender mas. Embarcadero tiene muchos partners (fabricantes de coponentes) dignos de complementar sus productos y todos ellos trabajan con éstas directivas:

Unos ejemplos de lo que tengo en mi PC:

TMS Software
AlphaSkins
DelphiArea
DevArt

Todos ellos tienen directivas include en las que definen las versiones de Delphi:

Archivo sDefs.Inc:
{$DEFINE ALPHASKINS}

{$IFDEF VER260} {$DEFINE DELPHI_XE5} {$ENDIF}
{$IFDEF VER250} {$DEFINE DELPHI_XE4} {$ENDIF}
{$IFDEF VER240} {$DEFINE DELPHI_XE3} {$ENDIF}
{$IFDEF VER230} {$DEFINE DELPHI_XE2} {$ENDIF}
{$IFDEF VER220} {$DEFINE DELPHI_XE} {$ENDIF}
{$IFDEF VER210} {$DEFINE D2010} {$ENDIF}
{$IFDEF VER200} {$DEFINE D2009} {$ENDIF}
{$IFDEF VER185} {$DEFINE D2007} {$ENDIF}
{$IFDEF VER180} {$DEFINE D2006} {$ENDIF}
{$IFDEF VER170} {$DEFINE D2005} {$ENDIF}
{$IFDEF VER150} {$DEFINE DELPHI7UP} {$ENDIF}
{$IFDEF VER140} {$DEFINE DELPHI6UP} {$ENDIF}
{$IFDEF VER130} {$DEFINE DELPHI5} {$ENDIF}

{$IFDEF DELPHI7UP}
{$WARN UNIT_PLATFORM OFF}
{$WARN SYMBOL_PLATFORM OFF}
{$DEFINE CHECKXP}
{$ENDIF}

{$IFDEF D2009}
{$DEFINE NOACPNG}
{$ENDIF}

{$IFNDEF DELPHI6UP}
{$UNDEF TNTUNICODE}
{$ENDIF}

{$IFDEF DELPHI7UP}
{$WARN UNSAFE_CODE OFF}
{$WARN UNSAFE_TYPE OFF}
{$WARN UNSAFE_CAST OFF}
{$IFDEF D2005}
{$WARN SUSPICIOUS_TYPECAST OFF}
{$ENDIF}
{$IFDEF D2009}
{$WARN IMPLICIT_STRING_CAST OFF}
{$WARN IMPLICIT_STRING_CAST_LOSS OFF}
{$ENDIF}
{$ENDIF}


Delphiarea.Inc:

{$DEFINE COMPILER_XE3_UP}
{$DEFINE COMPILER_XE2_UP}
{$DEFINE COMPILER_XE_UP}
{$DEFINE COMPILER2010_UP}
{$DEFINE COMPILER2009_UP}
{$DEFINE COMPILER2007_UP}
{$DEFINE COMPILER2006_UP}
{$DEFINE COMPILER2005_UP}
{$DEFINE COMPILER7_UP}
{$DEFINE COMPILER6_UP}
{$DEFINE COMPILER5_UP}
{$DEFINE COMPILER4_UP}
{$DEFINE COMPILER3_UP}
{$DEFINE COMPILER2_UP}


Tienes razón con las otras justificaciones, El codigo es menos transparente, pero creo que es necesario.

Otro tema importante es el que te comentaba por mensaje privado sobre el repositorio, con éste tipo de herramientas y apoyadas en éste foro incrmentarías la participación de colaboradores,

Un slaudo,


Saludos,
Responder Con Cita