Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизФункция сравнение содержимого 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c