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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2010, 13:26   #1
FennecFox
 
Регистрация: 10.08.2010
Сообщений: 5
По умолчанию Заполнение массива через Edit

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

В общем, ситуация: есть массив из целочисленных элементов, который заполняется через Edit. Количество элементов изначально неизвестно (сколько введу - столько и будет), поэтому массив динамический, вот только перед заполнением все равно нужно установить его длину... Решаю вот так:


Код:
//Устанавливаю начальную длину массива равную длине Edit (в котором    есть пробелы)
  SetLength (a, Length (Input.Text));

  Stream:= TMemoryStream.Create;
  Stream.WriteBuffer(Input.Text[1], Length(Input.Text));
  Stream.Position:= 0;

  i:= 0;

  //Заполняю массив
  with TParser.Create(Stream) do...
    while Token <> toEof do
    begin
      a[i]:= StrToInt (TokenString);
      inc (i);
      NextToken;
    end;

  Stream.Free;

  //...и устанавливаю новую длину массива, уже с учетом удаленных пробелов
  SetLength (a, Length (Input.Text) - (Length (Input.Text) - i));
Все работает, но ощущение будто иду из Сибири в Китай через Москву... может быть есть другие способы? Заранее спасибо

Последний раз редактировалось FennecFox; 10.08.2010 в 13:29.
FennecFox вне форума Ответить с цитированием
Старый 10.08.2010, 13:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм...
Код:
  with TParser.Create(Stream) do...
    while Token <> toEof do
    begin
      SetLength (a, Length (a)+1);
      a[high(a)]:= StrToInt (TokenString);
      NextToken;
    end;
Подойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2010, 15:28   #3
FennecFox
 
Регистрация: 10.08.2010
Сообщений: 5
По умолчанию

Да, ваш вариант кажется логичнее Спасибо.
FennecFox вне форума Ответить с цитированием
Старый 10.08.2010, 15:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
логичнее
учти он более медленный чем твой вариант, хотя и выглядит короче.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2010, 11:35   #5
FennecFox
 
Регистрация: 10.08.2010
Сообщений: 5
По умолчанию

Медленный потому, что длина устанавливается в цикле? Ничего, у меня массив небольшой, а на будущее учту...
FennecFox вне форума Ответить с цитированием
Старый 11.08.2010, 11:39   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а на будущее учту
На том и порешили...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2010, 19:13   #7
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

FennecFox так что ты в массив хочешь добавить, я так и не понял?
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 12.08.2010, 10:39   #8
FennecFox
 
Регистрация: 10.08.2010
Сообщений: 5
По умолчанию

Цитата:
так что ты в массив хочешь добавить
целые числа, которые я ввожу через Edit
FennecFox вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение массива siemdi Общие вопросы C/C++ 12 27.05.2010 22:21
Заполнение трехмерного массива General_vrn Общие вопросы Delphi 2 03.05.2010 16:59
Заполнение массива. Небесный Общие вопросы C/C++ 3 01.09.2009 01:39
При onselect на combobox вып-ие Query1 и Query2, и заполнение Edit Абдуллаев Рустам БД в Delphi 3 08.05.2009 14:59
Заполнение StringGrid из Edit Инна Помощь студентам 13 03.05.2007 13:44