FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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!!! |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
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!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|