Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Функция сравнение содержимого 2-х ListBox   Найти похожие ветки 

 
Just newbie   (2004-01-19 12:24) [0]

Мастера!
Помогите новичку написать такую функцию - есть 2 TListBox"а, в каждом свои итемы. Функция должна брать каждое значения 1 LIstBox"а и смотреть - есть ли оно во 2-ом ListBox"е... Если есть, то выдавать True, если нет, то False.
Заранее спасибо!!!


 
Романов Р.В. ©   (2004-01-19 12:26) [1]

А вчем проблема то? Алгоритм вроде ясен...


 
Тимохов ©   (2004-01-19 12:27) [2]

Пользуйся TListBox.Items.


 
Anatoly Podgoretsky ©   (2004-01-19 12:37) [3]

IndexOf


 
SergP ©   (2004-01-19 12:53) [4]

Да можно много разных вариантов придумать:

1. проверять прямо в лоб. (долго)
2. Отсортировать листбоксы а потом проверять. (должно быть быстрее).
3. Вариант с извращением: Закинуть в БД в 2 таблицы оба листбокса и сделать select table1.item from table1,table2 where table1.item=table2.item (сразу получишь весь список тех что есть в обоих листбоксах) :-)))

Но что-то мне сдается что тебе это нужно для приведения в порядок спам-листов...


 
Oyster ©   (2004-01-19 12:55) [5]

Вроде должно работать:

Function Equal(lb1,lb2:TListBox):boolean;
label 1;var b:boolean;i,j:integer;
begin
for i:=0 to lb1.items.count-1 do
begin
b:=false;
for j:=0 to lb2.items.count-1 do
if lb1.items[i]=lb2.items[j] then
begin b:=true;goto 1;end;
1:if not b then begin result:=false;exit;end;
end;
result:=true;
end;


 
Just newbie   (2004-01-19 13:03) [6]

Я вот так пробую... Не выходит... :(((

function _IsProcInList(AProcname: String): boolean;
var
I, I2: Integer;
begin
Result := False;
for I := 0 to LB1.Items.Count - 1 do
begin
for I2 := 0 to LB2.Items.Count - 1 do
begin
if LB1.Items.Strings[I] = LB2.Items.Strings[I2] then
begin
Result := True;
Exit;
end
else
Result := False;
end;
end;
end;


 
Just newbie   (2004-01-19 13:03) [7]

Я вот так пробую... Не выходит... :(((

function _IsProcInList(AProcname: String): boolean;
var
I, I2: Integer;
begin
Result := False;
for I := 0 to LB1.Items.Count - 1 do
begin
for I2 := 0 to LB2.Items.Count - 1 do
begin
if LB1.Items.Strings[I] = LB2.Items.Strings[I2] then
begin
Result := True;
Exit;
end
else
Result := False;
end;
end;
end;


 
Oyster ©   (2004-01-19 13:17) [8]

Оно и понятно - если первые элементы ListBox"ов равны, функция выдает True и вылетает. А тебе, как я понимаю, надо, чтобы все строки первого ListBox были во втором.


 
Ломброзо ©   (2004-01-19 13:19) [9]

Sorted := true
Result := ListBox1.Items.Text = ListBox2.Items.Text


 
Just newbie   (2004-01-19 13:30) [10]

> Oyster ©
Конечный результат, который мне нужен - это просто знать какие элементы 1-го ЛистБокса не присутствуют во 2-ом ЛистБоксе, вот и все :)

Это не имеет отношения к спаму!!!


 
Oyster ©   (2004-01-19 13:35) [11]

Тогда так:

Function NotExist(lb1,lb2:TListBox):TStrings;
label 1;var b:boolean;i,j:integer;
begin
result.clear;
for i:=0 to lb1.items.count-1 do
begin
b:=false;
for j:=0 to lb2.items.count-1 do
if lb1.items[i]=lb2.items[j] then
begin b:=true;goto 1;end;
1:if not b then begin Result.add(lb1.items[i]);end;
end;
end;


 
Плохиш_   (2004-01-19 13:37) [12]

>Oyster © (19.01.04 12:55) [5]

Оригинальный способ применения оператора goto :-O)))


 
Eugene1501 ©   (2004-01-19 13:41) [13]

Result:=(ListBox2.Items.IndexOf(ListBox1.Items.Strings[i])<>-1);

проверяет есть ли в ListBox2 итем i из ListBox1.


 
Oyster ©   (2004-01-19 13:42) [14]

А что еще применять? Break неизвестно из которого цикла выйдет.


 
Плохиш_   (2004-01-19 13:45) [15]

>Oyster © (19.01.04 13:42) [14]

Изучать структурное программирование


 
Just newbie   (2004-01-19 13:56) [16]

Не выходит ничего...


 
Anatoly Podgoretsky ©   (2004-01-19 13:57) [17]

Что и IndexOf не работает?


 
Just newbie   (2004-01-19 14:03) [18]

> Anatoly Podgoretsky

Не, с этим как раз работает!!! Урааа!!! Спасибо ОГРОМНОЕ ВСЕМ КТО ПОМОГАЛ МНЕ!!! СПА-А-АСИБО!!! Вы даже представить не можете, как помогли мне!


 
Oyster ©   (2004-01-19 14:07) [19]


> Just newbie (19.01.04 13:30) [10]

Что именно не работает?



Страницы: 1 вся ветка

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

Наверх




Память: 0.5 MB
Время: 0.014 c
3-93351
demon_god
2004-01-05 14:17
2004.01.29
Глючит Select ПОМОГИТЕ ПЛИЗЗЗ!!!


3-93362
WG
2003-12-30 12:13
2004.01.29
Как упорядочить записи в БД по алфавиту ?


1-93482
афвуд
2004-01-14 15:50
2004.01.29
Сишные Указатели на функции и их интерпретация в Дельфи


3-93355
Sergey_Masloff
2003-12-30 21:10
2004.01.29
FIBPlus и выполнение скрипта


6-93597
Andrey V.
2003-11-25 13:30
2004.01.29
Прием-отправка файла