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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверка двух строк на равенство, не работает! 
V
    Опции темы
WERITAS
Дата 2.12.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

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



На форме кнопка, поле Эдит, Комбобокс. Когда я пишу в Эдит и нажимаю кнопку, мне нужно, чтобы в Комбобоке отображались только различные строки  (а я могу написать и две одинаковые подряд). Обновление есть (и работает). Сделал вот такой вот код:
Код

for i:=0 to (Form6.ComboBox1.Items.Count-1) do
      if (Form6.ComboBox1.Items.Strings[i] <> Form5.Edit1.Text) then
            Form6.ComboBox1.Items.Add(Form5.Edit1.Text);
 
Но КомбоБокс все равно пуст... Делаю вот так вот:
Код

//for i:=0 to (Form6.ComboBox1.Items.Count-1) do
  //    if (Form6.ComboBox1.Items.Strings[i] <> Form5.Edit1.Text) then
            Form6.ComboBox1.Items.Add(Form5.Edit1.Text);

в Комбобокс все строки добавляются. Значит не верно работает цикл... Почему?  smile  smile  smile 


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Guedda
Дата 2.12.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


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

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



Наверное, потому что ты значение  Edit берешь не из Form6, а из Form5


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
WERITAS
Дата 2.12.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

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



Ну и как быть?... У мя разные формы


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Sunvas
Дата 2.12.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Цитата(WERITAS @  2.12.2006,  18:41 Найти цитируемый пост)
код Pascal/Delphi    
Код


for i:=0 to (Form6.ComboBox1.Items.Count-1) do    
      if (Form6.ComboBox1.Items.Strings[i] <> Form5.Edit1.Text) then    
            Form6.ComboBox1.Items.Add(Form5.Edit1.Text);    

 
Но КомбоБокс все равно пуст... Делаю вот так вот:

Конечно, ведь записей 0. А фор от 0 до -1 не идет. smile 

Цитата(WERITAS @  2.12.2006,  18:41 Найти цитируемый пост)
в Комбобокс все строки добавляются. Значит не верно работает цикл... Почему?

Потому что алигорим корявый!
Вот тебе нормальный алгоритм:
Код

var i:word;
can:boolean;
begin
can:=true;
for i:=0 to combobox1.Items.Count-1 do
  if combobox1.Items.Strings[i]=edit1.Text then
    begin
    can:=false;
    break;
    end;
if can then combobox1.Items.Add(edit1.Text);


Добавлено @ 19:24 
Естественно, подставишь сюда свои form6 и form5  smile 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Matematik
Дата 2.12.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А может такое заработает? просто не уверен что у CB есть IndexOf
Код

if combobox1.Items.IndexOf(Edit1.Text)=-1 then
  combobox1.Items.Add();

PM MAIL WWW ICQ   Вверх
Sunvas
Дата 2.12.2006, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Matematik, да. Есть такое. Это оптимальное решение.
Но, возможно автору интересно как сделать это при помощи фор-а...

Это сообщение отредактировал(а) Sunvas - 2.12.2006, 19:46


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
WERITAS
Дата 2.12.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

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



Sunvas 
Интересный финт ушами : )
А можно это как-нибудь в процедуру зашить? А то мне это надо 4 раза вызвать в обработчике. Я попытался так, но не сработало:
Код

procedure CheckCombo(Combo:TComboBox; Ed:TEdit);
var i:word; can:boolean;
begin
  can:=true;
  for i:=0 to Combo.Items.Count-1 do
     if Combo.Items.Strings[i]=Ed.Text then
       begin can:=false; break; end;
  if can then Combo.Items.Add(Ed.Text);
end;

...........................................

CheckCombo(Form6.ComboBox1;Form5.Edit1);  // Не хочет работать!! :-(






--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Matematik
Дата 2.12.2006, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



С первого взгляда нормальный код. Ошибка какая?
Код

CheckCombo(Form6.ComboBox1, Form5.Edit1);

PM MAIL WWW ICQ   Вверх
WERITAS
Дата 2.12.2006, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

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



Matematik 
Цитата
Ошибка какая?

Not enought actual parameters

... Красивое решение с IndexOf! :-) Ни разу этим методом не пользовался )



--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Sunvas
Дата 2.12.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Цитата(WERITAS @  2.12.2006,  20:12 Найти цитируемый пост)
Код

CheckCombo(Form6.ComboBox1;Form5.Edit1);
 

Так ты неправильно написал.
Надо так
Код

CheckCombo(Form6.ComboBox1,Form5.Edit1);



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
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.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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