RUS  ENG 

Алексей (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Некорректные возвращаемые данные эвента evBrowserRecordChanged(196609)
 
Работаю с ZuluGIS2021
Версия 10.0.0.9079u
C#
public void OnZuluEvent(int EventID, object Source, object Param1, object Param2, object Param3)
{
if (EventID == (int)eZuluEvents.evBrowserRecordChanged)
{
   MessageBox.Show("3\n" + Source.ToString() + "\n" + Param1.ToString() + "\n" + Param2.ToString() + "\n" + Param3.ToString());
}
}

На строчке с MessageBox ставлю точку останова и смотрю данные через дебаггер.
По документации в Param3 должно выводиться:
"В параметре Param3 передается массив (safearray) элементов VARIANT, содержащий имена полей и их значения, которые идентифицирует запись. Массив содержит четное число элементов. В четных элементах (0, 2, и т.д.) хранятся имена полей базовой таблицы в виде строк. В нечетных элементах (1, 3 и т.д.) - соответствующие им значений."
У меня возвращается вот такой массив {sys;4083}.
Возможно это из-за того что я именно изменяю запись(соответственно Param1 у меня 0)

Основная задача была - выбрать поле(в ZbStdBrowser), и нажать кнопку плагина и дальше работать с выделенным полем(чтение,изменение). Но среди всех эвентов в документации нашёл только evBrowserRecordChanged через который можно получить выделенное поле.
У меня два вопроса:
- Почему я получаю "урезанный" массив, и как получить полный?
- Есть ли более подходящие способы получения данных о выделенном поле в ZbStdBrowser, с целью чтения и изменения поля?
Проверка на существование папки на сервере через VBa
 
[QUOTE] написал:
[QUOTE] написал:
[URL=/forums/?PAGE_NAME=profile_view&UID=2607]Алексей[/URL] , добрый день!
Метод FolderExists совершенно справедливо возвращает False, т.к. такой папки действительно на компьютере не существует.
Вы же пользуетесь объектом Scripting.FileSystemObject и метод подразумевает путь в файловой системе.
Для проверки наличия доступности папки на ZuluServer обратите внимание на метод   [URL=https://www.politerm.com/zuludoc/zuluax/index.html#ZsFolder_Exists.html]https://www.politerm.com/zuludoc/zuluax/index.html#ZsFolder_Exists.html[/URL] .[/QUOTE]
Не соглашусь, метод выдает не верное показание. Т.к. в реальном коде берется папка, в которой находится слой, и невозможно чтобы папка не существовала, если в ней находятся файлы.
Но попробовал вами предложенный метод ZsFolder_Exists, и у меня он также не срабатывает, т.к. сам VBA жалуется на отсутствие класса "ZsConnection". Вот пример моего кода:
Set out=OpenOutputChannel("Сообщения")
out.Put(ActiveMapDoc.Layers.Active.ZsConnection.GetFolder("zulu://123.123.123.123:8888/EXAMPLEFOLDER/",0).Exists)
Если что, источник открытого слоя - сам сервер.[/QUOTE]
Нашел проблему в том что, папку нужно указывать без "zulu://ip:port/", а только саму папку "EXAMPLEFOLDER/"
Проверка на существование папки на сервере через VBa
 
[QUOTE] написал:
[URL=/forums/?PAGE_NAME=profile_view&UID=2607]Алексей[/URL], добрый день!
Метод FolderExists совершенно справедливо возвращает False, т.к. такой папки действительно на компьютере не существует.
Вы же пользуетесь объектом Scripting.FileSystemObject и метод подразумевает путь в файловой системе.
Для проверки наличия доступности папки на ZuluServer обратите внимание на метод  [URL=https://www.politerm.com/zuludoc/zuluax/index.html#ZsFolder_Exists.html]https://www.politerm.com/zuludoc/zuluax/index.html#ZsFolder_Exists.html[/URL] .[/QUOTE]
Не соглашусь, метод выдает не верное показание. Т.к. в реальном коде берется папка, в которой находится слой, и невозможно чтобы папка не существовала, если в ней находятся файлы.
Но попробовал вами предложенный метод ZsFolder_Exists, и у меня он также не срабатывает, т.к. сам VBA жалуется на отсутствие класса "ZsConnection". Вот пример моего кода:
Set out=OpenOutputChannel("Сообщения")
out.Put(ActiveMapDoc.Layers.Active.ZsConnection.GetFolder("zulu://123.123.123.123:8888/EXAMPLEFOLDER/",0).Exists)
Если что, источник открытого слоя - сам сервер.
Изменено: Алексей - 10.10.2024 18:46:41
Проверка на существование папки на сервере через VBa
 
Версия на пк 10.0.0.8663u
Версия на сервере 8.06
Пытаюсь с помощью класса Scripting.FileSystemObject и VBa проверить, существует ли папка с определенным названием на сервере. Вот примерный код:

Set a=CreateObject("Scripting.FileSystemObject")
Set out=OpenOutputChannel("Сообщения")
out.Put(a.FolderExists("zulu://123.123.123.123:8888/EXAMPLEFOLDER/"))

Проблема что всегда выдает False при работе с сервером, без разницы с какой папкой. Но на локальном пк, все работает прекрасно.
Проблема с классом NetworkTools на С#, Выбивает ошибку при объявлении класса
 
[QUOTE] написал:
[QUOTE] написал:
[URL=/forums/?PAGE_NAME=profile_view&UID=2607&sphrase_id=67009]Алексей[/URL] , добрый день!
Такое поведение характерно, когда .Net сборка скомпилирована с выбранной платформой AnyCPU и запускается на 64-битной Windows. При этом установлена 32-битная версия ZuluGIS или ZuluXTools.
При использовании 32-битной версии компонентов ZuluGIS необходимо сборку компилировать с явным указанием платформы x86.[/QUOTE]
Сборка уже компилируется с явным указанием на 32-битную версию.[/QUOTE]
Я пытался ставить 64-битную версию, но тогда в Visual Studio в выборе COM-объекта библиотеки от Zulu не появляются вообще.
Проблема с классом NetworkTools на С#, Выбивает ошибку при объявлении класса
 
[QUOTE] написал:
[URL=/forums/?PAGE_NAME=profile_view&UID=2607&sphrase_id=67009]Алексей[/URL], добрый день!
Такое поведение характерно, когда .Net сборка скомпилирована с выбранной платформой AnyCPU и запускается на 64-битной Windows. При этом установлена 32-битная версия ZuluGIS или ZuluXTools.
При использовании 32-битной версии компонентов ZuluGIS необходимо сборку компилировать с явным указанием платформы x86.[/QUOTE]
Сборка уже компилируется с явным указанием на 32-битную версию.
Проблема с классом NetworkTools на С#, Выбивает ошибку при объявлении класса
 
Версия Zulu: 10.0.0.8384u
Использую .NET 5.0

После данной строки:
NetworkTools networkTools = new NetworkTools();

Выбивает ошибку:
Необработанное исключение типа "System.Runtime.InteropServices.COMException" в System.Private.CoreLib.dll
Retrieving the COM class factory for component with CLSID {125070E9-0B01-11D2-B55D-444553540000} failed due to the following error: 80040154 Класс не зарегистрирован (0x80040154 (REGDB_E_CLASSNOTREG))
Страницы: 1