1

(8 replies, posted in Russian)

...'SELECT id FROM si WHERE si.grsi='''+Form.Edit.Text+'''...

2

(5 replies, posted in Script)

А в чем "динамичность"..?

3

(4 replies, posted in General)

An old rich Corsican dies. The family has gathered, waiting to see who the old man will announce as heir. According to the good old Corsican tradition, the laziest should inherit everything. The dying man in a weak voice:
- Dominic, my son, come to me. Dominic approaches.
- Son, imagine that you are sitting and see how the wind blows a 500 franc bill. What will you do?
“I won’t budge, dad.” Why should I get tired again?
- Golden words, my boy. Go. Paolo, come here. Paolo approaches.
“Paolo, a naked, passionate beauty is reaching out to you.” What will you do?
- I won’t move. Why strain yourself once again?
- Excellent answer, son. Go. Antonio, come here.
- Come here yourself.

sidhillsaid wrote:

Есть испытательный стенд. Испытавается устройство, где важен показатель до 10ых милиметра, поэтому такая частота. Вообще в идеале хотелось бы выбирать частоту сохранения данных.

Ну тогда получается, что и в интервале в 200 мс. может быть недопустимое колебание. Это значит, что нужно читать в непрерывном потоке, а запись делать только по факту отклонений...

sidhillsaid wrote:

...задача сохранять данные с COM порта в отдельную таблицу каждые 200 милисекунд...

А что за данные, которые требуют записи так часто? (432 000, почти полмиллиона то бишь, в сутки)

6

(3 replies, posted in Reports)

"Битва экстрасенсов" на тему "что имел ввиду ТС"...

7

(13 replies, posted in General)

k245 wrote:

The appearance of the TProgressBar component starting from Windows 7 is determined by the operating system settings

Его можно зарестайлить, но в MVDb не получится импортировать нужные виндовые функции...

8

(33 replies, posted in Russian)

k245 wrote:

Не смог коммент оставить

"ваш email не будет опубликован"...
Ну, логично))

Чтобы "подсказать куда копать" - нужно брать и копать... Из того, что можно задействовать в стоке - таблица, формы, кнопки, база...
Касательно ftp - я бы не стал использовать этот протокол а заюзал бы что-то типа облачного диска с синхронизацией. Желательно такой, который умеет помимо помимо отдачи ссылки ещё и "поточить" (для быстрого старта просмотра).
Плеер - тоже бы использовал какой-нибудь внешний для большей мультиформатности.

sidhillsaid wrote:

Как такое возможно реализовать?

Писать код...

sidhillsaid wrote:

Как можно реализовать копирование файлов по FTP?

Писать код...)

k245 wrote:

Но вряд ли вы этим скриптом сможете напрямую объединить видеофайлы, разве что задействовать какую-то стороннюю утилиту конвертации видео.

Вроде как не стоял такой вопрос... Я так понял, ему нужен просто "плеер" (он же "плейлист", он же "файло-помойка").

12

(28 replies, posted in Russian)

Да.

13

(3 replies, posted in General)

https://i.imgur.com/cu0mDwp.png

14

(33 replies, posted in Russian)

adminadmin)

15

(28 replies, posted in Russian)

Пиво "Афанасий Светлое 0.5L" - 2 шт.

function cam(n:integer):string;
begin
  result :=
  'ffmpeg -y -i "http://user:password@ip:port/ISAPI/Streaming/channels/'+IntToStr(n)+'01/picture?'+
  'snapShotImageType=JPEG&videoResolutionWidth=1920&videoResolutionHeight=1080" -vframes 1 out.jpg';
end;

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var ws:variant;
begin
    ws := CreateOleObject('WScript.Shell');

    ws.Run( cam(1), 0, True);
    Form1.DBImage1.Picture.LoadFromFile('out.jpg');

    ws.Run( cam(2), 0, True);
    Form1.DBImage2.Picture.LoadFromFile('out.jpg');

    ws.Run( cam(3), 0, True);
    Form1.DBImage3.Picture.LoadFromFile('out.jpg');

    ws := 0;

end;

➡️ ffmpeg


https://i.imgur.com/WHVYbaj.gif

16

(28 replies, posted in Russian)

ISAPI - это интерфейс выдачи готового контента. Сама же ссылка обрабатывается HTTP-сервером. Авторизация - тоже на стороне HTTP-сервера с указанным типом аутентификации:

https://i.imgur.com/L6uDtiC.png

digest не пробовал, а basic как-то тестил. Но basic уже считается устаревшим и снижает безопасность.

m128mx wrote:

А метод HTTPGetFile не может подгрузить

HTTPGetFile никогда не сможет забить заголовок авторизации.

17

(28 replies, posted in Russian)

m128mx wrote:

Дело не в авторизации явно, в браузере и в twebbrowser скриншот камера отдает без проблем...

Нда...? А что в это время делают браузеры? Как парсят URL? Как обрабатывают заголовки? Что посылают в ответе?

Я вот например вижу:

https://i.imgur.com/SA0EUss.png

Если бы все было так просто, как "видится" - уже давно хакеры весь интернет сломали бы... ))

18

(28 replies, posted in Russian)

m128mx wrote:

Не получается, видимо что то с абсолютными/относительными ссылками у HTTPGetFile ...

Это с какими..?

m128mx wrote:

А скриншот экрана можно сделать в MVDB?

Геморроя не меньше, а сам путь - неверный.
Надо либо менять тип авторизации на камере на "basic/digest", либо придумывать эту авторизацию на OLE->WinHttp...

А эта настройка обязательно должна быть в меню "списка книг"..?

А то не пойму че за тёрки.... Какие-то имейдж-листы, png-файлы, потоки...
На канве битмапа спокойно все рисуется:
https://i.imgur.com/AniqC7d.png

А не получается-то что..?

https://i.imgur.com/cu0mDwp.png

А что не получается-то..?

Вообще "сигналом" прозрачности является левый нижний пиксель. Какого цвета он, тот цвет и будет прозрачным.

var
  OT:TTimer;

procedure OnTimer(Sender: TObject);
var ts:TTabSheet;
begin
  ts := TTabSheet(TWinControl(Sender).Owner);
  if GetWindowLong(ts.tag,-16)=0 then
  ts.Free;
end;

procedure Observe(ts:TTabSheet);
begin
  OT := TTimer.Create(ts);
  OT.Interval := 200;
  OT.OnTimer := @OnTimer;
end;


///////////////////////////////


//..
Tab.Tag := h;
//..
SetParent(h, Tab.Handle);
//..
Observe(Tab);
//...

https://i.imgur.com/B9t1ijQ.gif

P.S. А вообще странно, что надо убивать сначала процесс а потом вкладку... Обычно бывает наоборот.