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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.06.2009, 16:26
EraM EraM вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 8
Репутация: 10
По умолчанию Функция Pos

Доброго времени суток.

Delphi 2009.
Ещё вопросик. Функция StrPos возвращает указатель на первое найденное значение, а как получить не указатель, а число, например такая-то буква встречается на 5 позиции. Или как перевести указатель в число.

Последний раз редактировалось EraM, 02.06.2009 в 21:01.
Ответить с цитированием
  #2  
Старый 02.06.2009, 16:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если я правильно понимаю, то функция поз возвращает как раз индекс начала вхождения, т.е. фактически позицию, если рассматривать строку как массив...
Ответить с цитированием
  #3  
Старый 02.06.2009, 16:50
EraM EraM вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 8
Репутация: 10
По умолчанию

Как тогда этот индекс перевести в число.
Потому что если вывести например showmessage(pos); где pos результат функции strpos то он выдаёт просто часть слова за найденным символом.
Ответить с цитированием
  #4  
Старый 02.06.2009, 18:54
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

Функция Pos как уже было сказано возвращает именно целочисленное значение. Если не найдено то 0.

showmessage(pos); конечно будет ошибка, так как ShowMessage требует в качестве параметра строку, нужно число преобразовать в строку, воспользовавшись например функцией IntToStr();

Пример:
Код:
ShowMessage(IntToStr(pos('ек', 'Текст')));
Должен сказать 2.
Ответить с цитированием
  #5  
Старый 02.06.2009, 21:05
EraM EraM вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от :S.p.a.m.
showmessage(pos); конечно будет ошибка,

Вы что-то не дочитали в теме, выше написано, что если сделать showmessage(pos) после pos := strpos(...); и посмотреть что она вернёт, то это будет срока, а не число и showmessage ни на что не ругается, а просто выдаёт на экран строчку.
Ответить с цитированием
  #6  
Старый 02.06.2009, 21:11
EraM EraM вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 8
Репутация: 10
По умолчанию

По-моему я сам так удачно ошибся, в название темы написав pos, хотя имел ввиду(использую) strpos. Щас заменю на pos - посмотрим.
Ответить с цитированием
  #7  
Старый 02.06.2009, 21:14
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Ёсмаё вот ты запудрил всем голову)))

у тебя код типа
Код:
var
 pos: String
begin
 pos := StrPos(...)
чтоли?

Если так то она возращет строку а не указатель и тогда функция ShowMessage уместна.

А тебе нужно вернуть позицию какого-либо символа в строке или что?
Ответить с цитированием
  #8  
Старый 05.06.2009, 14:13
NightSoldier NightSoldier вне форума
Прохожий
 
Регистрация: 04.06.2009
Сообщения: 14
Репутация: 10
По умолчанию

Функция Pos(<SubStr>:String,<Str>:String):Integer;
Надеюсь достаточнО?
<SubStr> - подстрока в строке <Str>.
Переведу на литературный язык:

Дана строка S имеет значение 'Привет'.
Разобъём её на массив.
S[0] - П
S[1] - р
S[2] - и
S[3] - в
S[4] - е
S[5] - т
Функция Pos ищет в элементах массива подстроку <SubStr>, при успешном поиске, вернёт индекс элемента массива S, который совпадает с первым символом в подстроке <SubStr>, в случае неуспешного поиска вернёт число 0.

Пример 1:
Код:
var
S: String;
Index: Integer;
begin
S:='Привет';
Index:=Pos('и',S); // Вернёт 3
end;

Пример 2:
...
var
S: String;
Index: Integer;
begin
S:='Привет';
Index:=Pos('г',S); // Вернёт 0, т. к. символ 'г' отсутствует в строке S
end;

Пример 3:
...
var
S: String;
Index: Integer;
begin
S:='Привет';
Index:=Pos('ет',S); // Вернёт 5, т. к. символ 'е' 5 по счёту в строке S.
end;
Admin: Не забываем про оформление!

Последний раз редактировалось Admin, 05.06.2009 в 14:56.
Ответить с цитированием
  #9  
Старый 06.06.2009, 11:39
NightSoldier NightSoldier вне форума
Прохожий
 
Регистрация: 04.06.2009
Сообщения: 14
Репутация: 10
По умолчанию

Спс Админ
Я забывчивый
-(
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter