OK entiendo las razones... como te dije en mi primer post delphi usa algo similar en sus componentes o en alguna parte no me acuerdo donde lo lei, asi q solo era adentrarse un poco
, te dejo un par de funciones, basicamente no hago nada, todo lo hace delphi a la hora de comparar (la comparacion es de forma binaria)....
comparacion mediante streams:
Código Delphi
[-]
function CompareStreams(StreamA, StreamB: TMemoryStream): Boolean;
begin
Result := (Assigned(StreamA) and Assigned(StreamB))
and (StreamA.Size = StreamB.Size)
and CompareMem(StreamA.Memory, StreamB.Memory, StreamB.Size);
end;
solo falta convertir el campo a stream, eso se arregla con esta funcion:
Código Delphi
[-]function BlobToStream(Field: TField): TMemoryStream;
begin
Result := nil;
if Field.IsBlob then
begin
Result := TMemoryStream.Create;
try
TBlobField(Field).SaveToStream(Result);
except
FreeAndNil(Result);
end;
end;
end;
aca va un ejemplo de uso:
Código Delphi
[-]var
StreamA: TMemoryStream;
StreamB: TMemoryStream;
begin
...
StreamA := BlobToStream(TuTabla.Fields[1]);
StreamB := BlobToStream(TuTabla.Fields[2]);
if CompareStreams(StreamA, StreamB) then
ShowMessage('Los campos blob son iguales');
if Assigned(StreamA) then
StreamA.Free;
if Assigned(StreamB) then
StreamB.Free;
...
end;