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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2014, 08:46   #1
ilyxaaa
Пользователь
 
Регистрация: 18.02.2014
Сообщений: 18
По умолчанию Не работает условие

На форме имеется stringgrid edit и кнопка.
Так вот по кнопке дробавляется в stringgrid, нужно сделать что бы проверялось на дубли и выдавало сообщение, если дубля нету то добавилось в stringgrid.
Имеется такой код, но он не работает. Посмотрите кто знает.
Код:
procedure TForm1.btn1Click(Sender: TObject);
   var
  R : Integer;
 o: textfile;
 t, i,x:integer;
  begin
    for R := 0 to strngrd1.RowCount-1 do
    if strngrd1.Cells[0, R] = Edt1.Text then  begin
           showmessage('Повтор')
end else     begin

 strngrd1.RowCount:=strngrd1.RowCount+1;
strngrd1.Cells[0,strngrd1.RowCount-2]:=edt1.text;
strngrd1.Cells[1,strngrd1.RowCount-2]:=edt2.text;
                  end;
     end;

Последний раз редактировалось ilyxaaa; 22.09.2014 в 09:09.
ilyxaaa вне форума Ответить с цитированием
Старый 22.09.2014, 09:08   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код влом отформатировать, на него смотреть аналогично влом. И этот код вполне рабочий
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.09.2014, 09:11   #3
ilyxaaa
Пользователь
 
Регистрация: 18.02.2014
Сообщений: 18
По умолчанию

Но он не работает, выдает сообщение и добавляет несколько строк.
ilyxaaa вне форума Ответить с цитированием
Старый 22.09.2014, 09:16   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте так:
Код:
 begin
    R := 0;
    while (R< strngrd1.RowCount) and (strngrd1.Cells[0, R] <> Edt1.Text) do Inc(R);
    if R<strngrd1.RowCount then
           showmessage(' Уже есть такая запись (см. строку ' + IntToStr(R) + ')')
    else begin
      strngrd1.RowCount:=strngrd1.RowCount+1;
      strngrd1.Cells[0,strngrd1.RowCount-1]:=edt1.text;
      strngrd1.Cells[1,strngrd1.RowCount-1]:=edt2.text;
    end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.09.2014, 09:17   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если бы форматировал сам бы ошибку заметил
Код:
  for R := 0 to strngrd1.RowCount-1 do
    if strngrd1.Cells[0, R] = Edt1.Text then
    begin
      showmessage('Повтор');
      Exit;
    end;
  strngrd1.RowCount:=strngrd1.RowCount+1;
  strngrd1.Cells[0,strngrd1.RowCount-2]:=edt1.text;
  strngrd1.Cells[1,strngrd1.RowCount-2]:=edt2.text;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.09.2014, 09:21   #6
ilyxaaa
Пользователь
 
Регистрация: 18.02.2014
Сообщений: 18
По умолчанию

Serge_Bliznykov, Аватар, Спасибо.
Serge_Bliznykov, Ваш код работает как нужно спасибо еще раз.
ilyxaaa вне форума Ответить с цитированием
Старый 22.09.2014, 09:25   #7
ilyxaaa
Пользователь
 
Регистрация: 18.02.2014
Сообщений: 18
По умолчанию

Подскажите еще как написать, что бы в едит если есть пробел после слова, то он удалялся?
ilyxaaa вне форума Ответить с цитированием
Старый 22.09.2014, 09:48   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
что бы в едит если есть пробел после слова, то он удалялся?
может, Trim(edt1.Text) устроит?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.09.2014, 09:53   #9
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Цитата:
Сообщение от ilyxaaa Посмотреть сообщение
Подскажите еще как написать, что бы в едит если есть пробел после слова, то он удалялся?
Код:
r:=length(Edit1.Text);
while Edit1.Text[r]=' ' do
 begin
  Edit1.Text:=copy(Edit1.Text,0,r-1);
  r:=r-1;
 end;
Simply-Art вне форума Ответить с цитированием
Старый 22.09.2014, 10:48   #10
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

Код:
strngrd1.Cells[i,j]:=Trim(edt1.text);
superedward вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает условие поиска Scorpuha БД в Delphi 10 23.02.2014 23:11
Не работает условие. Почему? Dmitriy.G Общие вопросы по Java, Java SE, Kotlin 2 03.11.2012 21:41
if условие работает не коректно jasul PHP 2 27.04.2012 16:14
Не работает условие!!! VintProg Общие вопросы C/C++ 5 12.08.2011 04:40
[запрос к Бд] не работает условие nuevegramodelamor PHP 2 26.04.2011 14:17