k245 wrote:

md5(password+username)
Отсюда интересное следствие - после редактирования имени пользователя его пароль становится недействительным ))

Интересно, если это такая защита от редактирования, то почему было бы не сделать md5(password+username+id_role+is_admin)...

2

(28 replies, posted in Russian)

m128mx wrote:

Удалось вывести скрин с камеры на twebbrowser запросом isapi -  http://user:pass@<ip>:<port>/ISAPI/streaming/chanels/101/picture?SnapShotimageType=JPEG

Используй функцию HTTPGetFile(URL,,)var, сохраняет в файл.
Вот пример на форуме

3

(28 replies, posted in Russian)

6katran6 wrote:

VSPlayer  он не показывает все камеры сразу в online

Попробуй Xeoma, есть бесплатная версия.

4

(28 replies, posted in Russian)

Это пример для второго варианта с использованием плагина камеры в TWebBrowser, а не для воспроизведения RTSP потока в VLC плеере.

5

(28 replies, posted in Russian)

Владимир, у Вас же было готовое решение с портабельным VLC плеером, предложите товарищу, может заинтересует.

6

(28 replies, posted in Russian)

Смотря ещё какой поток камера отдаёт, например RTMP умеет и встроенный плеер играть. Ну так автор программы утверждает.

Спасибо за пример, возьму в арсенал.

Ясно, спасибо.

vovka3003 wrote:

Делать страницу в виде файла - необязательно, достаточно записать код в TWebBrowser.
Ну и сам установщик контрола с собой таскать для компьютеров, где его нет.

А как в него записать, есть пример какой-нибудь?

vovka3003 wrote:

Ну, может производителю задать вопрос?

С ними особо не пообщаешься, производитель ACTI. Кодек старинный SED2140.
На все запросы отвечают стандартно: оборудование снято с производства, приобретайте новое...

vovka3003 wrote:

Если есть Onvif, то ODM что-то должен показать.

Нет, к сожалению, Onvif.

Я правильно понял, что для каждой камеры нужно создать html файл и открыть их через TWebBrowser на форме?

vovka3003 wrote:

OLE-объекты нельзя рассматривать как WinControl.

Возможные варианты:

1. Плеер загнать в TWebBrowser, а сам TWebBrowser положить на форму.

2. Собрать в делфи в Ole-контейнере, запускать как Exe-шник, придумать управление (например через параметры запуска).

3. Заюзать через rtsp в VLС плеере (exe), SetParent-ом подтянуть к форме. Управление возможно http-командами.

Да пробовал уже варианты, первые 2 работают, для 3-го нужно знать rtsp поток, а я, к сожалению, не смог его вычислить.
Но хотелось по красоте сделать...

Доброго дня!
Есть код плеера, сграбленного с вэб интерфейса камеры. Плеер в виде nvEncoderMedia.dll. Видимо, чтобы он отображался на форме, его нужно как-то прикрутить к ней, но не соображу как:

procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean);
var
  NV1: Variant;
begin
  NV1:=CreateOleObject('NVCTRLMEDIA.Media.1');
  //TWinControl(NV1).Parent := Form1.Panel1;  // - ошибка invalid variant operation
  NV1.MediaURL := '192.168.1.100';
NV1.MediaUsername := 'admin';
NV1.MediaPassword := ' ';
NV1.HttpPort := '80';
NV1.DisplayTitleBar(0);
NV1.ID := 1 ;
NV1.SetCommunicationPort(6000,6001,6002,5000,6005,6006);
NV1.Connect();
NV1.Play();
end;

Это получается, что в строке

objExec := objShell.Exec('cmd');

команду cmd можно заменить на plink и должно сработать?
Я имею в виду, что можно в консоль plink.exe также отправлять команды и получать ответ?

vovka3003 wrote:

Но мне кажется, есть более изящное решение, чем:

FindWindow('', 'c:\windows\system32\cmd.exe');

через OLE например.

Добрый день. А как через OLE, например?

vovka3003 wrote:

Только если пропатчить DrvFR.dll smile

Можно подробней, как пропатчить и как пользоваться патченым dll?

vovka3003 wrote:

Как вариант "асинхронности" - вызывать отдельный процесс (exe-шник),..

Я в общем-то к этому и пришёл, но на всякий случай решил спросить, вдруг всё-таки был вариант.

vovka3003 wrote:

Каким способом?

Подключаю драйвер ККМ как OLE объект, подключаюсь, запрашиваю данные, пока по кнопке, потом буду по таймеру:

procedure [name] (Sender: TObject; var Cancel: boolean);
var
  kkm: Variant;
begin
  if VarType(kkm) = varNull then kkm:=CreateOleObject('Addin.DrvFR');
  if kkm.Connect = 0 then
      begin
        
        запросы данных...

    kkm.Disconnect;
      end else showmessage('Не удалось подключиться к ККМ: '+kkm.ResultCodeDescription);
end;
pavlenko.vladimir.v wrote:

MVD не поддерживает многопоточность, но Вы можете использовать Application.ProcessMessages();

Может я неправильно использую эту функцию, в каком месте кода она должна быть?

Добрый день, форумчане.
Делаю программу сбора данных с удалённых устройств (ККТ), устройств более 30 шт., периодически по очереди подключаюсь к устройствам и считываю данные. Во время подключения и передачи данных (доли секунды) программа не отвечает на запросы, курсор со стрелки меняется на крутящийся круг.
Подскажите, есть ли в MVDB возможность выделить часть кода скрипта в отдельный процесс/поток, чтобы процесс опроса устройств не мешал работе пользователя в программе? Или может есть другой способ решить эту задачу?

22

(3 replies, posted in Russian)

Alexandr wrote:

Можно ли как то поменять стандартный ярлык программы на свой?

Я использую программу Restorator 2018 для замены стандартных иконок в исполняемом файле программы вашего проекта.
Нужно подготовить 4 иконки соответсвующего размера, из них сделать файл mainicon.ico и заменить им аналогичный ресурс в Вашей программе.
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=9000&amp;download=0

Thanks, Derek! Excellent cheat.
It suits me.

sibprogsistem wrote:

...
используйте текстовое поле
...

Да, это тоже вариант. Вот только я потом из грида экспортирую в эксель и там продолжаю со временем работать, в частности форматировать (раскрашивать) по условию, со временем в виде текста это не получится.
Хотелось бы, конечно, понять почему так работает MVDB.
Спасибо за советы.

То есть я правильно предположил, что данные в базе 1899-12-30 00:00:00.000 грид воспринимает как пустую строку?
Или проблема во встроенном SQL запросе, который заполняет грид? Использую штатную кнопку "поиск", видимо придётся на кнопу вешать SQL запрос для заполнения грида.