Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Работаю в файл-сервере, алгоритм формирования уникальных номеров белых накладных внутри одного года двоит номера. Понял что блокировка работает как то не так. Хочу сделать COM сервер который будет раздавать номера, и вести протокол событий. Кто нибудь такое уже делал, дайте подсмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 14:09 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Воспользуйтесь поиском - мы уже здесь обсуждали с примерами как присваивать уникальные номера... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 14:38 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Уникальные номера меня не интересуют , мне нужен COM сервер на который я обращаюсь с клиентскихз машин и который работает с базой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 14:50 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
авторУникальные номера меня не интересуют , мне нужен COM сервер на который я обращаюсь с клиентскихз машин и который работает с базой. В данном случае никакой разницы нет, какой механизм использовать для получения ID, у Вас видимо неправильно работает сама процедура NewID, а так же не используются ограничения PK на табличку с накладными. Надо сказать, что разнесение присвоение нового номера (если именно он используется в качествее PK&FK) отдельно от транзакции с данными - порочная практика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 14:58 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Может клиенты должны получать экземляр уже запушенного com-сервера, а не создавать новой экземпляр.. Есть такая функция GetObject: GETOBJECT(cFileName | Moniker [, cClassName]) C помощью нее можно получить ссылку на com объект.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 15:02 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Да я хочу запустить на сервере (Win XP) Fox-совую програмку и через нее делать всяки разны вещи, в том числе и получение уникального кода. Насчет транкзаций наверное это справедливо, но я использую их только при резервировании, списывании количеств товаров. В транкзакциях учавствуют только 3 таблицы: Наличие, список документов и спецификация документов. Как выполнить функцию именно на сервере, запустив процесс с клиента. Например xx.User_reg(<Код юзера>,1) Люди, пришлите пару строчек если есмъ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 15:33 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Попробуй так: youcomdll.prg: компилить как multi-threaded COM-server (dll) DEFINE CLASS YourCOM AS CUSTOM OLEPUBLIC verylastKey = 0 * Генерация случайного ключа.. Function CasualKey LOCAL nKey DO WHILE .T. nKey = VAL(SYS(1)+PADL(ALLTRIM(STR(SECONDS()*1000)),8,[0])) IF nKey <> this.verylastKey THEN Exit ENDIF ENDDO verylastKey = nKey RETURN nKey ENDFUNC ENDDEFINE используешь: youcom = getobject('', 'youcomdll.yourcom') key1 = youcom.CasualKey() *MESSAGEBOX(STR(key)) youcom2 = getobject('', 'youcomdll.yourcom') key2 = youcom2.CasualKey() MESSAGEBOX(STR(key1) + ' ' + STR(key2)) RELEASE youcom MessageBox: "245341360012709 245341360012710" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 16:43 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
При youcom = getobject('', 'youcomdll.yourcom') youcomdll - имя DLL-ля yourcom - это что ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 17:23 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
DEFINE CLASS YourCOM AS CUSTOM OLEPUBLIC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 17:27 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Понял где что, уже просто полностью пример передрал. Неопознанная ошибка ... :[ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 17:45 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
определение класса должно следовать после исполняемого кода если других ошибок нет конечно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 17:52 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Опиши подробнее.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 17:53 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
PROCEDURE SRV_ID RETURN DEFINE CLASS YourCOM AS CUSTOM OLEPUBLIC verylastKey = 0 * Ãåíåðàöèÿ ñëó÷àéíîãî êëþ÷à.. Function CasualKey LOCAL nKey DO WHILE .T. nKey = VAL(SYS(1)+PADL(ALLTRIM(STR(SECONDS()*1000)),8,[0])) IF nKey <> this.verylastKey THEN Exit ENDIF ENDDO verylastKey = nKey RETURN nKey ENDFUNC ENDDEFINE ******************** вызов из командного окна xx = getobject(,'srv_id.yourcom') получаем: OLE error 0x800401e3:Операция недоступна или xx = getobject('','srv_id.yourcom') получаем: OLE error 0x800040005:Неопознанная ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 18:17 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
FVP7 Упростил код : в проекте один файл srv_id.prg вот его содержимое: PROCEDURE SRV_ID RETURN DEFINE CLASS YourCOM AS CUSTOM OLEPUBLIC Function CasualKey RETURN 1 ENDFUNC ENDDEFINE компилирую как Multi COM с Regenerate ну ... хоть тресни... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 18:22 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
DMITRY_PEREDISTYРаботаю в файл-сервере, алгоритм формирования уникальных номеров белых накладных внутри одного года двоит номера. Понял что блокировка работает как то не так. Хочу сделать COM сервер который будет раздавать номера, и вести протокол событий. Кто нибудь такое уже делал, дайте подсмотреть. Вопрос про COM как бы решен. Остались мелочи. Что на счет второй части вопроса? Com работать должен на сервере... Как зарегестрировать его на сервере, чтобы его можно было использовать с клиентов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2005, 07:24 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Извините,Я задал вопрос... а не ответил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2005, 07:26 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Тут тебе уже всего насоветовали в принципе. Только у тебя облом будет всеж. Ну создал ты сервер, ну зарегестрировал его у клиента как DCOM или WEB сервис, ну дергают твои клиенты методы у сервера и все вроде бы ОК. Но! Если клиентов будет много и всем нужет твой ID и все они дергают один и тот же метод(а фокс асинхронно не умеет выполнять методы ком - серверов, это только прироготипа RPC) то будешь ты очень долго висеть. С другой стороны можно сделать exe - сервер, но копия будет память кушать да и медленней они выполняются, тем более удаленно. Это я к чему говорю-то. К тому что сервер должен иметь очередь и уметь запускать поток для каждого запроса клиента. Я такое делал. Но без VFP + С++ тут не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2005, 12:30 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Hi Empty! Ты не совсем прав - почитай в хелпе как "распарраллеливается" выполнение кода в MultiThreaded COM. А вообще весь этот тред (дико извиняюсь перед уважаемыми участниками) - полный бред! В COM придётся повторить тот-же код, с теми-же блокировками что и в NewID, и работать он будет абсолютно аналогично (отличия не будут существенными) - и если изначально NewID был кривой (а он БЫЛ кривой если порождал дубли), то от переноса его на сервер НИЧЕГО не измениться. Так что надо NewID поправить, а не через задний проход гланды рвать :) Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2005, 19:11 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
To DMITRY_PEREDISTY: вызов из командного окна xx = getobject(,'srv_id.yourcom') получаем: OLE error 0x800401e3:Операция недоступна: Ошибка происходит из-за того, что сервер не запущен, т.е. нет активного com-объекта. Перед тем как использовать getobject(,'srv_id.youcom') кто-то должен создать этот объект! Например функцией xx = createobject('srv_id.youcom') или xx = getobject('', 'srv_id.youcom') Почему не работает xx = getobject('', 'srv_id.youcom') не понятно, если srv_id.dll зарегистрирован, то должно работать, - попробуй createobject! Потом, что это это за PROCEDURE srv_id RETURN - убери это! В твоем файле srv_id.prg есть только описание класса (ов)! А используешь ты его (их) в других файлах или формах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2005, 11:11 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Народ , признаю, косяк в NewId() был, но Сервер работает быстрее чем любая из станций. И хорошо что процесс не паралельный! Это гарантия что раздача тарелок идет из одного окна, и дубля не будет. Будет очередь, но при 20 компах незначительная, тем более не все работают одновременно. А кроме того я создам функцию регистрации пользователя на сервере, службу внутренних сообщений и прочая прочая, те файлы которые не хочется открывать со станции. Например связанные с деньгой, адресами клиентов. Вот и сбудется мечта идиота о секретном хранении данных в Foxpro :) а общаться они будут через функции COM сервера. А по предыдущем сабжам я понял что DLL должен быть зарегистрирован. Как это сделать, и не регистрируется ли он во время сборки если проставить флажек Regenerate Components IDs ? И еще обязательно ли сразу помещать его на физический сервер, и как с него тогда выполнять? а нельзя ли сначала локально запускать клиент и сервер из одного или двух окон Fox-пры? Народ я осознаю убогость вопросов, но книжки уже истер до дыр, там нету... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2005, 17:46 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
Похоже придется бороться самому. Regssrv32.exe /i srv_id.dll ругается: Ошибка при вызове LoadLibrary("srv_id.dll")-не найден указанный модуль. Да как же не найден? я его в system32 закатал куда уж искать? или можеть чего другое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2005, 18:14 |
|
||
|
COM-сервер счетчик ID
|
|||
|---|---|---|---|
|
#18+
911 - как это было: Я как всегда сидел на рабочем месте ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2005, 20:30 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32912366&tid=1594862]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 428ms |

| 0 / 0 |
