реклама на сайте
подробности

 
 
> Делфи. Ищу функцию типа Pos(s1,s2), но со стартом поиска не с 1 символа
GetSmart
сообщение Jan 23 2012, 15:50
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Существует ли такая?
Или как это можно делать малой кровью без искажения оригинала и создания новой субстроки поиска (через Copy например) ?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Jan 23 2012, 16:29
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



StrPos:
Что-то типа такого:
Код
function CountTokens(BigString, SubStr : string) : integer;
Var
  Token : PChar;
begin
  result := 0;
  Token := PChar(BigString);
  Token := StrPos(Token, PChar(SubStr));
  while (Token <> nil) do
  begin
    inc(result);
    Inc(Token);
  end;
end;


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 23 2012, 16:40
Сообщение #3


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(AHTOXA @ Jan 23 2012, 21:29) *
StrPos:
Что-то типа такого:
...


А такая конструкция утечку памяти не создаст?
Код
Token := PChar(BigString);

это вроде создаёт почти копию строки в динамической памяти, а следующая команда затрёт (?) оригинальный адрес.

Кроме того, мне нужно работать в позициях оригинальной строки. То есть нужно эти адреса как-то преобразовывать в позиции.

Сообщение отредактировал GetSmart - Jan 23 2012, 16:40


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 23 2012, 16:52
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(GetSmart @ Jan 23 2012, 22:40) *
А такая конструкция утечку памяти не создаст?
Код
Token := PChar(BigString);

это вроде создаёт почти копию строки в динамической памяти, а следующая команда затрёт (?) оригинальный адрес.

Нет, это просто преобразование типов, никаких копий.
Цитата(GetSmart @ Jan 23 2012, 22:40) *
Кроме того, мне нужно работать в позициях оригинальной строки. То есть нужно эти адреса как-то преобразовывать в позиции.

Элементарно:
Код
  Token := PChar(BigString);
  Start = Token;   // Запомним начало
  Token := StrPos(Token, PChar(SubStr));
  IndexInString := Token - Start + 1;  // Вычислим индекс в строке


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- GetSmart   Делфи. Ищу функцию типа Pos(s1,s2), но со стартом поиска не с 1 символа   Jan 23 2012, 15:50
- - _Артём_   Цитата(GetSmart @ Jan 23 2012, 17:50) Сущ...   Jan 23 2012, 16:11
- - GetSmart   Ну ведь это на 99% такой же код, что и Pos(), толь...   Jan 23 2012, 16:16
- - ARV   Цитата(GetSmart @ Jan 23 2012, 19:50) Сущ...   Jan 23 2012, 16:41
|- - GetSmart   Цитата(ARV @ Jan 23 2012, 21:41) не катит...   Jan 23 2012, 16:44
|- - GetSmart   Цитата(ARV @ Jan 23 2012, 21:41) не катит...   Jan 23 2012, 17:53
|- - AHTOXA   Цитата(GetSmart @ Jan 23 2012, 23:53) А н...   Jan 24 2012, 03:33
- - ARV   а что за версия Delphi у вас такая?! подключат...   Jan 23 2012, 16:46
|- - GetSmart   Цитата(ARV @ Jan 23 2012, 21:46) а что за...   Jan 23 2012, 16:58
|- - _Pasha   Цитата(GetSmart @ Jan 23 2012, 20:58) Дел...   Jan 23 2012, 17:02
|- - AHTOXA   Цитата(GetSmart @ Jan 23 2012, 22:58) Не ...   Jan 23 2012, 17:10
|- - GetSmart   Цитата(AHTOXA @ Jan 23 2012, 22:10) Да не...   Jan 23 2012, 17:23
|- - AHTOXA   Цитата(GetSmart @ Jan 23 2012, 23:23) А о...   Jan 23 2012, 17:32
|- - GetSmart   Цитата(AHTOXA @ Jan 23 2012, 22:32) Вот т...   Jan 25 2012, 07:45
|- - AHTOXA   Цитата(GetSmart @ Jan 25 2012, 13:45) Нед...   Jan 26 2012, 05:32
- - ARV   вы бы еще 3-ю версию юзали! самая ходовая 7-я ...   Jan 23 2012, 16:59
|- - GetSmart   Цитата(ARV @ Jan 23 2012, 21:59) вы бы ещ...   Jan 23 2012, 17:02
- - ARV   не советую. в 7-й версии заметно откорректирована ...   Jan 23 2012, 17:13
|- - AHTOXA   Вот, нашёл, strutils специально для D5: тыц!   Jan 23 2012, 17:15
||- - AHTOXA   Цитата(AHTOXA @ Jan 23 2012, 23:15) Вот, ...   Jan 23 2012, 17:16
|- - GetSmart   Цитата(ARV @ Jan 23 2012, 22:13) не совет...   Jan 23 2012, 17:16
|- - ARV   Цитата(GetSmart @ Jan 23 2012, 21:16) Фун...   Jan 23 2012, 17:25
|- - GetSmart   Цитата(ARV @ Jan 23 2012, 22:25) я вам и ...   Jan 23 2012, 17:27
- - _Ivana   Цитата(GetSmart @ Jan 23 2012, 19:27) Но ...   Jan 23 2012, 17:30
- - sigmaN   ЦитатаПринимаются - Да, Нет, Не знаю я выбираю вар...   Jan 24 2012, 02:19
- - GetSmart   AHTOXA, спасибо большое. Так и вставлю эту функцию...   Jan 24 2012, 05:27
|- - AHTOXA   Цитата(GetSmart @ Jan 24 2012, 11:27) Но ...   Jan 24 2012, 05:33
- - ARV   1. функции, работающие со строками ПАСКАЛЕВСКОГО т...   Jan 24 2012, 06:20
- - _Pasha   Pchar или string? Напомню, если включено {$H+...   Jan 25 2012, 08:19
|- - GetSmart   Цитата(_Pasha @ Jan 25 2012, 13:19) Pchar...   Jan 25 2012, 08:31
|- - _Pasha   Цитата(GetSmart @ Jan 25 2012, 11:31) H+ ...   Jan 25 2012, 08:56
|- - GetSmart   Цитата(_Pasha @ Jan 25 2012, 13:56) Значи...   Jan 25 2012, 09:11
- - sigmaN   А там где-то в настройках компилятора есть что-то ...   Jan 25 2012, 14:02


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 21:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.0141 секунд с 7
ELECTRONIX ©2004-2016