Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление элементов в TComboBox 
V
    Опции темы
gta4kv
Дата 13.11.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



Здравствуйте..

Имеется tComboBox, элементы из него записываются и читаются из файла

Код

  leSN.Items.LoadFromFile('Profile/Profiles.ini');
         и соответственно 
  LeSn.Items.SaveToFile('Profile/Profiles.ini');


Как сделать что бы записывались элементы только те которых нету в ComboBox'e?

 smile 

Заранее благодарен!
PM MAIL   Вверх
Rennigth
Дата 13.11.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



gta4kv, 
Вроде так:
Код

  TStringList(cbxDocTypes.Items).Duplicates := dupIgnore;


Добавлено через 7 минут и 41 секунду
gta4kv, 
Обманул, вот так:
Код

var
  lList: TStringList;
begin
  TStringList(ComboBox1.Items).Duplicates := dupIgnore;
  lList := TStringList.Create;
  try
    lList.LoadFromFile('c:\1.txt');

    ComboBox1.Items.AddStrings(lList);
  finally
    lList.Free;
  end;
//...
end;

 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
OdesitVadim
Дата 13.11.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 9.11.2007
Где: Одесса:)

Репутация: нет
Всего: нет



где то так
Код

var sl:TStringList;
i:integer;
begin
Combobox1.clear;
sl:=TStringList.create;
try
  sl.LoadFromFile('file.txt');
  for i:= 0 to sl.count-1 do
   if Combobox1.items.indexof(sl[i])=-1 then
     combobox1.items.add(sl[i]);
finally
  sl.free;
end;
end;

PM MAIL   Вверх
gta4kv
Дата 13.11.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



Rennigth, 
В твоем примере ошибка :(

OdesitVadim, 

что то как то не так.. или может я чего не правильно делаю...


Код

procedure TForm1.OnICQLogin(Sender: TObject);
var sl:TStringList;
    i:integer;
begin

  btnDisconnect.Enabled:= True;
  mmLog.Lines.Append('Connected...');
  LePass.Clear;
  sl:=TStringList.Create;

  try
  sl.LoadFromFile('Profile/Profiles.ini');
  for i:= 0 to sl.count-1 do
   if LeSN.items.indexof(sl[i])=-1 then
       LeSN.items.add(sl[i]);
    finally
    sl.free;
end;

  LeSn.Items.SaveToFile('Profile/Profiles.ini');

blabla;


Что я сделал не так? 
Направьте на правильный путь :((

Это сообщение отредактировал(а) gta4kv - 13.11.2007, 15:39
PM MAIL   Вверх
Rennigth
Дата 13.11.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Цитата(gta4kv @  13.11.2007,  15:38 Найти цитируемый пост)
Rennigth, 
В твоем примере ошибка :(

Да ну? smile  Какая?


Цитата(gta4kv @  13.11.2007,  15:38 Найти цитируемый пост)
Что я сделал не так? 
Направьте на правильный путь :((

Ну а у тебя какие результаты выполнения этого кода?

В полне возможно у тебя относительный путь к файлу не находиться. Попробуй переделать так: 
Код

  sl.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Profile/Profiles.ini');



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
gta4kv
Дата 13.11.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



Цитата(Rennigth @ 13.11.2007,  15:49)
Цитата(gta4kv @  13.11.2007,  15:38 Найти цитируемый пост)
Rennigth, 
В твоем примере ошибка :(

Да ну? smile  Какая?


Цитата(gta4kv @  13.11.2007,  15:38 Найти цитируемый пост)
Что я сделал не так? 
Направьте на правильный путь :((

Ну а у тебя какие результаты выполнения этого кода?

В полне возможно у тебя относительный путь к файлу не находиться. Попробуй переделать так: 
Код

  sl.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Profile/Profiles.ini');

не, нету ошибки.. криво переписал  smile 

но и результата тоже.. а может я опять не так понял

Код

var   lList: TStringList;
begin
  TStringList(LeSn.Items).Duplicates := dupIgnore;
  lList := TStringList.Create;

  try
    lList.LoadFromFile('Profile/Profiles.ini');
    LeSN.Items.AddStrings(lList); // Он все равно добавляет строку, даже если она уже есть :(
  finally
    lList.Free;
  end;

PM MAIL   Вверх
Rennigth
Дата 13.11.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Цитата(gta4kv @  13.11.2007,  16:22 Найти цитируемый пост)
Он все равно добавляет строку, даже если она уже есть :(

gta4kv, Уверен что строки полностьб идентичные?
Попробуй для проверки выполнить два раза добавление элементов. Т.е. :
Код

var   lList: TStringList;
begin
  TStringList(LeSn.Items).Duplicates := dupIgnore;
  lList := TStringList.Create;

  try
    lList.LoadFromFile('Profile/Profiles.ini');
    LeSN.Items.AddStrings(lList); // Он все равно добавляет строку, даже если она уже есть :(
    LeSN.Items.AddStrings(lList); // Он все равно добавляет строку, даже если она уже есть :(
  finally
    lList.Free;
  end;


Про дублируется ли список?






--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
gta4kv
Дата 13.11.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



Цитата(Rennigth @ 13.11.2007,  16:28)
Цитата(gta4kv @  13.11.2007,  16:22 Найти цитируемый пост)
Он все равно добавляет строку, даже если она уже есть :(

gta4kv, Уверен что строки полностьб идентичные?
Попробуй для проверки выполнить два раза добавление элементов. Т.е. :
Код

var   lList: TStringList;
begin
  TStringList(LeSn.Items).Duplicates := dupIgnore;
  lList := TStringList.Create;

  try
    lList.LoadFromFile('Profile/Profiles.ini');
    LeSN.Items.AddStrings(lList); // Он все равно добавляет строку, даже если она уже есть :(
    LeSN.Items.AddStrings(lList); // Он все равно добавляет строку, даже если она уже есть :(
  finally
    lList.Free;
  end;


Про дублируется ли список?

Добавляется только один раз.. о_О_о
PM MAIL   Вверх
Alexeis
Дата 13.11.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(gta4kv @  13.11.2007,  16:31 Найти цитируемый пост)
 TStringList(LeSn.Items).Duplicates := dupIgnore;

  По ходу это работает только для сортированных списков.

Добавлено через 7 минут и 15 секунд
  А не в справке говориться, что Duplicates учитывается только при добавлении, т.е. работает в методе Add().


--------------------
Vit вечная память.

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

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 13.11.2007, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Цитата(Alexeis @  13.11.2007,  17:21 Найти цитируемый пост)
 А не в справке говориться, что Duplicates учитывается только при добавлении, т.е. работает в методе Add().

Если именно для TStringList, то по сути dubIgnore проверяется в AddObject. И кстати ты прав, только при Sorted.
Код

  if not Sorted then
    Result := FCount
  else
    if Find(S, Result) then
      case Duplicates of
        dupIgnore: Exit;
        dupError: Error(@SDuplicateString, 0);
      end;
  InsertItem(Result, S, AObject);




--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
gta4kv
Дата 13.11.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



Благодаря Rennigth, вопрос был решен. За что ему большое спасибо. Ну и естественно плюс в репу.  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.