powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Необходима помощь в понимании кода
11 сообщений из 11, страница 1 из 1
Необходима помощь в понимании кода
    #38413770
rdama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
KEY_FOX=PADR(RTRIM(COL2),9,'0')+LEFT(COL1,29)
KEY_WEB=LEFT(RTRIM(ISNULL(COL2,''))+'000000000',9)+LEFT(RTRIM(isnull(COL1,'')),29)
SPLIT=COL1=SUBSTRING(CODE_ROW,10,29)#COL2=SUBSTRING(CODE_ROW,1,9)



С fox'ом на ВЫ.
Насколько понимаю
Первая строка:
берем значение COL2 (без правых пробелов) и добиваем 0 справа до значения длиной 9 символов, после чего дописываем 29 символов из COL1 находящихся слева.
Записываем полученное в переменную KEY_FOX.
Вторая строка:
Суть та же самая, но написано иначе и добавлены проверки на пустые значения.
Третья строка:
Вот тут полное не понимание конструкции SPLIT=COL1= #COL2 =
Это двойное присваивание или, что то иное?
Т.е. мы полученное значение пишем в COL1 и это же значение пишем в переменную SPLIT? И тогда после # это коммент?
Или это запись в COL1 и COL2 и SPLIT это конкатенация этих 2 значений? И тогда # это служебный символ для конкатенации?
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38413774
Sunista
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуй утрировать:

a=5=2, получишь .f.
a=5=3+2, получишь .t.

из чего следует - а результат логического сравнения 2 аргументов, в твоем случае SPLIT - логическое из сравнения последующего за знаком равенства.
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38413778
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
SPLIT=COL1=SUBSTRING(CODE_ROW,10,29)#COL2=SUBSTRING(CODE_ROW,1,9)

бред какой-то
Код: sql
1.
result = 'a'='b'#'c'='d'


не знаю, как fpd, а vfp будет ругаться на несовпадение типов, ведь сравнивается всё справа налево, и после получения результата COL2=SUBSTRING(CODE_ROW,1,9), который, ясное дело, будем логическим , будет произведена попытка сравнить его со строкой SUBSTRING(CODE_ROW,10,29)

PS. а решётка - это просто сокращённое написание "не равно".
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38413792
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не фоксовый код:
ISNULL() получает 1 параметр, а тут два.
SUBSTRING() нет такой функции в фоксе.
Возможно это из запроса SQL-серверу, у MSSQL есть такие функции.

И третья строка никогда не выполнится без ошибок. Если добавить скобки, то будет ясно как оно работает в фоксе:
Код: sql
1.
SPLIT=(((COL1=SUBSTRING(CODE_ROW,10,29))#COL2)=SUBSTRING(CODE_ROW,1,9))


# - в фоксе это "неравно", т.е. <> или !=
если смотреть по типам то получится присвоение в SPLIT следующей конструкции:
Код: sql
1.
(((Строка = Строка) <> Строка) = Строка)


но (Строка = Строка) в результате даст логическое значение (.T./.F.) и его невозможно дальше сравнивать со следующей строкой.
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38413805
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tу MSSQL есть такие функциизато в мсскле "решётки" нет, ЕМНИП
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38413809
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirDima Tу MSSQL есть такие функциизато в мсскле "решётки" нет, ЕМНИП
и переменные с @ начинаются. Значит еще какой-то язык.
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38413855
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdama

Скобки в третьей строке ставятся так:
SPLIT = (COL1=SUBSTR(CODE_ROW,10,29)) # (COL2=SUBSTR(CODE_ROW,1,9))
ISNULL, вероятнее всего, надо заменить на NVL().
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38413867
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12rdama

Скобки в третьей строке ставятся так:
SPLIT = (COL1=SUBSTR(CODE_ROW,10,29)) # (COL2=SUBSTR(CODE_ROW,1,9))
ISNULL, вероятнее всего, надо заменить на NVL().
Гениально Вообще-то ТС просит помочь понять как работает уже написанный код.
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38413976
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12rdama

Скобки в третьей строке ставятся так:
SPLIT = (COL1=SUBSTR(CODE_ROW,10,29)) # (COL2=SUBSTR(CODE_ROW,1,9))
ISNULL, вероятнее всего, надо заменить на NVL().
Гениально Вообще-то ТС просит помочь понять как работает уже написанный код.

Почитай в хелпе о порядке старшинства операторов.
Скобки имеют приоритет перед "не равно".
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38414036
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Скобки имеют приоритет перед "не равно".да кто же спорит
только дело в том, что в уже имеющемся коде скобок нет
и сам код как будто бы не фоксовский, разве что там зачем-то создана функция substring, являющаяся точной(?) копией(?) функции substr
...
Рейтинг: 0 / 0
Необходима помощь в понимании кода
    #38416919
rdama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь.
В контексте непонятных функций.
Есть подозрение, что это некая помесь MS SQL и VFP, ибо приложение написано в этой связке.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Необходима помощь в понимании кода
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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