T@rEn |
Отправлено: 05.10.2006, 14:26 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 18
|
Доброе время суток !
Помогите пожалуйста!
Есть две БД (Access), одинаковые по структуре.
Подключаюсь с помощью ADO.
В них таблицы, допустим — Picture.
В таблицах поля, типа OLE, допустим — Sxema, содержащие чертежи оборудования.
Необходимо, сравнивая поля, найти идентичные данные, т.е. одинаковые чертежи.
Как можно организовать такое сравнение?
Если, к примеру, выдергивать из поля данные, таким образом:
CODE |
Graphics::TBitmap *Bit1 = new Graphics::TBitmap();
TJPEGImage *jp1 = new TJPEGImage();
jp->LoadFromStream(DM->Q1->CreateBlobStream(DM->Q1->FieldByName("sxema"),bmRead));
Bit->Assign (jp); |
потом можно будет сравнить jp или bit? и каким образом?
Заранее благодарен!!! |
|
olegenty |
Отправлено: 05.10.2006, 14:49 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
храни в базе не только изображения, но и их CRC32/Hash(например GOST). тогда сравнение становится задачей тривиальной: CRC32 — это бигинт, Hash(GOST) строка из 64 символов.
|
|
T@rEn |
Отправлено: 06.10.2006, 10:38 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 18
|
Спасибо за ответ!!!
Но на это у меня мозгов не хватает
Хотя такой вариант для меня лучше чем приведенный ниже:
CODE |
TMemoryStream *M1 = new TMemoryStream();
TStream *B1 = DM->Q1->CreateBlobStream(DM->Q1->FieldByName("sxema"),bmRead);
M1->CopyFrom(B1,B1->Size);
TMemoryStream *M2 = new TMemoryStream();
TStream *B2 = DM->Q2->CreateBlobStream(DM->Q2->FieldByName("sxema"),bmRead);
M2->CopyFrom(B2,B2->Size);
if (CompareMem(M1->Memory,M2->Memory,M1->Size)) l4->Caption="da";
else l4->Caption="net";
|
Вдруг кому-нибудь понадобиться! |
|
olegenty |
Отправлено: 06.10.2006, 12:19 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
http://www.cobans.net/hashlib.php — бесплатная библиотека для хеширования данных.
|
|