Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сохранение введенных чисел в edit в массив, сохранение введенных чисел в edit в масс 
:(
    Опции темы
jenek47
Дата 1.3.2009, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здраствуйте. при написании программы которая дожна сортировать массив столкнулся с проблемой ввода -вывода данных в билдрере.
вообщем юзер должен вводить в Edit числа через запятую, и они должны сохранятся в массив. вывод я хотел сделать через ListBox.
немоглибы подсказать что нужно писать в обработчиках.сколько неискал инфы даже в учебниках так и ненашол. 
ps: сорри за столь ламерский вопрос я недавно начил изучать билдер  smile 
PM MAIL   Вверх
Comm
Дата 1.3.2009, 21:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Допустим на форме есть Edit,Button (по нажатию которой будет всё происходить) и ListBox
Тестовый проект ниже.

Способ номер 1... при условии что цифры  в Edit-e будут однозначными
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString asStr=StringReplace(Edit1->Text,",","",TReplaceFlags()<<rfReplaceAll); //Удаляем из текста все запятые
  for(int i=1;i<=asStr.Length();i++)
  {   ListBox1->Items->Add(asStr[i]);  //Добавляе по одному символу в каждую строку
  }ListBox1->Sorted=true;   //Сортируем

  int *iArray=new int[ListBox1->Count-1];   //Создаём массив
  for(int i=0;i<=ListBox1->Count-1;i++)
  {   try
      {  iArray[i]=StrToInt(ListBox1->Items->Strings[i]);
      }catch(EConvertError&)        //Ошибка преобразования
      {  ShowMessage("Моё имя Не Смиральдо");// Хихихихи
      }
  }delete [] iArray;//Удаляем массив
}

Способ номер 2..
Тут и массив символов и сортировка в одном наборе. Этим способом научил меня  Уважаемый artsb
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TStringList* lst= new TStringList;//
  lst->Delimiter=','; //Устанавливаем разделитель
  lst->DelimitedText=Edit1->Text;// Устанавливаем текст для разбора
  lst->Sort();
  for(int i=0; i<=lst->Count-1;i++)
  { ListBox1->Items->Add(lst->Strings[i].ToInt());// Преобразовываем символ из lst к типу int и добавляем в  ListBox
  }lst->Free();//Удаляем
}


Это сообщение отредактировал(а) Comm - 1.3.2009, 22:34

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  StrReplaceAll.rar 31,36 Kb


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
jenek47
Дата 1.3.2009, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо Comm! щас буду пробовать  smile 
PM MAIL   Вверх
mrbrooks
Дата 2.3.2009, 08:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Цитата(Comm @  1.3.2009,  21:51 Найти цитируемый пост)
 AnsiString asStr=StringReplace(Edit1->Text,",","",TReplaceFlags()<<rfReplaceAll); 

здесь ты удалил запятые и получил слитный текст
Надо поставить все одно какой то разделитель - к примеру '\n'. Тогда строку достаточно просто привести к TStringList.

Добавлено через 4 минуты и 52 секунды
Да кстати если в Edit разделитель запятая, то достаточно 
Код

ListBox1->Items->CommaText = Edit1->Text;


и все. никаких циклов и никакого парсинга строки  smile 
PM MAIL   Вверх
Comm
Дата 2.3.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Надо поставить все одно какой то разделитель - к примеру '\n'. Тогда строку достаточно просто привести к TStringList. 

Попробовал,тоже классный вариант...тогда и массив int-ов не нужен...


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
mrbrooks
Дата 2.3.2009, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Цитата(Comm @  2.3.2009,  09:04 Найти цитируемый пост)
Попробовал,тоже классный вариант...тогда и массив int-ов не нужен... 

с CommaText и StringReplace не нужен smile 
PM MAIL   Вверх
Comm
Дата 2.3.2009, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А вот такое интересное усложнение если разделителем является символ ","
И в Edit1  такой текст    "sdasdasd, sadasdasd",12,225,"hellp ack,-hhh"
=))) как бы Вы решили такую проблему?


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
mrbrooks
Дата 2.3.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Цитата(Comm @  2.3.2009,  09:18 Найти цитируемый пост)
как бы Вы решили такую проблему? 

тут уже конечно без парсинга строки не обойтись. причем StringReplace здесь уже не поможет smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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