|
#1
|
|||
|
|||
Функция Pos
Доброго времени суток.
Delphi 2009. Ещё вопросик. Функция StrPos возвращает указатель на первое найденное значение, а как получить не указатель, а число, например такая-то буква встречается на 5 позиции. Или как перевести указатель в число. Последний раз редактировалось EraM, 02.06.2009 в 21:01. |
#2
|
|||
|
|||
Если я правильно понимаю, то функция поз возвращает как раз индекс начала вхождения, т.е. фактически позицию, если рассматривать строку как массив...
|
#3
|
|||
|
|||
Как тогда этот индекс перевести в число.
Потому что если вывести например showmessage(pos); где pos результат функции strpos то он выдаёт просто часть слова за найденным символом. |
#4
|
||||
|
||||
Функция Pos как уже было сказано возвращает именно целочисленное значение. Если не найдено то 0.
showmessage(pos); конечно будет ошибка, так как ShowMessage требует в качестве параметра строку, нужно число преобразовать в строку, воспользовавшись например функцией IntToStr(); Пример: Код:
ShowMessage(IntToStr(pos('ек', 'Текст'))); |
#5
|
|||
|
|||
Цитата:
Вы что-то не дочитали в теме, выше написано, что если сделать showmessage(pos) после pos := strpos(...); и посмотреть что она вернёт, то это будет срока, а не число и showmessage ни на что не ругается, а просто выдаёт на экран строчку. |
#6
|
|||
|
|||
По-моему я сам так удачно ошибся, в название темы написав pos, хотя имел ввиду(использую) strpos. Щас заменю на pos - посмотрим.
|
#7
|
|||
|
|||
Ёсмаё вот ты запудрил всем голову)))
у тебя код типа Код:
var pos: String begin pos := StrPos(...) Если так то она возращет строку а не указатель и тогда функция ShowMessage уместна. А тебе нужно вернуть позицию какого-либо символа в строке или что? |
#8
|
|||
|
|||
Функция 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, 05.06.2009 в 14:56. |
#9
|
|||
|
|||
Спс Админ
Я забывчивый -( |