Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.10.2012, 12:44
arach arach вне форума
Прохожий
 
Регистрация: 17.06.2010
Сообщения: 39
Репутация: 10
Восклицание Найти определенную строку в стринглисте

Задача: Есть переменная типа integer. В стринглисте находится много строк.
Нужно найти эту переменную в стринглисте. Если есть - вывести сообщение, что уже есть. Если нет - добавить в стринглист. Что я пробовал:
Код:
function CheckNumb(Numb: integer): String;
var
i: Integer;
Begin
 for i := 0 to database.Count - 1 do begin
 if Numb = StrToInt(database[i]) then
 Continue Else
 Database.Add(IntToStr(Numb)); 
 break; 
 end;
end;
Админ: Пользуемся тегами! При рецедиве последуют санкции!

Разумеется код кривой, и строки добавляются по нескольку раз в стринглист. В первый раз добавляется нормально. Во второй раз, если попробовать добавить туже переменную, она опять добавляется. Помогите

Последний раз редактировалось Admin, 06.10.2012 в 15:04.
Ответить с цитированием
  #2  
Старый 06.10.2012, 12:52
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от arach
Задача: Есть переменная типа integer. В стринглисте находится много строк.
Нужно найти эту переменную в стринглисте. Если есть - вывести сообщение, что уже есть. Если нет - добавить в стринглист.
Код:
function CheckNumb(Numb: Integer): String;
var
  i: Integer;
begin
  for i := 0 to database.Count - 1 do
  begin
    if Numb = StrToInt(database[i]) then
    begin
      ShowMessageFmt('Число %d уже есть в списке', [Numb]);
      Exit;
    end;
  end;
  database.Add(IntToStr(Numb));
end;
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
arach (06.10.2012)
  #3  
Старый 06.10.2012, 13:05
arach arach вне форума
Прохожий
 
Регистрация: 17.06.2010
Сообщения: 39
Репутация: 10
По умолчанию

Огромное спасибо
Ответить с цитированием
  #4  
Старый 06.10.2012, 16:54
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

TStringList.IndexOf сделает за вас работу по поиску элемента в списке.

Цитата:
Метод IndexOf
Получает индекс позиции строки в списке соответствующей данной строке. Если строка не найдена, то возвращается -1.

и все сведется к
Код:
if DataBase.IndexOf(IntToStr(Numb)) = -1
then DataBase.Add(IntToStr(Numb))
else ShowMessage(.....);
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.

Последний раз редактировалось dr. F.I.N., 06.10.2012 в 17:48.
Ответить с цитированием
  #5  
Старый 06.10.2012, 20:19
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от dr. F.I.N.
TStringList.IndexOf сделает за вас работу по поиску элемента в списке.
Да, я тоже сначала хотел предложить через IndexOf, но в списке могут оказаться такие "числа": "+5" или "015" или "-025" или даже "'$bcd'", которые через IndexOf(IntToStr(Numb)) найти не получится.
Ответить с цитированием
  #6  
Старый 06.10.2012, 20:47
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Цитата:
Сообщение от poli-smen
Да, я тоже сначала хотел предложить через IndexOf, но в списке могут оказаться такие "числа": "+5" или "015" или "-025" или даже "'$bcd'", которые через IndexOf(IntToStr(Numb)) найти не получится.
Посмотри что пишет ТС в первом топике. По какому принципу образуется список. Отрицательные числа ничем не помешают, а хека там по определению нет. Да и сам вопрос стоит о том, как найти, а не как сравнить разные системы счисления. Та могут оказатсья и восмиричные числа и что угодно....хоть просто неконвертируемые строки.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:33.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025