но, для протокола FTP поле PortNumber пишется в БД не во всех случаях например порт 79 запишется в БД, а если оператор задал порт 22, то в БД не запишется PortNumber. Проверить оказалось легко:
задаём хост ftp5.gwdg.de/pub/tdf/libreoffice:22, сохраняем, far /export netbox.farconfig ви видим (специально привожу весь блок NetBox):
и видим, что для случая указания FSProtocol : FTP & RemoutPort : 22 поле RemoutPort в БД 42E4AEB1-A230-44F4-B33C-F195BB654931.db не создаётся, а если есть удаляется, что приводит к возникновению проблемы описанной в #251.
Предлагаемое решение для устранения подобной проблемы простое -
1) убираем ИИ решающий что поле RemoutPort в БД можно/нужно удалить и пишем поле RemoutPort в 42E4AEB1-A230-44F4-B33C-F195BB654931.db всегда;
2) изменяем логику обработки источника значения записи RemourPort на:
If find(url,pos) = ":" then PortNumber = Subst(url, pos+1) Else PortNumber = UI.Port End
выбираем направление поиска от конца строки для упрощения выделения (понятно, что это и регуляркой решаемо, но?) , при этом исходим из логики приоритета что указанный в URL порт переопределяет любые дефолтные значения опеределяемые через поле Port.
Логика формирования URL удалённого хоста формирует его как конкатенацию полей БД
но, для протокола FTP поле PortNumber пишется в БД не во всех случаях например порт 79 запишется в БД, а если оператор задал порт 22, то в БД не запишется PortNumber. Проверить оказалось легко:
задаём хост ftp5.gwdg.de/pub/tdf/libreoffice:22, сохраняем, far /export netbox.farconfig ви видим (специально привожу весь блок NetBox):
и видим, что для случая указания FSProtocol : FTP & RemoutPort : 22 поле RemoutPort в БД 42E4AEB1-A230-44F4-B33C-F195BB654931.db не создаётся, а если есть удаляется, что приводит к возникновению проблемы описанной в #251.
Предлагаемое решение для устранения подобной проблемы простое -
1) убираем ИИ решающий что поле RemoutPort в БД можно/нужно удалить и пишем поле RemoutPort в 42E4AEB1-A230-44F4-B33C-F195BB654931.db всегда;
2) изменяем логику обработки источника значения записи RemourPort на:
If find(url,pos) = ":" then PortNumber = Subst(url, pos+1) Else PortNumber = UI.Port End
выбираем направление поиска от конца строки для упрощения выделения (понятно, что это и регуляркой решаемо, но?) , при этом исходим из логики приоритета что указанный в URL порт переопределяет любые дефолтные значения опеределяемые через поле Port.