Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.004 c
1-13586
Goblinus
2002-07-22 18:13
2002.08.05
Иконка


3-13581
alexco
2002-07-14 10:16
2002.08.05
подскажите, как правильно использовать метод Locate в Д5, TQuery


14-13770
RomanKulchycky
2002-07-08 11:19
2002.08.05
Русификация принтера Epson Lx 300+


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


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский