Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.05;
Скачать: 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 вся ветка

Текущий архив: 2002.08.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
6-13754
neodiX
2002-05-24 18:01
2002.08.05
TClientSocket and TServerSocket


4-13853
KeVRter
2002-05-27 23:15
2002.08.05
Помогите разобраться с rundll32.


1-13602
newUser
2002-07-24 17:17
2002.08.05
WinXP


1-13716
GydruS
2002-07-24 08:25
2002.08.05
Переполнение стека из-за CheckBox а!


1-13598
chips
2002-07-24 17:17
2002.08.05
как между операторами сделать задержку в пол секунды