И еще о функции InStrRev

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
LeonidSN
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 11.05.2007 (Пт) 12:36

И еще о функции InStrRev

Сообщение LeonidSN » 12.07.2007 (Чт) 21:02

Есть у меня небольшая но очень нужная книжка: "Visual Basic 6.0 Встроенные функции языка программирования", автор - Васильев Петр Павлович. Насколько я себе представляю, зто перевод Справки по VB из MS VS на русский язык. Книжка подлинно настольная, тем обиднее обнаружить в ней ошибки.
Издательство (М. "ДИАЛОГ_МИФИ") не указывает реквизиты автора, поэтому помещаю свою реплику на популярном сайте в надежде, что автор, и не только автор, заглянут в эту тему...

Обсуждение функции InStrRev уже имело место на этом сайте и неоднократно. Но я не нашел конкретного ее определения, хотя функция нужная. Вот как описывает ее П.П.Васильев:
"... Как результат возвращается позиция вхождения одной строки внутрь другой от ее конца.
InStrRev=(Arg1,Arg2...)
Arg1 - содержит поисковое строковое выражение
Arg2 - содержит выражение, в котором осуществляется поиск"

На самом деле функция InStrRev находит последнее вхождение искомой подстроки - Arg2 в проверяемую строку - Arg1. При этом возвращается позиция последнего вхождения отсчитываемая от начала строки.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 12.07.2007 (Чт) 22:11

LeonidSN писал(а):"... Как результат возвращается позиция вхождения одной строки внутрь другой от ее конца.
InStrRev=(Arg1,Arg2...)
Arg1 - содержит поисковое строковое выражение
Arg2 - содержит выражение, в котором осуществляется поиск"


Он видимо перепута местами аргументы.

В описании этой функции в MSDN пишется:
Код: Выделить всё
Returns the position of an occurrence of one string within another, from the end of string.


Что можно перевести как:
Код: Выделить всё
Возвращает позицию начала одной строки в пределах другой, начиная с конца проверяемой строки.

Т. е. возвращает последнее вхождение одной строки в другую.

А параметры в MSDN описываются следующим образом:
Код: Выделить всё
stringcheck Required. String expression being searched.
stringmatch Required. String expression being searched for.


Я бы перевел это так:
Код: Выделить всё
stringcheck Обязателен. Строковая переменная в которой идет поиск.
stringmatch Обязателен. Строковая переменная которую ищут.

Т. е. первая стока - это проверяемая строка, а вторая - искомая.

Все это подтверждается собственной практикой.
Последний раз редактировалось burik 12.07.2007 (Чт) 22:12, всего редактировалось 1 раз.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.07.2007 (Чт) 22:12

В чём ценность данной темы, мне неясно. В чём ценность "конкретного её определения" в условиях наличия MSDN, мне тоже неясно. Да и http://bbs.vbstreets.ru/viewtopic.php?t=12587 уже была страшным баяном два года назад.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.07.2007 (Чт) 22:14

Не вижу ошибки.
Просто неудачная формулировка, допускающая двойственное толкование.
Lasciate ogni speranza, voi ch'entrate.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 12.07.2007 (Чт) 22:19

alibek

Но ведь поиск идет в первой строке, а там пишеться наоборот:
InStrRev=(Arg1,Arg2...)
Arg1 - содержит поисковое строковое выражение
Arg2 - содержит выражение, в котором осуществляется поиск
Или я чего-то не понимаю?
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

LeonidSN
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 11.05.2007 (Пт) 12:36

Сообщение LeonidSN » 13.07.2007 (Пт) 16:17

"В чём ценность данной темы, мне неясно. ... в условиях наличия MSDN"

"Не вижу ошибки.
Просто неудачная формулировка, допускающая двойственное толкование.
"
Возможно в том, что даже знающие люди иногда путаются при переводе с неродного MSDN (написанного каким-нибудь далеким филиппинским коллегой) на великий и могучий.

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

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 13.07.2007 (Пт) 19:42

Эээ.. А контекстная высплывающая справка, четко показывающая на каком месте что должно стоять уже не работает?
label:
cli
jmp label


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 94

    TopList