:: Visual Foxpro, Foxpro for DOS
Terminal Session
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
Мое приложение вытащили на сервер с терминальными сессиями... около 30.

Есть некоторое кол-во параметров присущих пользователю и я их обернул через:

function user_name
return GETENV("UserName")
endfunc
function user_path
LOCAL lcPath
lcPath = SYS(5) + SYS(2003) + "\Users\" + user_name()
path_check( lcPath )
return lcPath
endfunc


а как вы это решили?


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Terminal Session
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Ну я бы добавил префикс m. для переменных.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Terminal Session
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
PaulWist
Ну я бы добавил префикс m. для переменных.

Зачем?


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Terminal Session
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Vedmak
PaulWist
Ну я бы добавил префикс m. для переменных.

Зачем?

Если будет одноименное поле, то значение возьмется из курсора.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Terminal Session
Равиль

Сообщений: 6547
Откуда: Уфа
Дата регистрации: 01.08.2003
Vedmak
Мое приложение вытащили на сервер с терминальными сессиями... около 30.
Есть некоторое кол-во параметров присущих пользователю и я их обернул через:

function user_name
return GETENV("UserName")
endfunc
function user_path
LOCAL lcPath
lcPath = SYS(5) + SYS(2003) + "\Users\" + user_name()
path_check( lcPath )
return lcPath
endfunc


а как вы это решили?

Немного по-другому, не помню почему так сделал )
user_name = Alltrim(GetwordNum(Sys(0), 2, "#"))
дополнительно использую Id сессии - удобно если один юзер может войти в несколько сеансов на серваке (если это разрешено)
Но рабочую папку юзера для временных файлов создаю сам, где удобно - есть у меня некоторое недоверие к системным папкам )


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Terminal Session
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
GETENV - это практически единственный источник инфы для проги, которая запущена в терминале
SYS(2023) - вроде - это путь к системной папке винды, или к "SET TMP" юзера (не важно), главное штатно, работает всегда (ну, если юзер не поменял, и не потребовалось неестественного, типа нужен ТМП-файл, а он на ССД 256Г, а нужно 1Тб временного файла, всякое бывает)
Ratings: 0 negative/1 positive
Re: Terminal Session
andrewk

Сообщений: 174
Откуда: Красноярск
Дата регистрации: 15.05.2005
Vedmak
а как вы это решили?
OsUserName – так же, через GetEnv("UserName"), проблем не было.
Нужно помнить, что GetEnv("UserName") под обычной ОС возвращает не то, что юзер видит в панели управления в «учётных записях». Например, создаём пользователя "Вася", заходим под ним, пароль, все дела. А потом в панели меняем имя на "Василиса Петровна". Однако %UserName% останется Вася, и папка в %UserProfile% тем более. И на другие компы по сети этот комп будет пытаться зайти с логином Вася и текущим паролем. Поменять «реальное» имя пользователя можно в "control.exe UserPasswords2".

Про рабочую папку. Солидарен с Равилем. Делаю «общую» рабочую папку для проги. Если прога запущена под RDP, то в этой общей папке создаю подпапку =OsUserName() и иду в неё – поскольку зачастую в качестве RDP-сервера выступает обычная рабочая машина одного из пользователей.
Если же между сеансами одного пользователя никакие данные сохранять не нужно (всякие настройки, выходные файлы...), то в качестве рабочей можно вообще использовать %temp%. На серверных осях есть клёвая настройка типа «удалять %temp% при закрытии сеанса», тогда вообще можно за собой не чистить.

Мой рабочий кусок
Ratings: 0 negative/0 positive
Re: Terminal Session
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
О йЕ! )
Ratings: 0 negative/0 positive
Re: Terminal Session
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
Практикуй...тесь.


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Terminal Session
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
PaulWist
Vedmak
PaulWist
Ну я бы добавил префикс m. для переменных.

Зачем?

Если будет одноименное поле, то значение возьмется из курсора.

я применяю
GATHER NAME to <ObjectName>

ООП рулит.


------------------
Говорить стоит лишь для тех, кто слушает.




Исправлено 1 раз(а). Последнее : Vedmak, 19.05.23 20:58
Ratings: 0 negative/1 positive
Re: Terminal Session
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
andrewk
Vedmak
а как вы это решили?
OsUserName – так же, через GetEnv("UserName"), проблем не было.
Нужно помнить, что GetEnv("UserName") под обычной ОС возвращает не то, что юзер видит в панели управления в «учётных записях». Например, создаём пользователя "Вася", заходим под ним, пароль, все дела. А потом в панели меняем имя на "Василиса Петровна". Однако %UserName% останется Вася, и папка в %UserProfile% тем более. И на другие компы по сети этот комп будет пытаться зайти с логином Вася и текущим паролем. Поменять «реальное» имя пользователя можно в "control.exe UserPasswords2".

Про рабочую папку. Солидарен с Равилем. Делаю «общую» рабочую папку для проги. Если прога запущена под RDP, то в этой общей папке создаю подпапку =OsUserName() и иду в неё – поскольку зачастую в качестве RDP-сервера выступает обычная рабочая машина одного из пользователей.
Если же между сеансами одного пользователя никакие данные сохранять не нужно (всякие настройки, выходные файлы...), то в качестве рабочей можно вообще использовать %temp%. На серверных осях есть клёвая настройка типа «удалять %temp% при закрытии сеанса», тогда вообще можно за собой не чистить.

Мой рабочий кусок

Не вникал в твое приложение.. к
По тексту... Declare такая же конструкция для компилятора как и include... втыкать между строе колда смысла нет


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Terminal Session
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
Заявить обращение к внешему API надо объявить в стартовом PRG. Компилятор всем модулям про это расскажет.


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Terminal Session
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> Заявить обращение к внешему API надо объявить в стартовом PRG. Компилятор всем модулям про это расскажет.
... это ты о VFP ...
Если да, то страшно подумать, как мы/вы писали на этом ЯП )



Исправлено 1 раз(а). Последнее : of63, 19.05.23 21:50
Ratings: 0 negative/0 positive
Re: Terminal Session
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003


ПИши внятно


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Terminal Session
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
В н Я Т Н О

вроде, правильно написал ?
Ratings: 0 negative/0 positive
Re: Terminal Session
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Не обнаружил в приведенном коде обьекта, выднли жирным шрифтом где в коде используется обьект и его св-ва.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Terminal Session
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
без пояснений, пракктически при каждой системонагруженной строке, код не ... читабелеспособен, без обид
Ratings: 0 negative/0 positive
Re: Terminal Session
andrewk

Сообщений: 174
Откуда: Красноярск
Дата регистрации: 15.05.2005
Vedmak
Declare такая же конструкция для компилятора как и include...
Эмм... Да вроде как нет. Help:
#INCLUDE Preprocessor Directive
При этом обращаться к константам в коде можно только ниже по тексту после #Include. И директиву нужно втыкать в каждый отдельный PRG, а не один раз где-то на старте.
DECLARE - DLL Command
Именно команда, а не директива компилятору. Фактически, полностью аналогичная "SET PROCEDURE TO ...", но со ссылкой не на фоксовый модуль, а на DLL.
Я к тому, что #INCLUDE и DECLARE – это совершенно разные вещи.

Vedmak
Declare ... втыкать между строе колда смысла нет
После выполнения этой команды «в программе появляется ещё одна функция». Да, эта новая функция потом доступна в любом месте программы. Поэтому да, если функция нужна в разных местах, есть смысл выполнить команду DECLARE один раз где-то на старте, а не перед каждым использованием объявляемой функции.
В моём примере тот кусок кода, где declare, выполняется только в исключительных случаях – только когда GetEnv("SessionName")=="", а это бывает только когда exe-шник запущен «от имени администратора» (с другими случаями я не сталкивался). А объявляемые там WinAPI-вызовы в других местах лично мною больше нигде не используются. Поэтому эти declare я и не вынес отдельно на старте.

of63
без пояснений, пракктически при каждой системонагруженной строке, код не ... читабелеспособен, без обид
Ну простите, уж так получилось Да я на самом деле, когда копировал сюда этот код, и не думал, что кто-то особо вчитываться будет. А на дворе было полчетвёртого утра, навести красоту сил уже не было)
Ratings: 0 negative/0 positive
Re: Terminal Session
akvvohinc
Автор

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Vedmak
Declare такая же конструкция для компилятора как и include... втыкать между строе колда смысла нет.
...
Заявить обращение к внешему API надо объявить в стартовом PRG. Компилятор всем модулям про это расскажет.
Абсолютно неверное представление о том, что такое директивы препроцессора, и чем они отличаются от команд.
"Компилятор всем модулям про это расскажет" - у меня не хватает воображения, чтобы понять, что скрывается под этой фразой.
"Компилятор рассказывает..." - опишите более подробно, что, по-вашему, происходит, когда компилятор обрабатывает команду Declare.
Ratings: 0 negative/0 positive
Re: Terminal Session
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
akvvohinc
Vedmak
Declare такая же конструкция для компилятора как и include... втыкать между строе колда смысла нет.
...
Заявить обращение к внешему API надо объявить в стартовом PRG. Компилятор всем модулям про это расскажет.
Абсолютно неверное представление о том, что такое директивы препроцессора, и чем они отличаются от команд.
"Компилятор всем модулям про это расскажет" - у меня не хватает воображения, чтобы понять, что скрывается под этой фразой.
"Компилятор рассказывает..." - опишите более подробно, что, по-вашему, происходит, когда компилятор обрабатывает команду Declare.

Не рубите голову, был нетрезв! Я #Define имел ввиду...


------------------
Говорить стоит лишь для тех, кто слушает.




Исправлено 1 раз(а). Последнее : Vedmak, 13.06.23 19:13
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 BOBAN  (Гостей: 27)

© 2000-2024 Fox Club 
Яндекс.Метрика