Форум: "Основная";
Текущий архив: 2002.08.05;
Скачать: [xml.tar.bz2];
ВнизМожно ли быстро два массива байт превратить в две строки? Найти похожие ветки
← →
Aleksandr (2002-07-24 17:45) [0]Собственно, задача в том, что есть два массива по 20000 элементов типа байт. Эти массивы нужно сравнить на равенство. Конечно, задача решаема тупым for, но было бы интересно решить более красиво: я так понимаю, что эти массивы в памяти выглядят примерно так же, как и строки, может, возможно их считать как строки и уже применить стандартную функцию сравнения строк?
← →
Виктор Щербаков (2002-07-24 17:48) [1]StrComp
← →
Виктор Щербаков (2002-07-24 17:49) [2]Хотя лучше StrLComp
← →
Eugene Lachinov (2002-07-24 17:59) [3]CompareMem
← →
Praco (2002-07-24 18:01) [4]А почему строки красивее? И почему быстрее. Все равно тот же цикл сравнения.
← →
Aleksandr (2002-07-24 18:56) [5]В смысле StrComp? Они же для PChar...
← →
Anatoly Podgoretsky (2002-07-24 19:20) [6]Aleksandr © (24.07.02 18:56)
Правильно, а что такое по твоему PChar?
← →
Aleksandr (2002-07-24 19:38) [7]Ну да, только вот выразить это словами типа PChar(Array1) Делфи воспринимает как личное оскорбление...
← →
Anatoly Podgoretsky (2002-07-24 19:49) [8]Aleksandr © (24.07.02 19:38)
Так не надо приводить, это оскорбление, передавай адрес в функцию без всякого преобразования.
Твоя бы жизнь сильно уупростилась если бы удосужился привести объявление своих массивов, а то разговор идет на уровне телепатиии.
← →
Прав тот, у кого больше прав (2002-07-24 19:52) [9]>Правильно, а что такое по твоему PChar?
По моему, если трактовать массив как PChar, то он обрежется на первом же нуле. Я не уверен, что это именно то, что нужно.
← →
Anatoly Podgoretsky (2002-07-24 20:01) [10]Тоже у него проихойдет при использовании StrComp, правда не самом деле ничего с массивом не произойдет, останется в челости и неприкосновенности, слишком много воли ты даешь функции PChar
← →
Прав тот, у кого больше прав (2002-07-24 20:04) [11]Я и имел ввиду, что сравниваться они будут до первого нуля.
Естественно, сам массив никто не обрежет.
← →
Aleksandr (2002-07-24 21:39) [12]Так, сорри... массивы типа:
TMyArray=array [0..20000] of byte;
А вот насчет нулей вы меня напугали: там добрых 90% может быть нулями...
← →
Юрий Зотов (2002-07-24 22:43) [13]Господа, Вы меня удивляете...
Такой длинный спор - и наконец-то вспомнили про нули. Это же очевидно. Естественно, сравнение массивов в виде строк пройдет только до первого попавшегося нуля.
А еще мне очень странно, что после сообщения:
" Eugene Lachinov © (24.07.02 17:59) CompareMem "
обсуждение все еще продолжается. Мне казалось, обсуждать тут больше нечего.
← →
Anatoly Podgoretsky (2002-07-24 22:58) [14]Так хотелось же сравнивать как строки, а полной информации о типе массива и о его содержимом не было речи, конечно нет смысла сравнивать как строки, надо как байты, но воля вопросшающего закон.
← →
Юрий Зотов (2002-07-24 23:07) [15]Возражу - речь была:
"...есть два массива по 20000 элементов типа байт ".
То есть, если на НОРМАЛЬНОМ языке: array[...] of byte.
Да, собственно, это и неважно. Какого бы типа ни были элементы массивов, CompareMem сработает ВСЕГДА.
← →
Anatoly Podgoretsky (2002-07-24 23:21) [16]Да нет это возражений не вызывает, просто речь пошла про строки, было полезно о них поговорить
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c