Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Comparar dos RECORD (https://www.clubdelphi.com/foros/showthread.php?t=16293)

oworty 23-11-2004 12:53:40

Comparar dos RECORD
 
Hola a todos!

Recientemente he tenido la necesidad de trabajar con los record de delphi, pero claro, no es oro todo lo que reluce, me ha salido la necesidad de ver si el contenido de dos record's es igual. Me he encontrado que con un simple = no es posible comparar el contenido y tampono he sido capaz de encontrar ninguna función que compare el contenido de los record's y claro si el record contiene muchos campos es un trabajo muy costoso ir uno a uno comparando para ver si contienen la misma información, alguien sabe si existe una funcion que me diga si dos records son iguales? un ejemplo:

Tkk = record
f1, f2, f3: String;
end;

var o1, o2: Tkk;

begin
o1.f1 := 'hola1';
o1.f2 := 'hola2';
o1.f3 := 'hola3';

o2.f1 := 'hola1';
o2.f2 := 'hola2';
o2.f3 := 'hola3';

if funcionquecompare(o1, o2) then
ShowMessage('mismo contenido.')
else
ShowMessage('distinto contenido.');
end;

Gracias a todos de ante mano!!!

SMTZ 23-11-2004 13:22:23

Ayuda
 
Hola, si trabajas con variables tipo "record", mucho me temo que te vas a tener que currar una función que compare uno a uno, en cambio, si utilizaras bases de datos como, por ejemplo, la Paradox que viene con Delphi, podrias utilizar la funcion "if tabe1.FieldByname ( 'Nombre' ).AsString = table2.FieldByname ( 'Nombre' ).AsString then ...." en este caso, sí que basa solo con poner el signo igual.

Se entiende que table1 y table2 son componentes TTable.

Espero que te sirva de ayuda.


Saludos.

oworty 23-11-2004 13:45:30

Ante todo muchas gracias!

Si efectivamente necesito comparar variables de tipo record!Vaya me desilusionaste, me lo tendre que currar, pense que delphi tendría alguna función que hiciera la faena de comporar los campos de mi variable de tipo record por mi. Otra cosa los componentes TTable igual que las variables record, ibsql, datasets, etc... se que se pueden comparar campo a campo con un simple =, pero lo que pretendia es comparar un registro con otro entero para ver si hay alguna variación y si es así hacer un update.

Muchas gracias, de nuevo. Se agradece tu ayuda.

delphi.com.ar 23-11-2004 15:18:33

Podrías primero comparar el tamaño de ambos records (SizeOf), si el tamaño es igual podrías utilizar alguna función como CompareMem para comparar su contenido.

Saludos!


La franja horaria es GMT +2. Ahora son las 06:17:29.

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