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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2012, 22:28   #1
Van-89
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 23
По умолчанию Чтение переменных из составной переменной

Здравствуйте... помогите плиз... или намекните как сделать)
Имеется текстовая переменная t:='100|465|2|1|' и в ней записаны первые две цифры координаты объекта... а вторые две диагональное движение объекта...
проблема в том что мне надо вытащить значения из этой переменной в 4 отдельные переменные параметров объекта...
Нужно сделать так или мне придется заводить 4 отдельных массива...

Описал всё в вкратце что бы за меня ничего не сделали))

Последний раз редактировалось Van-89; 06.11.2012 в 22:34.
Van-89 вне форума Ответить с цитированием
Старый 06.11.2012, 22:44   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

А один массив размерностью [1..4] чем не устраивает?

Код:
var params: array [1..4] of integer;
    t, tt: string;
    i, code: integer;
begin
  i:=1;
  While pos('|',t)<>0 do begin
    tt:=copy(t,1,pos('|',t)-1);
    val(tt,params[i],code);
    delete(t,1,pos('|',t));
    inc(i);
  end;
end.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 06.11.2012 в 22:47.
Sciv вне форума Ответить с цитированием
Старый 07.11.2012, 01:42   #3
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

можно по красивше сделать

Код:
type
  param = record
    x: integer;
    y: integer;
    mv1: integer;
    mv2: integer;
  end;

var
  t: param;
  i, err: integer;
  str: string;

begin
  str := '100|465|2|1|';
  with t do
  begin
    i := pos('|', str);
    val(copy(str, 1, pos('|', str) - 1), x, err);
    delete(str, 1, i);
    i := pos('|', str);
    val(copy(str, 1, pos('|', str) - 1), y, err);
    delete(str, 1, i);
    i := pos('|', str);
    val(copy(str, 1, pos('|', str) - 1), mv1, err);
    delete(str, 1, i);
    i := pos('|', str);
    val(copy(str, 1, pos('|', str) - 1), mv2, err);    
  end; 
  with t do
    writeln(x, ' ', y, ' ', mv1, ' ', mv2);
end.
в случае если объектов будет несколько

Код:
var
arr:array [1..N] of param;
....

Последний раз редактировалось unbanned; 07.11.2012 в 01:46.
unbanned вне форума Ответить с цитированием
Старый 07.11.2012, 11:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предложу классику: http://www.programmersforum.ru/showt...369#post398369
Только вместо пробела в условие поставить символ |
И будет сплитовка строки в массив, а там уже из массива выбирать как хочется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2012, 13:55   #5
Van-89
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 23
По умолчанию

действительно можно было использовать двухмерный массив...
но я хотел попробовать сделать подругому...

спасибо за помощь! :-) все сделал ))
Van-89 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составной документ на HTML plgrm44 HTML и CSS 6 30.05.2012 21:01
Составной оператор iquaker Паскаль, Turbo Pascal, PascalABC.NET 1 20.03.2012 10:45
чтение переменных из файла Игорь Кулакевич Помощь студентам 11 26.09.2011 19:03
составной ключ sergei64_89 Помощь студентам 2 22.05.2010 13:26
Составной индекс в ClientDataSet JOHNKZ1 БД в Delphi 0 23.02.2009 18:44