Вниз
Скачать: CL | DM;

Можно ли быстро два массива байт превратить в две строки?   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.007 c
1-13653
Cosinus
2002-07-23 13:15
2002.08.05
Помогите. Проблеммы с переводом программы из DOS в Windows


14-13804
pave1
2002-07-11 09:57
2002.08.05
Вопрос о литературе ...


1-13680
dimushkin
2002-07-23 15:36
2002.08.05
Object Inspector...


1-13618
andrey_pst
2002-07-25 07:53
2002.08.05
Такой вот вопрос:


7-13829
ilysha
2002-05-22 09:09
2002.08.05
Где в реестре храниться указание на браузер по умолчению?




   Наверх