Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CompareMem?


Страницы:   1 2 3

Dema-X ©   (2004-11-17 19:56:00) 

Почему не отрабатывает как нужно ?
procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2:string;
res:Boolean;
ss1:Integer;
begin
Edit1.Text:='ABCD' ;
Edit2.Text:='ABCD';
s1:=Edit1.Text;
s2:=Edit2.Text;
res:=CompareMem(@s1,@s2,length(s1)-1);
if res then ShowMessage('OK') else ShowMessage('Cancel')
end;
текст одинаковый а CompareMem выдает что нет


Palladin   (2004-11-22 23:29:00) [21]


> 17] Dema-X   (22.11.04 06:18)

У меня под 2-4 милионна строк крутится и что?
Пример простой QuickSort есть в %Delphi%\Demos\Threads
Это первое. Второе: Лучше сразу сортировать на входе в массив, искать нужное для строки место.


> Сказал слово и замолк как рыба,что за отношение к людям
> ё-моё :(

Не борзей. Сам появился через два дня.


jack128   (2004-11-22 23:01:00) [22]

на алголисте, наверно, десяток алгоритмов сортировки описано...


Dema-X   (2004-11-22 19:02:00) [23]


> Palladin ©   (20.11.04 12:46) [16]
> Сортировка и поиск, ключевые слова.

Сказал слово и замолк как рыба,что за отношение к людям ё-моё :(


Dema-X   (2004-11-22 16:32:00) [24]


> Palladin ©   (20.11.04 12:46) [16]
> Сортировка и поиск, ключевые слова.

а как её осущесвить?


Dema-X   (2004-11-22 06:18:00) [25]

Сортировка такого массива занимет не меньше места,сам подсчитай если размер файла около 100мегабайт


Palladin   (2004-11-20 12:46:00) [26]

Сортировка и поиск, ключевые слова.


Dema-X   (2004-11-20 12:24:00) [27]

удалить из массива строк повтроряющиеся сообщения,в данном случае удалить одинаковые обьявления из всех обьявлений в газете или архиве газет за разные месяцы


Palladin   (2004-11-19 15:26:00) [28]

Чем вызвана эта необходимость прогонки?


Defunct   (2004-11-19 15:15:00) [29]

Dema-X   (19.11.04 10:42) [12]

что вы напишете =, что CompareMem все равно как минимум 1Млн байт придется сравнить. Как минимум 1 млн раз придется вызвать функцию сравнения. IMHO "=" быстрее всего.


Dema-X   (2004-11-19 10:42:00) [30]

просто у меня стоит необходимость прогонки строки по массиву из более чем 1МЛН а сравнений типа = медленно а как можно по быстрому сравнивать


Anatoly Podgoretsky   (2004-11-18 19:21:00) [31]

Dema-X   (18.11.04 19:08) [10]
В общем случае c1=c2


Dema-X   (2004-11-18 19:08:00) [32]

А кстати что будет быстрее работать сравнение тика if  с1=с2 или эти функции&\?


Dema-X   (2004-11-18 19:07:00) [33]


> Юрий Зотов ©   (17.11.04 20:57) [5]
> Длинная строка - это указатель
Извиняюсь,не сразу просёк :)


Dema-X   (2004-11-18 18:53:00) [34]

а при чем здесь s1 у меня стоит @s1 что есть указатель то есть поинтер а

> Юрий Зотов ©   (17.11.04 20:59) [6]
> Сорри, Length(S1), конечно. "Минус единица" - убрать.

это я так пробовал думал может есть какой знак в конце не нужный


Defunct   (2004-11-17 21:38:00) [35]

Res := S1 = S2;


Юрий Зотов   (2004-11-17 20:59:00) [36]

Сорри, Length(S1), конечно. "Минус единица" - убрать.


Юрий Зотов   (2004-11-17 20:57:00) [37]

> Dema-X

Длинная строка - это указатель. Вы сравниваете адреса, а не тела строк.  

Res := CompareMem(@S1 [1], @S2 [1], Length(S1) - 1);


wnew   (2004-11-17 20:25:00) [38]

StrIComp
StrComp
StrLComp
StrLIComp
CompareStr
AnsiCompareStr


begin...end   (2004-11-17 20:13:00) [39]


> Dema-X   (17.11.04 19:56)

Кстати, тебя тот факт, что SizeOf(s1) = 4, даже если s1 = 'ABCDEFG', ни на какие мысли не наводит?


begin...end   (2004-11-17 20:11:00) [40]

Ну и правильно, указатели s1 и s2 не равны.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо