Ver Mensaje Individual
  #3  
Antiguo 01-10-2015
Avatar de geolife
[geolife] geolife is offline
Miembro Premium
 
Registrado: nov 2006
Ubicación: Barcelona
Posts: 88
Reputación: 18
geolife Va por buen camino
Gracias Mammx!,

Si, en este caso solo es necesario saber que son diferentes, pero no donde están las diferencias.

Para crear un campo que contiene el hash de la totalidad de los campos que deseamos comparar, supongo que hay que implementarlo también uno a uno, ¿Se podría recorrer los campos de un record? como hacemos con los objetos de un componente en el ejemplo de abajo...
Código Delphi [-]
Procedure Recorrer_Controles;
var
  i:integer;
  Hash: String;
begin
  for I:= 0 to PageControl.ControlCount - 1 do
    if (PageControl.Controls[i] is TEdit) then Hash := Hash + ' | '+  (PageControl.Controls[i] as Tedit).Text;
end;
Cita:
Empezado por mamcx Ver Mensaje
Lo de comparar los punteros de memoria tiene sentido si quieres saber si los punteros son o no iguales.

Pero como quieres saber si los "valores" son o no iguales, entonces solo queda comparar valores. Eso significa, que si, tienes que comparar campo a campo hasta que encuentres uno diferente (o si necesitas saber cuales, acumular los campos dispares en una lista). Eso no tiene otro camino.

Si solo te interesa saber si son diferentes pero no porque, puedes acelerar el proceso guardando en un campo extra un hash de la suma de todos los campos cada vez de hacer insert/delete, y solo comparas los hash después.

Última edición por Casimiro Notevi fecha: 01-10-2015 a las 19:50:12.
Responder Con Cita