![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сравнение двух булевых массивов [D7, XP]
Сатир © (2006-11-21 15:28:00)есть два булевых массива
a,b:array of boolean;
возможно ли их как-то сравнить без прохождения в цикле по каждому элементу?
TUser (2006-11-22 07:04:00) [1]
> if CompareMem(a,b,Length(a)) then
> ShowMessage('Both arrays are indentical!')
if length (a) = length (b) then
if CompareMem(@a[0],@b[0],Length(a)*sizeof(a[0])) then
showmessage ...
Anatoly Podgoretsky (2006-11-21 22:15:00) [2]
> это если кол-во элементов в массиве меньше 255
Потому что ты как решил?
Наиль (2006-11-21 18:10:00) [3]> это если кол-во элементов в массиве меньше 255
Если нужно много, но сэкономить память, то делать наследника от TBits.
Правда, там нужен будет всё тот же CompareMem.
Сатир (2006-11-21 17:48:00) [4]
> Обычно в таких случаях используется a,b:Set of
это если кол-во элементов в массиве меньше 255
Наиль (2006-11-21 17:31:00) [5]> есть два булевых массива
> a,b:array of boolean;
Обычно в таких случаях используетсяa,b:Set of
Экономия памяти в 8 с лишним раз.
Сатир (2006-11-21 16:02:00) [6]
> может как-нить сам?
уже:-)
clickmaker (2006-11-21 15:48:00) [7]
> [3] Сатир (21.11.06 15:44)
одного вызова функции с тремя параметрами?
может как-нить сам?
Сатир (2006-11-21 15:47:00) [8]if CompareMem(a,b,Length(a)) then
ShowMessage('Both arrays are indentical!')
;-)
thnX
Сатир (2006-11-21 15:44:00) [9]
> CompareMem, если нужно только факт различия установить
можно примерчик, плиииз8-)
clickmaker (2006-11-21 15:36:00) [10]CompareMem, если нужно только факт различия установить
DrPass (2006-11-21 15:34:00) [11]Вообще без цикла - нельзя. Можно попытаться соптимизировать - использовать packed array, одновременно загружать и сравнивать по четыре элемента... но это все фигня, которой стоит заниматься только если скорость сравнения очень уж критична