Сравнение двух Objects

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сравнение двух Objects

Сообщение kibernetics » 01.09.2009 (Вт) 19:33

Приходилось ли кому-нибудь сравнивать два однотипных объекта?
Нужно сравнить на предмет расхождения два объекта с кучей свойств.
Может кто-то видел какой-нибудь примерчик?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Сравнение двух Objects

Сообщение alibek » 01.09.2009 (Вт) 22:01

If obj1 Is obj2
Lasciate ogni speranza, voi ch'entrate.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Сравнение двух Objects

Сообщение SLIM » 01.09.2009 (Вт) 22:04

какой-то некорректный вопрос по-моему.
Что есть объект? Область в памяти? Но переменная не будет же хранить всю область, скорее всего это указатель, а указатель всего лишь число.
У объекта существуют переменные класса. Но тут по моему ничего кроме if..then не придумать
Пишите жизнь на чистовик.....переписать не удастся.....

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Сравнение двух Objects

Сообщение kibernetics » 01.09.2009 (Вт) 22:16

есть два объекта, к примеру
Set objRS1 = CreateObjects("ADODB.Recordset")
Set objRS2 = CreateObjects("ADODB.Recordset")

нужно сравнить все свойства, методы, функции, и получить различия.
Короче перебрать каждый айтем объекта.
Получается вопрос, как получить все айтемы чтоли?
Дугого варианта нет?

Суть в чём.
Есть два документа из WORD.Application, у одного при сохранении выскакивает конфирмейшн-окно, а у другого - нет.
Стопроцентов, за это отвечает какое-то свойство документа.
Но вот какое, найти сложно, ибо очень много свойств всяких.
Вот и хочу программно сравнить два объекта.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Сравнение двух Objects

Сообщение alibek » 01.09.2009 (Вт) 22:37

Сериализуй в строку и сравнивай строки.
Lasciate ogni speranza, voi ch'entrate.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Сравнение двух Objects

Сообщение kibernetics » 01.09.2009 (Вт) 23:09

alibek писал(а):Сериализуй в строку и сравнивай строки.


"сериализуй", это ты имеешь ввиду перебирать каждое свойство объекта в стринг?

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Re: Сравнение двух Objects

Сообщение Vi » 02.09.2009 (Ср) 9:06

alibek писал(а):Сериализуй в строку и сравнивай строки.

Свойство Dirty или ее аналог обычно не сериализуется, но влияет на "конфирмейшн-окно" при сохранении.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Re: Сравнение двух Objects

Сообщение Vi » 02.09.2009 (Ср) 9:21

kibernetics писал(а):Приходилось ли кому-нибудь сравнивать два однотипных объекта? Нужно сравнить на предмет расхождения два объекта с кучей свойств.
Обычно приходится сравнивать два объекта на предмет "один и тот же" с помощью Идентичности (identity), сравнивая указатели на объект obj1 Is obj2. Сравнение двух изначально разных, но подобных, объектов на предмет "такой же" реализуется с помощью предоставляемого объектами метода IsEqual (или подобного) или же вручную каждым клиентом самостоятельно, поскольку критерий "такой же" у каждого клиента разные.

Можно определить набор свойств, которые значимы для твоих объектов, и сравнить на их значениях. Можно использовать для автоматизации этого дела
Library TLI
C:\WINDOWS\System32\TLBINF32.DLL
TypeLib Information
которая позволит перебрать все свойства объекта и сравнить с аналогичными из другого.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Сравнение двух Objects

Сообщение kibernetics » 02.09.2009 (Ср) 11:12

ок, я всё получил, все методы, функции и свойства...
а как можно подставить имя свойства объекту, для получения значения?

т.е. есть допустим width, height...
как получить значения объекта зная только имя свойства?
что-то типа:
Debug.Print myObj.("Width")
Debug.Print myObj.("Height")
...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Сравнение двух Objects

Сообщение alibek » 02.09.2009 (Ср) 13:20

CallByName
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 54

    TopList