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 06-02-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Al.

Lamento mucho no disponer de esas versiones para realizar la prueba. Pero sé que un colega amigo está usando la versión XE, hoy voy a intentar contactarlo para que la realice.
Con mi viejo y querido Delphi 7 me arreglo con la función IsEqualGuid

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 07-02-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
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 ecfisa Ver Mensaje
Lamento mucho no disponer de esas versiones para realizar la prueba. Pero sé que un colega amigo está usando la versión XE, hoy voy a intentar contactarlo [...]
Gracias Daniel. Tú siempre poniendo el ejemplo a los que poseen la inmensa fortuna de poder acceder a muchas versiones de Delphi.

Cita:
Empezado por ecfisa Ver Mensaje
Con mi viejo y querido Delphi 7 me arreglo con la función IsEqualGuid
Sí, sobre esa función comentábamos algo el otro día:
Cita:
Empezado por Al González Ver Mensaje
Ahora pasemos a las funciones átomo, también agregadas a GHFRTL.pas:
Código Delphi [-]
  { Equals? }
  Function ghEquals (Const Value1, Value2 :TGUID) :Boolean; Overload;
  Var
    GUID1 :Array [0..3] Of Integer Absolute Value1;
    GUID2 :Array [0..3] Of Integer Absolute Value2;
  Begin
    Result := (GUID1 [0] = GUID2 [0]) And (GUID1 [1] = GUID2 [1]) And
      (GUID1 [2] = GUID2 [2]) And (GUID1 [3] = GUID2 [3]);
  End;
En Delphi 7 todavía no era posible comparar dos valores TGUID usando el operador "=", y por muchos años la recomendación fue usar la función IsEqualGUID importada de OLE32.dll. Pero me surgió la pregunta: ¿qué tan eficiente será hacer una simple comparación de 16 bytes con IsEqualGUID? Por otra parte, encontré que las versiones recientes de Delphi sí admiten la comparación de TGUIDs con el operador "=". Cuando eso ocurre, el compilador inserta una llamada al método interno TGUID.Equal:
Código Delphi [-]
class operator TGUID.Equal(const Left, Right: TGUID): Boolean;
var
  a, b: PIntegerArray;
begin
  a := PIntegerArray(@Left);
  b := PIntegerArray(@Right);
  Result := (a^[0] = b^[0]) and (a^[1] = b^[1]) and (a^[2] = b^[2]) and (a^[3] = b^[3]);
end;
El cual es de cuatro a cinco veces más rápido que IsEqualGUID. Así que buscando algo similar para Delphi 7 creé esa función ghEquals, y para mi sorpresa resultó ligeramente más eficiente que el método TGUID.Equal (en Delphi 7 genera un poco menos de código máquina y en XE2 conviene añadirle la directiva InLine).
Verificar desde cuándo puede compilarse un "If GUID1 = GUID2 Then" no tiene otro propósito que ampliar la documentación que hay al respecto. Resulta gratificante publicar o ayudar a publicar respuestas a preguntas sobre Delphi que probablemente otras personas se hacen también. A veces son "pequeñeces", como en este caso, pero ¿qué información relevante no se compone de ellas?

No hay prisa ecfisa; cuando tu amigo pueda.
Responder Con Cita
  #3  
Antiguo 07-02-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Alberto.

Lo prometido es deuda, me confirmó que el código compila sin errores en Delphi XE.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 07-02-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
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 ecfisa Ver Mensaje
[...] me confirmó que el código compila sin errores en Delphi XE.
Muchas gracias, colega.

Ya sólo falta probar con Delphi 2009 y 2010. Sospecho que ambas versiones lo admiten también, pero habrá que esperar a que alguien lo confirme.
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
Función javascript que llama a otra función javascript en otra página jandroruiz HTML, Javascript y otros 4 28-02-2013 11:38:00
Funcion ABS brandolin SQL 5 24-01-2009 14:53:38
Función o q? Veanny Internet 2 21-02-2008 21:43:40
La función Ord() soul6301 Varios 2 27-06-2004 01:43:17
funcion agora18 SQL 1 06-10-2003 07:18:30


La franja horaria es GMT +2. Ahora son las 23:22:57.


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