Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-93625
Карелин Артем
2004-01-08 15:32
2004.01.29
Басик-> Дельфи или Басик-> Си. Где найти прогу для перевода?


1-93516
(Yorok)
2004-01-18 15:22
2004.01.29
Нужна функция, которая работает быстрее SetFileAttributes.


14-93666
BorisMor
2004-01-07 21:34
2004.01.29
Немного политики


14-93664
Fanis
2004-01-07 22:55
2004.01.29
Связь таблиц


3-93339
Gosha
2004-01-04 18:52
2004.01.29
Поле типа





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский