Ver Mensaje Individual
  #1  
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
¿Como comparar 2 record?

Estimados amig@s,

Tengo una base de datos de clientes basada en un TStringList asociada a un TCliente en forma de record y necesito comparar 2 registros. Como son muchos campos, me pregunto si existe alguna forma de comparar 2 bloques de memoria de una sola vez o usando algún automatismo, sin necesidad de preguntar campo a campo, lo que resulta muy engorroso.

Ejemplo:
Contamos con un registro tipo cliente...
Código Delphi [-]
// El caso real cuenta con más de 60 campos
TCliente = Record
  Campo1: String; 
  Campo2: Double;
  Campo3: TdateTime;
end;

Function Es_Igual (A,B: TCliente): Boolean;
begin
  A.Campo1 := 'Juan';
  A.Campo2 := 1000;
  B.Campo1 := 'Sebas';
  B.Campo2 := 1000;

  // No podemos hacer lo siguiente; Result :=  A = B;
  // He probado esta alternativa pero siempre obtengo el mismo resultado, son iguales;
  Result := CompareMem(@A, @B, SizeOf(TCliente));
end;
En fin, algo debo hacer mal!!

Saludos!

Silvestre

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