Тема: Не выполняется условие

Исходно: скрипт создаёт форму ввода. Пишет в свойство UserData
строку. Вызывает форму. Форма для ввода пароля. Строка, переданная
в форму, является паролем.

Sub FormEvent_Button_0_OnObjectClick( Form, ObjName )
'Form As ITCSForm, ObjName As String
    If Trim(Form.c_Edit_0.Text) = Form.UserData.Text Then
        Form.Close(100)
    Else
        Form.Close(1) ' Пароль не верный
    End If
End Sub

Вводим правильный пароль. В отладчике видим, что
Trim(Form.c_Edit_0.Text) и Form.UserData.Text одинаковы и оба имеют
тип String. Тем не менее идёт переход на строку Form.Close(1).
В чём дело? Где ошибка?

Re: Не выполняется условие

UserData.Text возвращает строку с символами переноса строки в конце.
Так должно сработать:

Sub FormEvent_Button_0_OnObjectClick( Form, ObjName )
'Form As ITCSForm, ObjName As String
    If Trim(Form.c_Edit_0.Text) = Trim(Form.UserData.Text) Then
        Form.Close(100)
    Else
        Form.Close(1) ' Пароль не верный
    End If
End Sub

Re: Не выполняется условие

а еще лучше пользоваться вот так

Form.UserData.Values("PWD") = Form.UserData.Text

(изменено: , 18 октября 2013 11:13:50)

Re: Не выполняется условие

If Trim(Form.c_Edit_0.Text) = Trim(Form.UserData.Text)

Пробовал. Не помогает.

Form.UserData.Values("PWD") = Form.UserData.Text

Тоже не работает. Дело в том, что Form.UserData.Values("PWD") =""

А функция Trim удаляет пробелы, а не перенос строк.


Или я не правильно понял? "PWD" это что, пароль или имя какого-то поля?

(изменено: Виктор Бебякин, 18 октября 2013 11:28:21)

Re: Не выполняется условие

Trim - удаляет символы пробела, табуляции и переноса.

Посмотрите что покажет этот код:

MsgBox """" & Form.UserData.Text & """" & Chr(10) & """" & Form.c_Edit_0.Text & """"

Form.UserData.Text должен отобразиться как

"<пароль>
"

Тоже не работает. Дело в том, что Form.UserData.Values("PWD") =""

Надо сначала записать туда значение а потом сравнивать

if Trim(Form.c_Edit_0.Text) = Form.UserData.Values("PWD") then

Или я не правильно понял? "PWD" это что, пароль или имя какого-то поля?

Посмотрите в справочнике тип ICSDNStrings

Re: Не выполняется условие

Надо сначала записать туда значение а потом сравнивать
if Trim(Form.c_Edit_0.Text) = Form.UserData.Values("PWD") then

Туда запись производится из основного модуля, а этот кусок из модуля
ввода. В началбном посте писал, что проверял значение
Trim(Form.UserData.Text)

"<пароль>
"

Проверил. У меня выводится так:
"пароль
"
"пароль

Т.е. всё передаётся правильно. Что делать?

Re: Не выполняется условие

JAEAEJ пишет:

Исходно: скрипт создаёт форму ввода. Пишет в свойство UserData
строку.

Как скрипт записывает в UserData строку? Приведите пример кода, пожалуйста.

Re: Не выполняется условие

Const Password = "пароль"
        Idx = FL.UserData.Add(Password)

FL - форма ввода

Re: Не выполняется условие

Ну, тогда, наверное правильнее вот так сравнивать:

If Trim(Form.c_Edit_0.Text) = Trim(Form.UserData.Strings(Idx))

Re: Не выполняется условие

Ну, или так лучше всего сделать при записи пароля в UserData так

Const Password = "пароль"
FL.UserData.Values("PWD") = Password

А потом сравнивать так:

Sub FormEvent_Button_0_OnObjectClick( Form, ObjName )
'Form As ITCSForm, ObjName As String
    If Trim(Form.c_Edit_0.Text) = Form.UserData.Values("PWD") Then
        Form.Close(100)
    Else
        Form.Close(1) ' Пароль не верный
    End If
End Sub
Спасибо сказали: JAEAEJ1

Re: Не выполняется условие

Сработало. СПАСИБО Дмитрий.
Тему можно считать закрытой.

Re: Не выполняется условие

Пожалуйста.