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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2010, 14:34   #1
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию из Memo в массив

такая вот проблемка.. у меня есть Memo, в который загружается из файла последовательность чисел через пробел.
например 4 5 6 7 8 9 0.
как мне записать эту последовательность из Memo в одномерный массив типа Integer? помогите пожалуйста
Brabus вне форума Ответить с цитированием
Старый 26.06.2010, 15:02   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Пропарсить строку нужно. Если это делфи, то, к сожалению, стандартного парсера я там не знаю.
Да и на делфе писать лень, вот словесный код:
объявить переменную типа string, пусть будет стр
присвоить ей значение строки из мемо
позиция = 0
и от 1 до конец строки
начало
если пробел
то если позиция <> и
начало
число в массив = подстрока от позиция до и-1
позиция = и+1
конец
конец
mMAg вне форума Ответить с цитированием
Старый 26.06.2010, 15:31   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

язык программирования то какой? Дельфи?
Массив статический или динамический?
числа разделяются только пробелами или могут быть другие разделители?
Строчек в мемо одна?
Числа только целые?


пример кода на Дельфи.
массив динамический. В строке допускаются Только целые числа разделённые любым количеством пробелов (если это не так — вылезет ошибка!)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  A : array of integer;
  i, Cnt : integer;
  s, s0  : string;
begin
  s := Trim(Memo1.Lines[0])+' ';

  // посчитаем, сколько чисел в строчке
  Cnt := 0;
  while Pos(' ', s)>0 do begin
    Inc(Cnt);
    Delete(s,1,Pos(' ',s));

    {удалим дополнительные пробелы
      если пробелов между числами несколько}
    while (length(s)>1)
       and (s[1]=' ') do Delete(s,1,1);
  end;

  SetLength(A, Cnt);

  // запишем числа в массив
  s := Trim(Memo1.Lines[0])+' ';
  i := 0;
  while Pos(' ', s)>0 do begin
    s0 := Copy(s,1, Pos(' ',s)-1);
    A[i] := StrToInt(s0);
    inc(i);
    Delete(s,1,Pos(' ',s));
    while (length(s)>1)
       and (s[1]=' ') do Delete(s,1,1);
  end;


  // выведем массив (для проверки, в Edit1
  Edit1.Text := '';
  for i:=Low(A) to High(A) do
    Edit1.Text :=
       Edit1.Text + IntToStr(A[i])+' ; ';
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.06.2010, 15:41   #4
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию

Serge_Bliznykov, Вы прям экстрасенс спасибо Вам огромное
Brabus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из memo в двумерный массив Virtualex Помощь студентам 6 21.10.2009 23:01
из memo в массив RAVAL)) Общие вопросы Delphi 4 18.05.2009 10:19
Массив символов и Memo (*_*) Общие вопросы Delphi 4 09.05.2009 10:39
Перевод из Memo по английскому в Memo по русскому Sanek777 Общие вопросы Delphi 5 26.09.2008 00:17
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo Artem Компоненты Delphi 3 07.09.2007 13:40