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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2010, 12:40   #1
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
Вопрос Распознать значение из строки

У меня в Мемо есть строка:
Цитата:
Koordinat(1000:45000)
Мне нужно из строки вытащить значение переменных
то есть
X=1000
Y=45000
длина значений не известна то есть может быть 1000 может 10000 может вообще 1.
Federal вне форума Ответить с цитированием
Старый 01.08.2010, 12:58   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Смысл, надеюсь, понятен:
Код:
var
i:integer;
s:string;
begin
s:='Koordinat(1000:45000)';
i:=Pos('(', s);
delete(s,1,i);
i:=Pos(':', s);
delete(s,i,length(s));
showmessage('Это первое число '+s);
end;
Можно даже и без лишней переменной:
Код:
var
s:string;
begin
s:='Koordinat(1000:45000)';
delete(s,1,Pos('(', s));
delete(s,Pos(':', s),length(s));
showmessage('Это первое число '+s);
Никогда не знаешь, где тебе повезет... (Фрай)

Последний раз редактировалось DIgorevich; 01.08.2010 в 13:00.
DIgorevich вне форума Ответить с цитированием
Старый 01.08.2010, 13:10   #3
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Вот еще вариант :
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 len: integer;
 cur_sym: string;
 c_x, c_y: string;
 y_bool: boolean;
begin
 len:=0;
 while copy(Memo1.Lines.Strings[len], 1, 9)<>'Koordinat' do
  //Определяем на всякий случай где наша строка
  begin
    inc(len);
  end;

 cur_sym:=Memo1.Lines.Strings[len];
 y_bool:=false;
 len:=11; //Местоположение открытой скобки
 while cur_sym[len]<>')' do
  begin

    if y_bool=true then
     //Y
     begin
       c_y:=c_y+cur_sym[len];
       inc(len);
       Continue;
     end;

    if cur_sym[len]<>':' then
     //X
     begin
       c_x:=c_x+cur_sym[len];
     end
    else
     begin
       y_bool:=true;
     end;

    inc(len);
  end;

 showmessage(c_x+'--'+c_y);
end;
zotox вне форума Ответить с цитированием
Старый 01.08.2010, 13:13   #4
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию

Спасибо помогло
Federal вне форума Ответить с цитированием
Старый 01.08.2010, 13:13   #5
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от zotox Посмотреть сообщение
Вот еще вариант :

Жесть! Это ж сколько памяти программа жрать будет, да и тактов лишних много:
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  s1,s:string;
begin
  readln(s);
  s1:=s;
  delete(s1,1,Pos('(', s1));
  delete(s1,Pos(':', s1),length(s1));
  writeln(s1);

  delete(s,1,Pos(':', s));
  delete(s,Pos(')', s),length(s));
  writeln(s);
  sleep(2000);
end.
Цитата:
Сообщение от Federal Посмотреть сообщение
Спасибо помогло
А кому спасибо хоть? Спасибо говориться, путем нажатия на кнопочку весов, слева от этого сообщения
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 01.08.2010, 14:44   #6
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию

Спасибо всем кто откликнулся на весы нажал- не забыл)))
Согласен c Digorevich способ Zotox слишком тяжок, но тоже способ...
Просто если требуется обработать за раз пару десятков таких строк программка встанет думаю.
Federal вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисления значение выражения, которое передается в функцию в виде строки noobOS Помощь студентам 5 01.07.2010 17:03
Как в текстовом файле распознать символ перевода строки? mzelenyy Общие вопросы C/C++ 4 12.06.2010 11:30
найти среднеарифметическое значение принадлежащих отрезку [-8;+8] элементов (n-i+1)-й строки. Nani Помощь студентам 2 12.06.2009 21:11
Заполнение ячеек, зная номер строки и значение frantic150 Microsoft Office Excel 5 31.05.2009 14:22
с помощью макроса скопировать значение всей строки(не одной ячейки, а нескольких) global Microsoft Office Excel 6 27.11.2008 17:43