powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос чайника
3 сообщений из 3, страница 1 из 1
Вопрос чайника
    #34852577
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пинать. Сел за фокс по надобности. Не могу въехать. Пишу в коде обработки нажатия клавиши
:
MessageBox(this.Parent.TextBox.Value, 0) && для отладки - значение есть
IF (this.Parent.TextBox.Value != "")
this.Parent.Button.Enabled = .T.
ENDIF

Ноль эмоций - условие всегда false.
Подскажите как правильно.
...
Рейтинг: 0 / 0
Вопрос чайника
    #34852606
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По умолчанию, FoxPro сравнивает символьные строки до истечения символов в строке расположенной справа от символа равенства. Т.е. выражение вида

Код: plaintext
IF (this.Parent.TextBox.Value != "")

При настройках по умолчанию, будет всегда ложно.

В правой части равенства в символьной строке нет ни одного символа. Это значит, что для сравнения из из левой части также не будет взято ни одного символа. Получится сравнение двух пустых строк, которые, естесственно, всегда равны.

На способ сравнения симвльных строк влияет настройка SET EXACT (в командах Select-SQL SET ANSI). По умолчанию, она имеет значение OFF. Если установить ее в значение ON, то строка расположенная справа будет автоматически дополняться концевыми пробелами или Chr(0) до длины строки расположенной слева и только после этого сравниваться.

Аналогичный эффект дает использование для сравнения символа тождественного равенста. Т.е. двух символов равенства подряд

Код: plaintext
IF NOT (this.Parent.TextBox.Value == "")

Это означает как бы "локальную" настройку SET EXACT ON только для данного сравнения, а не глобально для всей текущей DataSession.

Кроме того, если необходимо сравнить некое значение на пустоту, то можно использовать функцию EMPTY()

Код: plaintext
IF NOT EMPTY(this.Parent.TextBox.Value)

Однако тут следует иметь в виду, что для функции EMPTY() применительно к символьной строке пустыми значениями являются: пробел CHR(32), табуляция CHR(9), конец строки CHR(13), перевод каретки CHR(10)

Значение NULL для функции EMPTY() - это не пустое значение.

Если наличие пробела - это уже не пустое значение, то функция EMPTY() не годится.
...
Рейтинг: 0 / 0
Вопрос чайника
    #34852611
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос чайника
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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