Как сравнить две переменные

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Как сравнить две переменные

Сообщение X-BOND » 08.07.2005 (Пт) 8:53

Правда страшный вопрос? :) Вот только я немного подзабыл
Как сравнить равенство двух переменных своего типа данных (например RECT)?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.07.2005 (Пт) 9:00

Помемберно? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 08.07.2005 (Пт) 9:03

А если этих мемберов штук 40 ?

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

Сообщение alibek » 08.07.2005 (Пт) 9:05

40 раз сравнивать. Откуда VB знать, в чем физический смысл конкретного пользовательского типа?
Lasciate ogni speranza, voi ch'entrate.

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 08.07.2005 (Пт) 11:00

Если других путев нету, будем сравнивать все...

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Как сравнить две переменные

Сообщение codemaster » 08.07.2005 (Пт) 11:29

X-BOND писал(а):Правда страшный вопрос? :) Вот только я немного подзабыл
Как сравнить равенство двух переменных своего типа данных (например RECT)?


1. насколько "длинный" свой тип данных?
2. что надо на выходе: равно неравно или больше меньше ?
//<-
Mit freundlichen Grüßen
//->

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Re: Как сравнить две переменные

Сообщение X-BOND » 08.07.2005 (Пт) 11:35

codemaster писал(а):1. насколько "длинный" свой тип данных?

X-BOND писал(а):А если этих мемберов штук 40 ?


codemaster писал(а):2. что надо на выходе: равно неравно или больше меньше ?

X-BOND писал(а):Как сравнить равенство двух переменных своего типа данных...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.07.2005 (Пн) 9:31

CopyMemory() их обеих в массивы, и потом побайтно сравнивать в цикле.

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

Сообщение alibek » 11.07.2005 (Пн) 9:34

Ennor писал(а):CopyMemory() их обеих в массивы, и потом побайтно сравнивать в цикле.

Да вы, батенька, шутник :)
А не быстрее будет сразу сравнивать мемберов?
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.07.2005 (Пн) 10:15

Зато это решение универсально, а так для каждой структуры свой сравниватель писать придется.

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

Сообщение alibek » 11.07.2005 (Пн) 10:41

Для строковых и объектных мемберов это решение все-равно не подойдет :)
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.07.2005 (Пн) 14:39

Ennor, alibek: в ntdll есть функции RtlCompareMemory и RtlCompareMemoryUlong.
Изобретаете велосипед?
Изображение

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 11.07.2005 (Пн) 14:58

tyomitch писал(а):Ennor, alibek: в ntdll есть функции RtlCompareMemory и RtlCompareMemoryUlong.
Изобретаете велосипед?

То что надо. Только жаль, под Win9x работать не будет. Может есть аналог?

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.07.2005 (Пн) 15:36

Тогда уж скорее RTLEqualMemory:
http://msdn.microsoft.com/library/defau ... 55.xml.asp

Правда, я не понял, почему док по этим функциям нет в моем локальном MSDN. Видимо, надо было DDK ставить.

Кстати, X-BOND, а с чего ты взял, что это не будет работать в Win9x/Me? Там нигде не написано, вообще-то...

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 11.07.2005 (Пн) 15:40

Название библиотеки натолкнуло на такую мысль

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.07.2005 (Пн) 15:45

Она имеется в win9x, в каталоге %systemroot%. Не знаю, тупая заглушка или нет, но она там есть.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.07.2005 (Пн) 15:48

Client: Included in Windows XP and Windows 2000 Professional.
Server: Included in Windows Server 2003 and Windows 2000 Server.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.07.2005 (Пн) 15:49

GSerg писал(а):Client: Included in Windows XP and Windows 2000 Professional.
Server: Included in Windows Server 2003 and Windows 2000 Server.

Ссылку можно?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.07.2005 (Пн) 15:53

Локальный MSDN :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.07.2005 (Пн) 16:31

Ennor писал(а):Тогда уж скорее RTLEqualMemory:
http://msdn.microsoft.com/library/defau ... 55.xml.asp

Функции с таким названием в моём WinXP SP2 нету. Может, она только в Лонгхорне появилась? :roll:
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.07.2005 (Пн) 16:55

Да, у меня тоже. Более того, специально слазил на корпоративный сервер, там W2K3SP1 - новее не придумаешь. Вот все, что там нашлось:
Код: Выделить всё
RtlEqualComputerName
RtlEqualDomainName
RtlEqualLuid
RtlEqualPrefixSid
RtlEqualSid
RtlEqualString
RtlEqualUnicodeString

Тем не менее, на сайте она документирована. Получается, что да, только для всяких Долгорогих :?.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 77

    TopList  
cron