Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Bibliotecas de código fuente > [GH Freebrary]
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-07-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
GH Freebrary para Delphi XE4

Hoy me disponía a comenzar la adaptación de GH Freebrary a Delphi XE4, usando la edición de prueba de éste último que descargué hace más de un mes, y pensando que me serviría un nuevo número de serie que me llegó de Embarcadero para ampliar el plazo acostumbrado de 30 días. Pero me di cuenta que este segundo número era válido sólo hasta el 30 de junio.



Así las cosas, creo que me tardé un poco en comenzar con esta labor, y es que entre los asuntos de cada día no fue mucho lo que pude ver de la nueva versión en tan pocas semanas.

¿Podría algún compañero darme acceso a una computadora / ordenador con Delphi XE4? No importa si es la versión de prueba (aunque eventualmente podría ser necesaria la versión normal que incluye el código fuente de la VCL). En este momento no está en mis posibilidades comprar la licencia.

De todas formas dejo abierto este hilo para los interesados en comenzar a probar o adaptar GHF en XE4, y las dudas que de ello surjan. Con ese fin pueden tomar la más reciente versión para XE2, que seguramente será compatible casi al 100%.

Saludos y muchas gracias.

Al González.
Responder Con Cita
  #2  
Antiguo 08-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Un software tan amplio como Delphi es imposible de probar en 30 días , es un tiempo ridículo, deberían dar un margen de varios meses, como mínimo.
Responder Con Cita
  #3  
Antiguo 09-07-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 933
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
... deberían dar un margen de varios meses, como mínimo.
Estoy de acuerdo, creo que con 36 meses estariamos bien...
Responder Con Cita
  #4  
Antiguo 09-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por cloayza Ver Mensaje
Estoy de acuerdo, creo que con 36 meses estariamos bien...
Sí, eso como mínimo
Responder Con Cita
  #5  
Antiguo 09-07-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Para cerrar el paréntesis de cuántos días para probar una nueva versión de Delphi sería lo adecuado, 30 no me parece mal. Pero que fueran 30 días en los cuales se haya abierto el IDE, consecutivos o no: sin contar aquellos en que no haya habido tiempo de sentarse a revisar característica alguna.

-------------

Bien, ¿alguna novedad en el tema? ¿Alguien que haya instalado GHF en XE4 y que desee colaborar en el proyecto aunque sea reportando las incidencias?

Saludos.
Responder Con Cita
  #6  
Antiguo 13-03-2014
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
Pues si no es tarde aún para reportar incidencias, partiendo de la versión XE2 genera los siguientes errores:

en GHFVCL:

Código Delphi [-]
  Function ghMasterLink (Const ADataSet :TDataSet) :TMasterDataLink;
  Var
    I :Integer;
  Begin
    { In some data set classes, the master data link is a private field
      without access property.  This function returns that data link. }

    If ADataSet.DataSource <> Nil Then
      With TDataSourceAccess (ADataSet.DataSource) Do
        For I := 0 To DataLinks.Count - 1 Do
          If (TDataLink (DataLinks [i]) Is TMasterDataLink) And
          (TMasterDataLinkAccess (DataLinks [i]).GetDetailDataSet =
          ADataSet) Then
          Begin
            // DataSet's master data link found
            Result := DataLinks [i]; //[dcc32 Error] GHFVCL.pas(1005): E2010 Incompatible types: 'TMasterDataLink' and 'TDataLink'
            Exit;
          End;

    Result := Nil;
  End;


En GHFRTL:

Código Delphi [-]
  Function ghDecimals (Const Value :Extended) :Integer;
  Begin
    If Frac (Value) <> 0 Then
      With ghDecimal (Value) Do
        { When Frac (Value) <> 0 and Exponent < 18, StrLen (Digits) is
          greater than Exponent.  StrLen (Digits) - Exponent =
          "represented" decimals in Value. }
        If Exponent < 18 Then
          Result := Integer (StrLen (Digits)) - Exponent //[dcc32 Error] GHFRTL.pas(3601): E2250 There is no overloaded version of 'StrLen' that can be called with these arguments
                                                                        //[dcc32 Warning] GHFRTL.pas(3601): W1000 Symbol 'StrLen' is deprecated: 'Moved to the AnsiStrings unit'
        Else
          Result := 0  // Value has no "represented" decimals
    Else
      Result := 0;
  End;


Código Delphi [-]
  Function ghFracDecimal (Const Value :Extended;
    Decimals :Integer = MaxInt) :Extended;
  Var
    Buffer :PANSIChar Absolute Result;
    Desc :TFloatRec;  // Decimal descriptor
  Begin
    { Frac (-123.0045) -> -0.0044999...
      ghFracDecimal (-123.0045) -> -0.0045 }

    Result := Frac (Value);

    If Result = 0 Then
      Exit;

    { If Value is not a fraction but has fractional part, then we try to
      get it based on its decimal representation }
    If Abs (Value) > 1 Then
    Begin
      Desc := ghDecimal (Value);

      { When Frac (Value) <> 0 and Exponent < 18, StrLen (Digits) is
        greater than Exponent.  StrLen (Digits) - Exponent = "represented"
        decimals in Value.  If Exponent >= 18 then Value has no
        "represented" decimals. }
      If Desc.Exponent < 18 Then
      Begin

        If (Decimals < MaxInt) And (Integer (StrLen (Desc.Digits)) - //[dcc32 Error] GHFRTL.pas(4256): E2250 There is no overloaded version of 'StrLen' that can be called with these arguments
        Desc.Exponent <= Decimals) Then
          Decimals := MaxInt;

        { -123.0045, Digits = ['1', '2', '3', '0', '0', '4', '5', #0...] ->
          ['1', '-', '.', '0', '0', '4', '5', #0...], Buffer = '-.0045'.
          NOTE: This operation can overwrite the Desc's Exponent and
          Negative fields. ---------------------------------------------- }

        Buffer := PANSIChar (@Desc.Digits) + (Desc.Exponent - 2);

        If Desc.Negative Then
          Buffer [0] := '-'
        Else
          Inc (Buffer);

        Buffer [Byte (Buffer [0] = '-')] :=
          ghANSIChr (FormatSettings.DecimalSeparator);

        //-----------------------------------------------------------------

        TextToFloat (Buffer, Result, fvExtended);  // '-.0045' -> -0.0045
      End;
    End;

    If Decimals < MaxInt Then
      Result := ghRound (Result, Decimals);
  End;

Saludos,
Responder Con Cita
  #7  
Antiguo 13-03-2014
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
Probando el demo de RelyTweet, me generó un error (el famoso Access Violation #000000):

El error se da en la función de la librería GHFRTL:

Código Delphi [-]
  Function ghSimple (Const Value :Char) :Char;
  Begin
    Result := ghComposition (Value) [1];
  End;


El error se debe a un caracter extraño que se encuentra en el archivo de entrada, en la línea 5522 (los corazones):

Cita:
#code2013: Objective-C 💕, C# & Javascript.
Abrir
Responder
Retwittear
Favorito
Gleb Dolgich ‏@glebd 31 dic
Saludos
Responder Con Cita
  #8  
Antiguo 13-03-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola gatosoft, es un gusto leer tu aportación. Encuentro interesantes esas incidencias, afortunadamente no son secciones críticas de la biblioteca, pero hay que resolverlas:

Cita:
Empezado por gatosoft Ver Mensaje
en GHFVCL:
Código Delphi [-]
  Function ghMasterLink (Const ADataSet :TDataSet) :TMasterDataLink;
...
          If (TDataLink (DataLinks [i]) Is TMasterDataLink) And
          (TMasterDataLinkAccess (DataLinks [i]).GetDetailDataSet =
          ADataSet) Then
          Begin
            // DataSet's master data link found
            Result := DataLinks [i]; ///E2010 Incompatible types: 'TMasterDataLink' and 'TDataLink'
Ahora no puedo comprobarlo, pero este error de compilación sugiere que Embarcadero cambió la propiedad protegida TDataSource.DataLinks de una simple lista de punteros TList a una lista expresamente de objetos TDataLink (lo cual me parece bien). Con ello, el molde de tipo "TDataLink (DataLinks [i])" del If ya no debería ser necesario, siendo en cambio necesario el molde de tipo "TMasterDataLink (DataLinks [i])" en la asignación a Result. Así deberá compilar esa función en XE4:
Código Delphi [-]
          If (DataLinks [i] Is TMasterDataLink) And
          (TMasterDataLinkAccess (DataLinks [i]).GetDetailDataSet =
          ADataSet) Then
          Begin
            // DataSet's master data link found
            Result := TMasterDataLink (DataLinks [i]);

Respecto al error E2250 y la advertencia W1000 que se presentan, investigué un poco y encontré un par de textos en los que se habla de esta situación (al parecer es algo que vienen atravesando muchas bibliotecas al actualizarse a Delphi XE4/XE5): François Piette y Remy Lebeau.

En nuestro caso sugiero hacer lo siguiente:

Dentro de la unidad GHFRTL, ve a la cláusula Uses que se encuentra al comienzo de la sección Implementation, y agrega ahí la unidad System.ANSIStrings. Compila de nuevo y si ahora aparece el error "Ambiguous overloaded call to 'StrLen'", entonces agrega "System.ANSIStrings." en los dos lugares donde se usa la función StrLen. Es decir, hay que calificarla, pero sólo si aparece el error "Ambiguous overloaded" al compilar (por alguna razón Embarcadero dejó dos versiones de cabeceras idénticas de la función StrLen).
Código Delphi [-]
          // Usar StrLen calificada en este caso
          Result := Integer (System.ANSIStrings.StrLen (Digits)) - Exponent
Código Delphi [-]
        // Usar StrLen calificada en este caso
        If (Decimals < MaxInt) And (Integer (System.ANSIStrings.StrLen (Desc.Digits)) -
        Desc.Exponent <= Decimals) Then

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.

Volviendo a las incidencias que reportas, Federico, mencionas que ocurre un error AV con el programa de ejemplo RelyTweet. Por la ubicación del error, parece que se trata de una cadena de caracteres vacía que no se espera que lo sea. ¿Podrías señalar la línea exacta del error, tu versión de Windows y, si no es molestia, el contenido de la pila de llamadas (call stack)? Esa pequeña aplicación trabaja perfectamente con XE2-Windows XP. Tal vez el problema esté en la función FoldString de la API de Windows o en mi función ghComposition.

Estaré atento a cualquier retroalimentación. Un saludo.

Al González.

P.D. Para mi documentación, me resultaría bueno conocer qué declaración tienen la propiedad TDataSource.DataLinks (Data.DB) y el tipo TFloatRec (System.SysUtils) en Delphi XE3, XE4 y XE5.
Responder Con Cita
  #9  
Antiguo 14-03-2014
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
En XE4:

Código Delphi [-]
  TFloatRec = packed record
    Exponent: Smallint;
    Negative: Boolean;
    Digits: array[0..20] of Byte;
  end;

TMasterDataLink = class(TDetailDataLink)
TDetailDataLink = class(TDataLink)
TDataLink = class(TPersistent)

TDataSource = class(TComponent)
  private
    FDataLinks: TList< TDataLink >;
  protected
    property DataLinks: TList< TDataLink > read FDataLinks;
end;

Para el caso de la función StrLen, no compila tampoco con System.AnsiStrings.StrLen: [dcc32 Error] GHFRTL.pas(3605): E2250 There is no overloaded version of 'StrLen' that can be called with these arguments ==> solo Acepta tipos PAnsichar, PWideChar

Hice pruebas con Length y SizeOf y ambas generan el mismo resultado (21, para la definición de Digits del TFloatRec )

Última edición por Al González fecha: 14-03-2014 a las 07:10:39. Razón: Poner espacios en "< TDataLink >" ya que el navegador lo estaba tomando como etiqueta HTML.
Responder Con Cita
  #10  
Antiguo 14-03-2014
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 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
  #11  
Antiguo 14-03-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por gatosoft Ver Mensaje
Código Delphi [-]
  TFloatRec = packed record
    Exponent: Smallint;
    Negative: Boolean;
    Digits: array[0..20] of Byte;
  end;
Para el caso de la función StrLen [...] solo acepta tipos PAnsichar, PWideChar
Sí, claro está. Tenía la ligera sospecha de que habían cambiado la declaración de TFloatRec, pero consideré que era poco probable. Siendo así, creo que faltaría moldear Digits como PANSIChar en el par de referencias antes citadas:
Código Delphi [-]
          Result := Integer (System.ANSIStrings.StrLen (PANSIChar (@Digits))) - Exponent
Código Delphi [-]
        If (Decimals < MaxInt) And (Integer (System.ANSIStrings.StrLen (PANSIChar (@Desc.Digits))) -
        Desc.Exponent <= Decimals) Then

Hasta XE2 (o XE3), TFloatRec tenía esta declaración:
Código Delphi [-]
  TFloatRec = packed record
    Exponent: Smallint;
    Negative: Boolean;
    Digits: array[0..20] of AnsiChar;
  end;

Gracias por confirmar el funcionamiento de los cambios.

Saludos.
Responder Con Cita
  #12  
Antiguo 23-03-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
A fin de no dejar cabos sueltos, vuelvo a solicitar un par de cosas a quien tenga XE4 (no dejemos a gatosoft solo en esto):

Cita:
Empezado por Al González Ver Mensaje
Siendo así, creo que faltaría moldear Digits como PANSIChar [...] Gracias por confirmar el funcionamiento de los cambios.
Cita:
Empezado por Al González Ver Mensaje
[...] mencionas que ocurre un error AV con el programa de ejemplo RelyTweet. Por la ubicación del error, parece que se trata de una cadena de caracteres vacía que no se espera que lo sea. ¿Podrías señalar la línea exacta del error, tu versión de Windows y, si no es molestia, el contenido de la pila de llamadas (call stack)?
Gracias de antemano.
Responder Con Cita
  #13  
Antiguo 19-09-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Al González Ver Mensaje
Respecto al error E2250 y la advertencia W1000 [...] sugiero hacer lo siguiente:

Dentro de la unidad GHFRTL, ve a la cláusula Uses que se encuentra al comienzo de la sección Implementation, y agrega ahí la unidad System.ANSIStrings. Compila de nuevo y si ahora aparece el error "Ambiguous overloaded call to 'StrLen'", entonces agrega "System.ANSIStrings." en los dos lugares donde se usa la función StrLen. Es decir, hay que calificarla, pero sólo si aparece el error "Ambiguous overloaded" al compilar (por alguna razón Embarcadero dejó dos versiones de cabeceras idénticas de la función StrLen).
Código Delphi [-]
          // Usar StrLen calificada en este caso
          Result := Integer (System.ANSIStrings.StrLen (Digits)) - Exponent
Código Delphi [-]
        // Usar StrLen calificada en este caso
        If (Decimals < MaxInt) And (Integer (System.ANSIStrings.StrLen (Desc.Digits)) -
        Desc.Exponent <= Decimals) Then
Hola a todos.

Sólo para confirmar que estos cambios sí resultaron efectivos en XE5, que es la versión que usamos en el trabajo (¡sí, ya tengo empleo formal! ). Así que es probable que pronto suba al repositorio una edición oficial de GHF para XE5. El jefe me ha dado toda la libertad para seguir desarrollando esta biblioteca, que, dicho sea de paso, también usaremos aquí para los proyectos de la empresa.

De momento no dispongo de XE4, pero voy a solicitarlo (creo que la licencia admite descargas de versiones anteriores recientes). Por otro lado, también estoy alentando a los compañeros de la oficina para que nos actualicemos próximamente a XE7, ya que parece ser una versión muy buena. De hecho también voy a adquirirla de forma personal en cuanto esto sea posible.

Si bien han mejorado un poco las cosas, sigo esperando todo el apoyo que ustedes puedan o consideren apropiado brindar a este proyecto. Por favor, no se despeguen.

Un saludo.

Al González.
Responder Con Cita
  #14  
Antiguo 19-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
(¡sí, ya tengo empleo formal! ).
Me alegro mucho y espero que sea para bien
Responder Con Cita
  #15  
Antiguo 19-09-2014
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
Excelentes noticias Al... Por ti, por GHF, y por Delphi....

Responder Con Cita
  #16  
Antiguo 19-09-2014
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.412
Poder: 22
fjcg02 Va camino a la fama
Cool

Bien, bien, bien!!

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #17  
Antiguo 22-09-2014
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
En horabuena por las buenas noticias Al!


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #18  
Antiguo 22-09-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Muchas gracias, Antonio, Federico, Javier y Marcos.

Vamos en el camino correcto.
Responder Con Cita
  #19  
Antiguo 22-09-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Al González,

Cita:
Empezado por Al González
...¡sí, ya tengo empleo formal! ...
Muchos éxitos en esta nueva etapa

Nelson.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
GH Freebrary para Delphi XE2 Al González [GH Freebrary] 7 12-01-2014 09:49:35
GH Freebrary para Delphi 2010 Al González [GH Freebrary] 3 18-05-2013 01:51:47
Requerimiento de una función para GH Freebrary. TiammatMX [GH Freebrary] 9 18-04-2013 05:41:14
Avanzando con GH Freebrary Al González [GH Freebrary] 13 23-03-2013 08:08:03
Introducción a GH Freebrary Al González [GH Freebrary] 0 18-03-2013 11:11:54


La franja horaria es GMT +2. Ahora son las 20:00:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi