Сравнить два массива

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сравнить два массива

Сообщение _Мика_ » 18.05.2005 (Ср) 12:20

Вот код...

Код: Выделить всё

Dim ar(100) As Byte
Dim arv(100) As Byte

Open "C:\1.exe" For Binary As #1
Seek #1, 100
Get #1, , ar
Close #1

Open "C:\2.exe" For Binary As #1
Seek #1, 100
Get #1, , arv
Close #1


Надо узнать, одинкавы ли масивы или нет...

Так не получается
Код: Выделить всё

If ar = arv Then
MsgBox "True"
Else
MsgBox "False"
End If
[/code]
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

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

Сообщение alibek » 18.05.2005 (Ср) 12:32

Сравниваешь поэлементно.
Другой вариант - накладываешь друг на друга по XOR и если результат нулевой, значит они одинаковы. Но это не для VB.
Lasciate ogni speranza, voi ch'entrate.

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 12:43

Да, но по элементно будет очень долго, не ужели нету другого пути? :cry:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

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

Сообщение Ennor » 18.05.2005 (Ср) 12:45

Вычисли и сравни их CRC32 :). Правда, не уверен, что это будет быстрее...

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

Сообщение alibek » 18.05.2005 (Ср) 12:47

А смысл? CRC не дает гарантии (1) и в любом случае надо перебирать все элементы (2). Лучше уж сразу сравнивать.
Lasciate ogni speranza, voi ch'entrate.

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 13:34

Ну впринцапи сравнивание 100 байт проходит быстро.....спасибо :roll:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 13:41

Еще...

Код: Выделить всё


Open "C:\1.exe" For Binary As #1
Seek #1, 100
Get #1, , arv
Close #1


Open "C:\1.base" For Binary As #1
Put #1, , arv
Close #1



Он записывает почемуто просто пробелы :(
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

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

Сообщение alibek » 18.05.2005 (Ср) 13:45

Перед тем, как считать файл, сделай ReDim arv(1 To LOF(1))
Lasciate ogni speranza, voi ch'entrate.

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 13:53

не в этом дело.....

У меня она объявленна..
Код: Выделить всё

Dim arv(100) As Byte


Я считываю 100 байт и записываю в другой файл.... :wink:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

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

Сообщение alibek » 18.05.2005 (Ср) 13:57

Во первых, она объявлена неправильно.
Если у тебя нет директивы Option Base 1, то этот массив состоит не из 100 элементов, а из 101 (0...100).
А во вторых покажи весь код.
Lasciate ogni speranza, voi ch'entrate.

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 14:00

вот
Код: Выделить всё

Dim arv(100) As Byte

Open "C:\1.exe" For Binary As #1
Seek #1, 100
Get #1, , arv
Close #1

Open "C:\1.base" For Binary As #1
Put #1, , arv
Close #1
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

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

Сообщение alibek » 18.05.2005 (Ср) 14:07

Вроде бы правильно. А зачем тебе Seek? Позицию можно и в Get указать.

Попробуй указать arv(), а не arv.
Lasciate ogni speranza, voi ch'entrate.

reajev
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 14.04.2005 (Чт) 11:49

Сообщение reajev » 18.05.2005 (Ср) 14:26

Пишешь в один файл, а читаешь из другого
C:\1.exe и C:\1.base"

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 15:08

reajev писал(а):Пишешь в один файл, а читаешь из другого
C:\1.exe и C:\1.base"


Ну да.....а к чему вы это сказали? :?
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 15:11

все равно не получается :cry:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 15:20

Блин.....тупая башка....файл C:\1.exe пустой :lol:

Так с этим все ясно......
А как сделать масив масива, т.е. что бы в масиве хранился масив.

Пробовал так...

Код: Выделить всё

Private Type qwe
zxc(100) As Byte
End Type

Dim asd() As qwe


Ошибка "Subscript out of range :cry:" когда пытаюсь седалть так...


Код: Выделить всё

Open "C:\1.exe" For Binary As #1
Seek #1, 100
Get #1, , asd(1).zxc()
Close #1
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

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

Сообщение GSerg » 18.05.2005 (Ср) 15:34

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

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 15:49

Зачем Redim.....здесь он не нужен :wink:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

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

Сообщение alibek » 18.05.2005 (Ср) 15:55

Это ты так думаешь. А VB думает иначе.
Lasciate ogni speranza, voi ch'entrate.

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 16:17

КАК ТАК?? В asd хранится другой массив......
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 18.05.2005 (Ср) 16:33

Ну и что. что храниться, распределять все равно необходимо.
просто сначала массив структур, а потом массив каждой структуры, если надо
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 16:44

Я не могу понять этого :shock:

Можно пример не большой? :roll:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

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

Сообщение GSerg » 18.05.2005 (Ср) 16:51

Скажи честно, ты издеваешься? :?

Код: Выделить всё
Private Type qwe
  zxc(100) As Byte
End Type

Dim asd() As qwe
ReDim asd(1 to 10)

Open "C:\1.exe" For Binary As #1
Get #1, 100, asd(1).zxc
Close #1
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 18.05.2005 (Ср) 16:52

Код: Выделить всё
Type asdf
    qwe(1 To 100) As Long
End Type

Sub Test()
Dim i As Long
Dim a() As asdf
'Распределяем на 100 элементов
ReDim a(1 To 100)
'заполняем по диагонали внутренний массив
For i = 1 To 100
    a(i).qwe(i) = i
Next i
'Выводим результат
For i = 1 To 100
    Debug.Print a(i).qwe(i)
Next i
End Sub
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 18.05.2005 (Ср) 16:55

Аааааа.... :D понял.....я то думал ReDim arv(1 To LOF(1)) :D :D

Спасибо :roll:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!


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

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 175

    TopList