![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли быстро два массива байт превратить в две строки? [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