Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.03.2012, 20:53
montukXD montukXD вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 7
Репутация: 10
Вопрос Вырезать часть строки

Доброго времени суток.
Подскажите новичку.
В ini файле есть строка: VXZC$80699453440 VCZX2$27412221952 ZXCV3$53287231488
Что нужно сделать чтоб часть строки выводилась в label от $ до пробела, затем от 2$ до второго " " и т.д. цифр между символами может быть разное количество. Кстати после символов будут только цифры, думаю это как то меняет дело
Чтение из ini файла и вывод я примерно понимаю как сделать, но если что то посоветуете буду признателен.

Следующий способ не подходит т.к. неизвестно кол-во цифр:

Код:
procedure TForm2.Button5Click(Sender: TObject);
var s,word: string;
begin
  s:=edit1.text;
  word:=Copy(s,1,Pos('2$',s)-2);
  ShowMessage('Свободно: '+word);
end;
Ответить с цитированием
  #2  
Старый 26.03.2012, 21:03
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

PosEx. Ищем $, ищем пробел, копируем, ищем $ после найденной позиции, ищем пробел после найденной, копируем, ...
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 26.03.2012, 21:07
montukXD montukXD вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
PosEx. Ищем $, ищем пробел, копируем, ищем $ после найденной позиции, ищем пробел после найденной, копируем, ...
смысл то я понимаю, я бы хотел попросить хотябы приблизительно написать код как будет смотреться я совсем новичок
Ответить с цитированием
  #4  
Старый 26.03.2012, 21:43
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Код:
procedure TForm2.Button5Click(Sender: TObject);
var
  St, St1 : String;
  I, J : Integer;
begin
  I := PosEx(Edit1.Text, '2$', 0);
  J := PosEx(Edit1.Text, ' ', 0);
  St := Copy(Edit1.Text, I, J - 1);

  I := PosEx(Edit1.Text, '2$', J);
  J := PosEx(Edit1.Text, ' ', I);
  St1 := Copy(Edit1.Text, I, J - 1);
end;
Примерно так, если не соврал.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 26.03.2012, 21:57
montukXD montukXD вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Код:
procedure TForm2.Button5Click(Sender: TObject);
var
  St, St1 : String;
  I, J : Integer;
begin
  I := PosEx(Edit1.Text, '2$', 0);
  J := PosEx(Edit1.Text, ' ', 0);
  St := Copy(Edit1.Text, I, J - 1);

  I := PosEx(Edit1.Text, '2$', J);
  J := PosEx(Edit1.Text, ' ', I);
  St1 := Copy(Edit1.Text, I, J - 1);
end;
Примерно так, если не соврал.

Ругается на PosEx Undeclared identifier
как и где его описать?
Ответить с цитированием
  #6  
Старый 26.03.2012, 22:05
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Добавить в uses, StrUtils.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 26.03.2012, 22:15
montukXD montukXD вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Добавить в uses, StrUtils.
увы вывожу st и st1 в эдиты, но они пусты :/
Ответить с цитированием
  #8  
Старый 26.03.2012, 22:17
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Это локальные!!! переменные, объяви их глобально.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
montukXD (26.03.2012)
  #9  
Старый 26.03.2012, 22:19
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Код:
procedure TForm2.Button5Click(Sender: TObject);
var
  St, St1 : String;
  I, J : Integer;
begin
  I := PosEx('$', Edit1.Text, 0);
  J := PosEx(' ', Edit1.Text, 0);
  St := Copy(Edit1.Text, I, J - I);

  I := PosEx('$', Edit1.Text, J);
  J := PosEx(' ', Edit1.Text, I);
  St1 := Copy(Edit1.Text, I, J - I);
end;
Поскольку в Copy вторым параметром количество символов.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 26.03.2012 в 22:46.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
montukXD (26.03.2012)
  #10  
Старый 26.03.2012, 22:20
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Используй pos, copy и delete делов то.
Нашел позицию(pos) "$", записал в переменную, удалил(delete) все до нее, скопировал(copy) все до пробела и дальше по кругу.
Ответить с цитированием
Этот пользователь сказал Спасибо m1sclick за это полезное сообщение:
montukXD (26.03.2012)
  #11  
Старый 26.03.2012, 22:25
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Сообщение от m1sclick
Используй pos, copy и delete делов то.
Можно и так. Но в теории PosEx в несколько раз быстрее: не надо кромсать строку, а делфа при удалении куска строки создает новую и копирует туда содержимое старой за исключением ненужной части. PosEx же по идеи прибавляет к началу строки номер символа и начинает искать оттуда.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
montukXD (26.03.2012)
  #12  
Старый 26.03.2012, 22:29
montukXD montukXD вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 7
Репутация: 10
По умолчанию

Всем спасибо, все ок. оказалось все проще чем я думал
Ответить с цитированием
  #13  
Старый 26.03.2012, 22:30
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Всё-таки я соврал, а ведь предупреждал ведь.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #14  
Старый 26.03.2012, 22:32
montukXD montukXD вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Всё-таки я соврал, а ведь предупреждал ведь.
попытка не пытка
Ответить с цитированием
  #15  
Старый 26.03.2012, 22:41
montukXD montukXD вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 7
Репутация: 10
По умолчанию

procedure TForm2.Button5Click(Sender: TObject);
var
KP, KS : Integer;
S, Word : string;
begin
s := edit1.text;
KP := Pos('$', S);
KS := Pos(' ', S);
while KP > 0 do begin
Word := Copy(S, KP+1, KS-KP-1);
ShowMessage(Word);
Inc(KP); KP := PosEx('$', S, KP);
Inc(KS); KS := PosEx(' ', S, KS);
if KS = 0 then KS := Length(S)+1;
end;
end;

вот еще вариант
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:01.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025