Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
1

Строковые типы Pos и Copy

10.06.2010, 12:37. Просмотров 1805. Ответов 18
Метки нет (Все метки)

Допустим есть тест
В нем есть набор букв цифр знаков и пробелов, допустим !HKL C&; S&(LKJ22Q текст может меняться по длине. Задача найти этот текст и скопировать!
Delphi
1
2
3
4
var qwe : String;
begin
   qwe := Copy({Текст}, Pos('допистим', {Текст})+10, {Теперь как правильно определить его днину?});
end;
З.Ы. Не знал как подробнее разжевать))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2010, 12:37
Ответы с готовыми решениями:

Copy Pos
как загрузить в переменные строки вида ip: port; , т.е например S:=ip, i:=port.

Pos,Copy
Пример страницы <a href="http://cсылка ..1"> ........ <a href="http://cсылка ..2">......

copy, pos
На входе имеем: RICINT10-7295-TEST Т.е. kod1 это 7295 Генерируется так: randomize;...

Copy pos
Здравствуйте в переменной html типа string есть такой кусок ...

18
148 / 148 / 3
Регистрация: 05.05.2010
Сообщений: 569
10.06.2010, 12:47 2
Lenght(Текст)
Если при начале поиска {Текст} известен, то зачем его еще копировать куда-то через Copy?

Добавлено через 4 минуты
Или я чего-то не понимаю...
0
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
10.06.2010, 13:03  [ТС] 3
Lenght(Текст)
Если при начале поиска {Текст} известен, то зачем его еще копировать куда-то через Copy?
Размер и содержимое строчки !HKL C&; S&(LKJ22Q не известно , его надо найти и скопировать

Также и размер {Текста} не известно

В нем есть набор букв цифр знаков и пробелов, допустим !HKL C&; S&(LKJ22Q текст может меняться по длине. Задача найти этот набор знаков и скопировать!
0
148 / 148 / 3
Регистрация: 05.05.2010
Сообщений: 569
10.06.2010, 13:17 4
Дак если !HKL C&; S&(LKJ22Q известно, то зачем его искать?

Добавлено через 21 секунду
Вот я про что.

Добавлено через 1 минуту
Тьфу.

Добавлено через 29 секунд
Блиин... ну запутал...

Добавлено через 1 минуту
Т.е. не известно где искать, что искать, но найти надо? Такого быть не может.

Добавлено через 8 минут
Если с другой стороны зайти: откуда в примере первого поста берется
Цитата Сообщение от Alest Посмотреть сообщение
'допистим'
?

Добавлено через 29 секунд
Не случайным же образом генерируется?
0
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
10.06.2010, 13:18  [ТС] 5
Delphi
1
2
3
4
5
6
var qwe, stroka : String;
begin
   stroka := Edit1.Text;
   qwe := Copy(stroka, Pos('допистим', stroka)+10, {Теперь как правильно определить его днину?});
   memo1.Lines.Add(qwe);
end;
Pos('допистим', stroka)+10 - сдесь я определяю начало строки , как определить конец?
0
148 / 148 / 3
Регистрация: 05.05.2010
Сообщений: 569
10.06.2010, 13:27 6
Ты явно не с той стороны заходишь. Или я тупой. Я правильно понял надо из, например
Код
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Persist Security Info=False'
получить имя базы данных?

Добавлено через 1 минуту
db.mdb в данным случае.
0
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
10.06.2010, 13:32  [ТС] 7
Все намного проще)) надо из Текста достать строчку , эта строчка имеет свойство менять размер и содержимое
0
148 / 148 / 3
Регистрация: 05.05.2010
Сообщений: 569
10.06.2010, 13:36 8
Значит всё намного сложнее

Добавлено через 2 минуты
У тебя вот вопрос: Как найти длину? А как возможно найти позицию того, чего не знаешь?

Добавлено через 44 секунды
Т.е. нету ни позиции начальной, ни содержимого и соответственно длины...
0
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
10.06.2010, 13:36  [ТС] 9
я написал часть кода, осталось через тип Pos определить номер конечного знака и вычесть из него номер начального
0
148 / 148 / 3
Регистрация: 05.05.2010
Сообщений: 569
10.06.2010, 13:41 10
Дак а зачем искать то, что написано между знаками, если надо найти сами знаки и вырезать то, что между ними?

Добавлено через 1 минуту
В 6ом посту тоже имя базы вычисляется как строка между "знаками" DataSource= и ;

Добавлено через 1 минуту
Только не надо говорить, что содержимое "знаков" тоже не известно
0
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
10.06.2010, 13:47  [ТС] 11
В Copy нужно вернуть длину строчки !

Не по теме:

я сейчас не с компа, пример привести не получится

0
148 / 148 / 3
Регистрация: 05.05.2010
Сообщений: 569
10.06.2010, 13:57 12
Сначала надо найти где эта строчка расположена. Для этого надо найти где расположен начальный и конечный знак. Таким образом узнаем длину строки. И только потом вырезаем.
Больше ни одного ответа не сделаю...
0
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
10.06.2010, 14:25  [ТС] 13
Обьясню конкретней на коде, видимо я в начале не правильно сформулировал вопрос -
Delphi
1
2
3
4
5
6
var qwe, stroka : String;
begin
   stroka := 'В нем есть набор букв цифр знаков и пробелов, допустим [B]XXX XXX XXX[/B] текст может меняться по длине. Задача найти этот текст и скопировать!';
   qwe := Copy(stroka, Pos('допистим', stroka)+10, {Теперь определяем днину! Как? Размеры и содержимое [B]XXX XXX XXX[/B] не известно});
   memo1.Lines.Add(qwe);
end;
0
148 / 148 / 3
Регистрация: 05.05.2010
Сообщений: 569
10.06.2010, 14:36 14
Я же выше написал: ищем где "допустим " и " текст может". И вырезаем строку с позиции "допустим "+ длина("допустим ") кусок строки длиной позиция(" текст может")-позиция("допустим ")-длина("допустим ").

Добавлено через 3 минуты
Или опять не так?
1
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
10.06.2010, 15:17  [ТС] 15
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button1Click(Sender: TObject);
var
  qwe, stroka : String;
begin
   stroka := 'В нем есть набор букв цифр знаков и пробелов, допустим XXX XXX XXX текст может меняться по длине. Задача найти этот текст и скопировать!';
   qwe := Copy(stroka, Pos('допустим', stroka)+9, PosEx('текст может',stroka,Pos('может быт' ,stroka))-Pos('допустим', stroka)-9);
   memo1.Lines.Add(qwe);
end;
Работает вроде

Добавлено через 17 минут
Ты явно не с той стороны заходишь. Или я тупой. Я правильно понял надо из, например
Delphi
1
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Persist Security Info=False'
получить имя базы данных?
и не каких баз данных не надо))
я написал часть кода, осталось через тип Pos определить номер конечного знака и вычесть из него номер начального
Все правильно, работает, спасибо!!!

Извиняюсь за грамматические ошибки которые не замечал)
0
1 / 1 / 0
Регистрация: 10.06.2010
Сообщений: 4
10.06.2010, 15:36 16
Можно сделать и по-другому
Delphi
1
2
if pos('{Твой текст}',stroka)>0 then
qwe :='{Твой текст}'
0
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
10.06.2010, 16:04  [ТС] 17
detnet, Можно сделать и по-другому
Delphi
1
2
if pos('{Твой текст}',stroka)>0 then
qwe :='{Твой текст}'
Поподробщее пожалуста??
{Твой текст} - не известен
0
148 / 148 / 3
Регистрация: 05.05.2010
Сообщений: 569
10.06.2010, 17:42 18
Alest, со строкой подключения - это пример. Имя БД тоже может быть любое. Т.е. получение имени файла БД из строки подключения - частный случай твоей задачи. Только для объяснения этого потребовалось еще полторы страницы комментов.
1
12 / 12 / 5
Регистрация: 03.06.2010
Сообщений: 84
11.06.2010, 09:51  [ТС] 19
harmless, Спасибо! Просто я первый раз с этим сталкиваюсь на практике


detnet, Можно сделать и по-другому
Delphi
1
2
if pos('{Твой текст}',stroka)>0 then
qwe :='{Твой текст}'
это как?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2010, 09:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

copy pos
Здравствуйте подскажите пожалуйста что не так я тут делаю procedure TForm1.Button1Click(Sender:...

Pos copy memo
Ребята плис знаю что много примеров но уже башка не варит совсем.. помогите сделать из...

Объясните функции Pos() и Copy()
Я чуть-чуть не вогнал функции Pos(), Copy(). Объясните, пожалуйста, человеческим языком.

pos, copy для указания переменных
Нужна помощь, нужно сделать чтоб в этом коде <img class="aligncenter size-full wp-image-6154"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.