Гость
Map
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с strtran / 12 сообщений из 12, страница 1 из 1
02.08.2021, 16:28
    #40087897
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
Потребовалось дополнительно обработать строку. Хотел применить strtran. Примерно так:

s1='for i=1 to ThisFormset.repalias'
s2='Thisformset.repalias'

?strt(s1, s2, '_v1', -1, -1, 3)

Но выяснилось, что 3-й параметр использовался только до 7-й версии.

Может кто знает как обработать?
...
Рейтинг: 0 / 0
02.08.2021, 17:44
    #40087927
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
glamis,
вспомнить/открыть для себя наличие функций STRT oFile() и STRT ran(), у которых, однако, первые четыре символа таки совпадают.
Исходя из этого таки явно указать фоксу нужную функцию, а не надеяться на отсутствующий у него искусственный интеллект.
...
Рейтинг: 0 / 0
03.08.2021, 11:02
    #40088131
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
Sergey Sizov,
Оценил Вашу язвительность.

Достойная способность вместо ответа сказать банальность.

Просто, чтобы сказать.
...
Рейтинг: 0 / 0
03.08.2021, 12:42
    #40088170
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
Он имел в виду, что в версии VFP6 была введена функция strToFile(). Как следствие, первые 4 символа "strt" с этого момента стали соответствовать двум функциям: strTran() и strToFile()

Поэтому, чтобы не было неоднозначности идентификации функции не следует сокращать их имя до 4 символов, а писать имя функции полностью.

У функции StrTran() количество параметров не менялось со времен fpd2.x. В версии VFP9 по прежнему 6 параметров
У функции StrToFile() всего 3 параметра. Возможно, именно с ней и произошла путаница
...
Рейтинг: 0 / 0
03.08.2021, 22:12
    #40088425
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
ВладимирМ,
о чем вы друзья? Прочитайте 1ю строку, там все написано о чем речь. И при работе с редактором он однозначно трактует strt как strtrans. Причем здесь strtofile?
Вопрос про преобразование строки.

Как оказалось, параметр чувствительности strtran работал до 7й версии. Есть у кого варианты решения? Только не надо программных решений-я это сделал уже. Только не красиво. Не люблю лишний код.
...
Рейтинг: 0 / 0
04.08.2021, 01:32
    #40088458
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
1. Фразу "3-й параметр" я понял как параметр с порядковым номером 3. Кто же знал, что речь идет о параметре с порядковым номером 6 и его значении "3"

2. Этот параметр был введен в версии VFP7. Т.е. использовался начиная с версии VFP7 и ПОСЛЕ, но никак не "до".

3. Вы не указали версию, о которой идет речь. По умолчанию, это подразумевает последнюю версию. Т.е. VFP9. Это значит, что параметр есть.

Все вместе, вызывает недоумение. О чем вообще вопрос-то был?


Если речь идет о замене подстроки без учета регистра, то первое, что приходит в голову, это сначала перевести весь текст в один регистр через UPPER() или LOWER(), а потом делать замену

Код: sql
1.
2.
3.
4.
s1=UPPER('for i=1 to ThisFormset.repalias')
s2=UPPER('Thisformset.repalias')

?strt(s1, s2, UPPER('_v1'), -1, -1, 3)
...
Рейтинг: 0 / 0
04.08.2021, 07:14
    #40088473
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
"ничиго нипанимаю" (с)
в чем "проблема"?

?strt(s1, s2, '_v1', -1, -1, 3)
выдает "Too many arguments"

в то время как

?strtRAN(s1, s2, '_v1', -1, -1, 3)
прекрасно работает! -> for i=1 to _v1
...
Рейтинг: 0 / 0
04.08.2021, 13:48
    #40088594
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
Автор не смог корректно описать проблему. Попробую за него

Функция StrTran() по умолчанию различает регистр букв. Т.е. для нее большие и маленькие буквы - это разные буквы

Код: sql
1.
?StrTran("Aa", "a", "b")  && вернет "Ab"



В версии VFP7 в эту функцию был добавлен еще один параметр (6 по счету), при помощи которого можно явным образом указать - учитывать регистр букв или нет. Например

Код: sql
1.
?StrTran("Aa", "a", "b", -1, -1, 3)  && вернет "bb"



Вопрос в том, как при использовании функции StrTran() в версии младше VFP7 сделать эту функцию регистро-независимой? Т.е. чтобы замена выполнялась вне зависимости от того, большая буква или маленькая.

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

Код: sql
1.
?StrTran(LOWER("Aa"), LOWER("a"), LOWER("b"))  && вернет "bb"
...
Рейтинг: 0 / 0
04.08.2021, 16:06
    #40088675
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
ВладимирМ



Собственно, ответ очевиден .


Код: sql
1.
?StrTran(LOWER("Aa"), LOWER("a"), LOWER("b"))  && вернет "bb"


что веренет VFP7+ ?StrTran("xAaY", "a", "b", -1, -1, 3)?

что веренет VFP7+ ?StrTran("xAzaZY", "aZ", "bC", -1, -1, 3)?

.....
stax
...
Рейтинг: 0 / 0
04.08.2021, 19:36
    #40088727
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
Stax

В исходном вопросе речь идет о поиске фрагмента строки "ThisFormset.repalias", когда одну из букв не в том регистре указали.

А, в общем случае, конечно, просто приведение регистра к общему значению не всегда будет работать корректно.
...
Рейтинг: 0 / 0
05.08.2021, 10:30
    #40088786
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
ВладимирМ,
просто обработать не получится.
Вообще странно:
Если пишешь strt и указываешь 3-5 параметров все работает как надо, если пишешь strt и указываешь 6 параметров - ошибка.
Но если strtran - все работает как надо.
...
Рейтинг: 0 / 0
05.08.2021, 10:41
    #40088794
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с strtran
Тема закрыта
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с strtran / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]