Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2010, 00:13   #1
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
Восклицание Проверка на одинаковые записи при добавление в ListBox

Всем здравствуйте! У меня на форме есть ListBox, button, и диалог с выбором папок(multisellect), при нажатии на кнопку появляется диалог с выбором, допустим вы выбрали 5 папок и они добавились в listbox, но вот проблема, если выбрать эти папки снова, они опять появится в listbox, как от исключить добавление в listbox одинаковых записей?
Nice42ru вне форума Ответить с цитированием
Старый 05.08.2010, 00:25   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Посмотри тут
Shouldercannon вне форума Ответить с цитированием
Старый 05.08.2010, 00:37   #3
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Неполучается у меня переделать под выбор папок(
Nice42ru вне форума Ответить с цитированием
Старый 05.08.2010, 00:42   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Посмотри тут
ИМХО гемор
Код:
var
  i: Integer;
begin
  if OpenDialog1.Execute then
  begin
    for i := 0 to OpenDialog1.Files.Count - 1 do
    begin
      if ListBox1.Items.IndexOf(OpenDialog1.Files.Strings[i]) = -1 then
        ListBox1.Items.Add(OpenDialog1.Files.Strings[i]);
    end;
  end;
end;
psycho-coder вне форума Ответить с цитированием
Старый 05.08.2010, 07:50   #5
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

У меня ещё есть процедура которая сканирует выбранную папку на подпапки и добавляет их в ListBox, можете помочь её дороботать, чтобы при добавлении не добавлялись те папки, которые уже добавлены? Заранее благодарен.
Вот процедура сама:

Код:
procedure FindIt(path, ext: string; aListBox: TListBox;
  spaces: boolean = false; level: integer = 0);
var
  SR: TSearchRec;
  s: string;
  i: integer;
begin
if Path <> '' then
  if Path[Length(Path)] <> '\' then Path:=Path+'\';
if FindFirst(Path+Ext, faAnyFile, SR) = 0 then
  begin
    repeat
    if (SR.Attr = faDirectory) then
      if (SR.Name <> '.') and (SR.Name <> '..') then
        begin
        s:='';
        for i:=0 to level-1 do
          s:=s+'    ';
        aListBox.items.Add(path+SR.Name + '\');
        Inc(level);
        if spaces then
          FindIt(Path+sr.Name+'\',ext,aListBox,true,level)
        else
          FindIt(Path+sr.Name+'\',ext,aListBox);
        Dec(level);
        end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;
Nice42ru вне форума Ответить с цитированием
Старый 05.08.2010, 08:20   #6
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

По идее вот так, толком не разбирался, так мельком
Код:
procedure FindIt(path, ext: string; aListBox: TListBox;
  spaces: boolean = false; level: integer = 0);
var
  SR: TSearchRec;
  s: string;
  i: integer;
begin
if Path <> '' then
  if Path[Length(Path)] <> '\' then Path:=Path+'\';
if FindFirst(Path+Ext, faAnyFile, SR) = 0 then
  begin
    repeat
    if (SR.Attr = faDirectory) then
      if (SR.Name <> '.') and (SR.Name <> '..') then
        begin
        s:='';
        for i:=0 to level-1 do
          s:=s+'    ';
        if aListBox.Items.IndexOf(path+SR.Name + '\') = -1 then // <<<<<<<<<<-----
          aListBox.items.Add(path+SR.Name + '\');                       // <<<<<<<<<<-----
        Inc(level);
        if spaces then
          FindIt(Path+sr.Name+'\',ext,aListBox,true,level)
        else
          FindIt(Path+sr.Name+'\',ext,aListBox);
        Dec(level);
        end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;
psycho-coder вне форума Ответить с цитированием
Старый 05.08.2010, 09:31   #7
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Спасибо! Всё прекрасно работает! Неподскажите как c помощью этой процедуры добавлять не только подпапки а ещё ту папку которая выбрана?

Уже по вашему примеру сделал вот такой кусочек кода
Код:
if aListBox.Items.IndexOf(Path + '\') = -1 then
        alistbox.items.Add(path + '\');
но куда не вставляю неработает, подскажите пожалуйсто решение

Последний раз редактировалось Stilet; 05.08.2010 в 11:11.
Nice42ru вне форума Ответить с цитированием
Старый 05.08.2010, 22:42   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Если я Вас правильно понял то как то так. Опять же код не проверял
Код:
procedure FindIt(path, ext: string; aListBox: TListBox;
  spaces: boolean = false; level: integer = 0);
var
  SR: TSearchRec;
  s: string;
  i: integer;
begin
if Path <> '' then
  if Path[Length(Path)] <> '\' then Path:=Path+'\';
if FindFirst(Path+Ext, faAnyFile, SR) = 0 then
  begin
    repeat
    if (SR.Attr = faDirectory) then
      if (SR.Name <> '.') and (SR.Name <> '..') then
        begin
        s:='';
        for i:=0 to level-1 do
          s:=s+'    ';
        if aListBox.Items.IndexOf(path+SR.Name + '\') = -1 then // <<<<<<<<<<-----
          aListBox.items.Add(path+SR.Name + '\');                       // <<<<<<<<<<-----
        if aListBox.Items.IndexOf(Path + '\') = -1 then                 // <<<<<<<<<<----------
          alistbox.items.Add(path + '\');                                       // <<<<<<<<<<----------
        Inc(level);
        if spaces then
          FindIt(Path+sr.Name+'\',ext,aListBox,true,level)
        else
          FindIt(Path+sr.Name+'\',ext,aListBox);
        Dec(level);
        end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;
psycho-coder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление записи в запросе при условии Rekky SQL, базы данных 11 29.07.2010 14:22
Построчное добавление в ListBox nikolai_P Microsoft Office Excel 0 18.08.2009 12:16
Добавление записи в реестр при открытии книги ru3000 Microsoft Office Excel 3 29.07.2009 04:49
Добавление записи через список в связанную таблицу(при связи с Access) megaten БД в Delphi 5 17.05.2009 15:57
Проверка при добавлении записи Tanya2008 БД в Delphi 3 22.04.2009 10:07