Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];

Вниз

Сравнение массивов   Найти похожие ветки 

 
Timur   (2009-03-12 19:55) [0]

Здраствуйте, скажите как можно быстро сравнить массив относительно другого.
При полном совпадении данных возвратить true.

Например:
type
Ar = array of double;
function DifArray(A:ar, sizeA:integer, B:ar, bSize:integer):boolean;
-6         -6
55         55
12         12
-5         -5
-45       -45
-6         2
return false

Спасибо.


 
Сергей М. ©   (2009-03-12 20:05) [1]

Result := (Length(A) = Length(B)) and CompareMem(@A[0], @B[0], Length(A));


> sizeA


> bSize


Это вообще выкинь к лешему, ибо пятое колесо телеге


 
Сергей М. ©   (2009-03-12 20:18) [2]

пардон

Result := (Length(A) = Length(B)) and CompareMem(@A[0], @B[0], Length(A)*SizeOf(Integer));


 
фыва   (2009-03-12 20:22) [3]

пардон

Result := (Length(A) = Length(B)) and CompareMem(@A[0], @B[0], Length(A)*SizeOf(double));

:)


 
Palladin ©   (2009-03-12 20:25) [4]

пардон

Result := (Length(A) = Length(B)) and CompareMem(@A[0], @B[0], Length(A)*SizeOf(a[0]));

:)


 
Сергей М. ©   (2009-03-12 20:30) [5]

Короче, сейчас выяснится, что тип array of Double был указан только для примера, а на самом деле подразумевался любой произвольный массив произвольной типоразмерности - вот тогда будет вселенский "пардон"))


 
Юрий Зотов ©   (2009-03-12 20:34) [6]

> вот тогда будет вселенский "пардон"

Не будет. Длина динамического массива (в байтах) сидит в его заголовке.


 
Сергей М. ©   (2009-03-12 20:36) [7]


> Длина динамического массива


Все бы ничего, да вот тип элементов может оказаться дин.типом с управляемым временем жизни


 
Юрий Зотов ©   (2009-03-12 20:41) [8]

> Сергей М. ©   (12.03.09 20:36) [7]

Не имеет значения. Если элемент умер, ссылка на него в массиве все равно осталась. То есть, не изменилась ни длина массива, ни его содержимое.


 
Сергей М. ©   (2009-03-12 20:49) [9]


> Юрий Зотов ©   (12.03.09 20:41) [8]


> Если элемент умер


Причем здесь смерть, если элементами массива могут быть не сами данные, а указатели на данные ? Вариант с единственным CompareMem при этом не выдержит никаких корректирующих "пардонов"


 
Sapersky   (2009-03-12 20:50) [10]

Длина динамического массива (в байтах) сидит в его заголовке.

В элементах. Впрочем, размер элемента можно получить через TypeInfo или способом Паладина.

Все бы ничего, да вот тип элементов может оказаться дин.типом с управляемым временем жизни

Решаемо:
http://sapersky.narod.ru/files/TypInfoEx.rar (CompareData)

Не имеет значения.

Имеет. Например, две длинные строки могут содержать одинаковые данные, но иметь разные адреса, а CompareMem будет сравнивать именно адреса.


 
Медвежонок Пятачок ©   (2009-03-16 10:42) [11]

а CompareMem будет сравнивать именно адреса.

Ну массивы-то при этом все равно формально разные, если содержат ссылки на разные адреса, даже если по разным ссылкам случайно лежат одинаковые данные



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1237193561
igorntk
2009-03-16 11:52
2009.04.26
Как при открытии формы сделать кнопку неактивной?


15-1235299343
Den_
2009-02-22 13:42
2009.04.26
Что бы придумать для своей программы (не совсем шароварное)?


2-1237106993
ML
2009-03-15 11:49
2009.04.26
Процедуры


2-1237205386
девушка
2009-03-16 15:09
2009.04.26
Аналог explod из PHP


2-1237279331
b@v
2009-03-17 11:42
2009.04.26
TPopupMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский