Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
здравствуйте! Есть такая проблема - в MSM-Activate не работает возврат изменённых значений массива переданных по ссылке. Код: plaintext 1. 2. 3. 4. 5. 6. причём рутина GETDATA выполняется корректно (в лог вывожу значения до изменения и после) после вызова DO я вижу старые значения массива. Изменение свойств DoMode и ArrayMode не помогло. Клиента пишу на Delphi 7. Видел на форуме похожую темку (http://www.sql.ru/forum/actualthread.aspx?tid=690795), но там вопрос так и остался открытым. Может с тех пор проблема уже была кем-нибудь решена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 10:30 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Что получает рутина GETDATA(mas,flag) от клиента в переменную mas ? Какое значение ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 11:05 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Возвращать клиенту примерно так массив строк из М : Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 11:14 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Valeriu, Если подробнее то исходники выглядят так Delphi7: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. MSM: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В лог выводится Perezapis massiva 2~2~2 Before mas(0,0)=aa mas(0,1)=bb mas(1,0)=cc mas(1,1)=ee p1=123 After mas(0,0)=11 mas(0,1)=12 mas(1,0)=21 mas(1,1)=22 p1=999 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 11:15 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Мы отказались со стороны клиента передачи М серверу массивов Только на получения от него :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 11:27 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
У нас примерно так. Клиент посылает серверу большую строку с разделителями ("|" и "~") Сервер получает и в цикле перебирает строку, потом данными можно манипулировать как хочется ... Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 12:00 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Valeriu, а как вы передаёте данные от сервера клиенту? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 12:22 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Если это небольшие обьемы, точно таким же методом, только наоборот. Строку с разделителями получаем от сервера и разбираем на клиенте Если большие обьемы (мы стараемся обойти) то массивом строк и то, сколько позволяет М :) Это я показал выше. На Васика примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 12:35 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Valeriu, Судя по приведённому коду у вас в Ret помещается нужная (сформированная в M рутине) информация, а моя проблема в том и заключается, что данные из M не возвращаются и это происходит именно в Delphi. Я не пожалел часа времени и реализовал на стареньком VB6 тестовое приложение выполняющее те же действия........ И ВСЁ БЛИН ЗАРАБОТАЛО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 14:06 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Так дело в дельфях ??? :/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 14:25 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Valeriu, Да, похоже на то. Или есть отличия работы с COM (к сожалению я не эксперт в этой технологии поэтому всего лишь предполагаю). Но и не учить же Basic ради того, что там Activate работает правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 15:27 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Так я Вам еще одну ссылочку в предыдущем посте предложил. Это независимая разработка и может она подойдет !!! Там и примеры вроде есть. Скачайте все, а там думаю разобраться можно. И именно для Delphi 7 ! авторMSM-Activate (MUMPS) API wrapper-component for use in DelphiExample is for Delphi 7.This unit is created for the Dutch (http://orego.artsennet.nl) <b>HISLink-project</b>, but can also be used for other purposes. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2010, 16:36 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Насколько я помню у меня была аналогичная проблема в MSM Workstation. По моему на клиентской программе был примерно такой код: s Api=LOGIN^myProg(.InArgs) ; создание объекта API f d q:'ret . k Par,List ; !!! . s Par("var")=value . s ret=Api.Do("Serv^Prog",.Par,.List) ; Запрос данных с сервера Так вот в Par почему то не передавалось что нужно а в List почему то не возвращалось то что нужно пока перед каждым вызовом не поставили k Par,List. Насколько я помню при каждым новом обращение к объекту Api, если в параметрах делаются какие то изменения то они почему то не передаются, а передаются прежние значения, если перед этим не делать Kill ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2010, 11:28 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Хотелось бы подвести итог беседы... Svobodny Hudognik, у меня с MSM-Workstation был печальный опыт работы, предыдущий topic об этом свидетельствует. С MSM-Activate/COM я так и не разобрался, данные от сервера удалось получить только на Васике, а выяснять почему в Delphi не работает не стал, т.к. даже эксперты плечами пожимают. В итоге остановился на MSM-Activate/API, и как оказалось он рулит. На первый взгляд показался более сложным, чем COM, но после изучения всё оказалось предельно просто и помимо этого работает стабильно и имеет больше возможностей (например работа с глобалями на низком уровне). Возможно эта инфа кому-нибудь поможет. Кстати, отдельное спасибо Valeriu, за полезные ссылки и советы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2010, 15:19 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
Vovin, Я подозреваю дело в параметрах. Дело в том что в Basic по умолчанию передаются параметры по ссылке (byRef). А вот в Дельфях по значению. Не силен в дельфях смотрите хелп в направлении "Out parameters" Сообщите результаты, интересно. Спс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:17 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
VovinValeriu, а как вы передаёте данные от сервера клиенту? и еще вопрос - как через MSMactivate передать клиенту $c(0) - то есть нулевой байт ? поскольку $c(0) является терминатором по умолчанию то не передается как обойти это ограничение ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:27 |
|
||
|
MSM-Activate
|
|||
|---|---|---|---|
|
#18+
И еще забыл, у меня давно было похожее. Те я в VBA через МАктиват передавал значения но они не менялись, помогло следующее в каше (правда на Basic) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:31 |
|
||
|
|

start [/forum/topic.php?fid=39&gotonew=1&tid=1558043]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
127ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 453ms |

| 0 / 0 |
