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

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


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


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

Код: plaintext
set collate to 'machine'

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

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


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

Код: plaintext
set collate to 'machine'

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

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

Ясно. Спасибо!
...
Рейтинг: 0 / 0
07.01.2008, 17:32
    #35047262
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как тключить чувствительность к регистру (Case sensitive)?
При необходимости изменить установки SET, лично я делаю так
Код: plaintext
1.
2.
3.
4.
5.
lcVar=SET("Collate")
****
* code
******
SET COLLATE TO lcVar
Естественно с учетом видимости переменной lcVar
...
Рейтинг: 0 / 0
07.01.2008, 18:28
    #35047322
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как тключить чувствительность к регистру (Case sensitive)?
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
07.01.2008, 18:57
    #35047345
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как тключить чувствительность к регистру (Case sensitive)?
Dima TSet`ы менять лучше как можно меньше в процессе работы, в идеале установить при старте и вообще не менять. А то можно на такие грабли попасть, что потом несколько дней паранормальные явления отлавливать придется.

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

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

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

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

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

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


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