Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли быстро два массива байт превратить в две строки? [D6, WinXP]


Aleksandr ©   (2002-07-24 17:45:00) 

Собственно, задача в том, что есть два массива по 20000 элементов типа байт. Эти массивы нужно сравнить на равенство. Конечно, задача решаема тупым for, но было бы интересно решить более красиво: я так понимаю, что эти массивы в памяти выглядят примерно так же, как и строки, может, возможно их считать как строки и уже применить стандартную функцию сравнения строк?


Anatoly Podgoretsky   (2002-07-24 23:21:00) [1]

Да нет это возражений не вызывает, просто речь пошла про строки, было полезно о них поговорить


Юрий Зотов   (2002-07-24 23:07:00) [2]

Возражу - речь была:
"...есть два массива по 20000 элементов типа байт ".

То есть, если на НОРМАЛЬНОМ языке: array[...] of byte.

Да, собственно, это и неважно. Какого бы типа ни были элементы массивов, CompareMem сработает ВСЕГДА.


Anatoly Podgoretsky   (2002-07-24 22:58:00) [3]

Так хотелось же сравнивать как строки, а полной информации о типе массива и о его содержимом не было речи, конечно нет смысла сравнивать как строки, надо как байты, но воля вопросшающего закон.


Юрий Зотов   (2002-07-24 22:43:00) [4]

Господа, Вы меня удивляете...

Такой длинный спор - и наконец-то вспомнили про нули. Это же очевидно. Естественно, сравнение массивов в виде строк пройдет только до первого попавшегося нуля.

А еще мне очень странно, что после сообщения:
" Eugene Lachinov © (24.07.02 17:59) CompareMem "
обсуждение все еще продолжается. Мне казалось, обсуждать тут больше нечего.


Aleksandr   (2002-07-24 21:39:00) [5]

Так, сорри... массивы типа:

TMyArray=array [0..20000] of byte;

А вот насчет нулей вы меня напугали: там добрых 90% может быть нулями...


Прав тот, у кого больше прав   (2002-07-24 20:04:00) [6]

Я и имел ввиду, что сравниваться они будут до первого нуля.
Естественно, сам массив никто не обрежет.


Anatoly Podgoretsky   (2002-07-24 20:01:00) [7]

Тоже у него проихойдет при использовании StrComp, правда не самом деле ничего с массивом не произойдет, останется в челости и неприкосновенности, слишком много воли ты даешь функции PChar


Прав тот, у кого больше прав   (2002-07-24 19:52:00) [8]

>Правильно, а что такое по твоему PChar?

По моему, если трактовать массив как PChar, то он обрежется на первом же нуле. Я не уверен, что это именно то, что нужно.


Anatoly Podgoretsky   (2002-07-24 19:49:00) [9]

Aleksandr © (24.07.02 19:38)
Так не надо приводить, это оскорбление, передавай адрес в функцию без всякого преобразования.
Твоя бы жизнь сильно уупростилась если бы удосужился привести объявление своих массивов, а то разговор идет на уровне телепатиии.


Aleksandr   (2002-07-24 19:38:00) [10]

Ну да, только вот выразить это словами типа PChar(Array1) Делфи воспринимает как личное оскорбление...


Anatoly Podgoretsky   (2002-07-24 19:20:00) [11]

Aleksandr © (24.07.02 18:56)
Правильно, а что такое по твоему PChar?


Aleksandr   (2002-07-24 18:56:00) [12]

В смысле StrComp? Они же для PChar...


Praco   (2002-07-24 18:01:00) [13]

А почему строки красивее? И почему быстрее. Все равно тот же цикл сравнения.


Eugene Lachinov   (2002-07-24 17:59:00) [14]

CompareMem


Виктор Щербаков   (2002-07-24 17:49:00) [15]

Хотя лучше StrLComp


Виктор Щербаков   (2002-07-24 17:48:00) [16]

StrComp


Наверх

Титульная страница Поиск, карта сайта Написать письмо