powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как тключить чувствительность к регистру (Case sensitive)?
9 сообщений из 9, страница 1 из 1
Как тключить чувствительность к регистру (Case sensitive)?
    #35047097
faustt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Как при проверке 2ух строк отключить чувствительность к регистру?
"pf" = "PF" должен выдать .T.

Спасибо.
...
Рейтинг: 0 / 0
Как тключить чувствительность к регистру (Case sensitive)?
    #35047104
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
set collate to 'russian'
...
Рейтинг: 0 / 0
Как тключить чувствительность к регистру (Case sensitive)?
    #35047114
faustt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Код: plaintext
set collate to 'russian'


Спасибо. А как потом вернуть на ту которая была?
...
Рейтинг: 0 / 0
Как тключить чувствительность к регистру (Case sensitive)?
    #35047164
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustt Dima T
Код: plaintext
set collate to 'russian'


Спасибо. А как потом вернуть на ту которая была?

Код: plaintext
set collate to 'machine'

Только постоянно переключаться туда-сюда не советую, выбери что-то одно на весь проект.

Например при создании индекса запоминается текущий set collate
...
Рейтинг: 0 / 0
Как тключить чувствительность к регистру (Case sensitive)?
    #35047177
faustt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T faustt Dima T
Код: plaintext
set collate to 'russian'


Спасибо. А как потом вернуть на ту которая была?

Код: plaintext
set collate to 'machine'

Только постоянно переключаться туда-сюда не советую, выбери что-то одно на весь проект.

Например при создании индекса запоминается текущий set collate

Ясно. Спасибо!
...
Рейтинг: 0 / 0
Как тключить чувствительность к регистру (Case sensitive)?
    #35047262
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При необходимости изменить установки SET, лично я делаю так
Код: plaintext
1.
2.
3.
4.
5.
lcVar=SET("Collate")
****
* code
******
SET COLLATE TO lcVar
Естественно с учетом видимости переменной lcVar
...
Рейтинг: 0 / 0
Как тключить чувствительность к регистру (Case sensitive)?
    #35047322
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DagПри необходимости изменить установки SET, лично я делаю так
Код: plaintext
1.
2.
3.
4.
5.
lcVar=SET("Collate")
****
* code
******
SET COLLATE TO lcVar
Естественно с учетом видимости переменной lcVar

Set`ы менять лучше как можно меньше в процессе работы, в идеале установить при старте и вообще не менять. А то можно на такие грабли попасть, что потом несколько дней паранормальные явления отлавливать придется.
Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
proc MAIN
set collate to 'russian'
...
do MyProc
...
do MyProc1
...

proc MyProc1
lcVar=SET("Collate")
set collate to 'machine'
...
do MyProc
...
SET COLLATE TO lcVar

proc MyProc
...
Тут MyProc вызвана и с 'russian' и с 'machine'
если для MyProc критично SET COLLATE то этот код надо дублировать туда, потом есть еще куча других SETов, и в итоге пару раз использовав такое переключение приходим к тому что в итоге прописываем lcVar=SET("Collate") ... SET COLLATE TO lcVar практически в каждую процедуру/метод. А SETов в фоксе далеко не один.
Утрировано немного, но близко к реальности.

Я обычно все необходимые SETы собираю в SETENV.PRG и вызываю при старте проги и из DE.BeforeOpenTables()

Способы обойти не меняя SETа всегда есть. Например при set collate to 'russian'
Код: plaintext
1.
"pf" = "PF" -> .T.
"pf" == "PF" -> .F.
и наоборот при set collate to 'machine'
Код: plaintext
1.
"pf" = "PF" -> .F.
lower("pf") = lower("PF") -> .T.
...
Рейтинг: 0 / 0
Как тключить чувствительность к регистру (Case sensitive)?
    #35047345
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TSet`ы менять лучше как можно меньше в процессе работы, в идеале установить при старте и вообще не менять. А то можно на такие грабли попасть, что потом несколько дней паранормальные явления отлавливать придется.

Согласен. Но если уж возникла нужда в каком-то конкретном месте изменить установку - то проще всего зафиксировать ее в локальную переменную, изменить установку, выполнить нужный кусочек кода (не проваливаясь в вызываемые процедуры), затем восстановить установку из локальной переменной. ИМХО.

Dima TЯ обычно все необходимые SETы собираю в SETENV.PRG и вызываю при старте проги и из DE.BeforeOpenTables()

+1. Только вызываю эту процедуру при старте и из Load (DE не пользуюсь)
...
Рейтинг: 0 / 0
Как тключить чувствительность к регистру (Case sensitive)?
    #35048082
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, Вы чего! Для локальной задачи менять глоблальные настройки? Кувалдой будем комаров мочить?

Если стоит задача всего-лишь сравнить две строки, то надо просто перевести их в один регистр функциями UPPER() или LOWER().

Код: plaintext
1.
2.
?UPPER("pf") = UPPER("PF")
?LOWER("pf") = LOWER("PF")

"Подводных камней" использования SET COLLATE - вагон и маленькая тележка. Без четкого понимания того, на что влияет эта настройка и что придется изменить в приложении лучше ее вообще не трогать!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как тключить чувствительность к регистру (Case sensitive)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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