1

(5 replies, posted in Russian)

Linuxmint + wine полёт нормальный

....встроенное ядро Linux от Microsoft

  сами то поняли что написали ?

2

(1 replies, posted in Russian)

Задача:
Есть программа управления оборудованием которая генерирует некоторые технологические данные которые надо записывать
Вопрос :
Есть ли возможность передачи данных и их записи в MVD
Имею ли я право использовать sqlite.dll (меня терзают смутные сомнения)
Имеется ли возможность подключать к MVD сторонние или самописные  dll-ки

3

(3 replies, posted in Russian)

В Вашем случае нужно знать формат общения с почтовым сервером , по поводу смс хз ни разу не интересовался
а сохранять так же как и во временную таблицу предварительно разобрав текст на поля

4

(3 replies, posted in Russian)

JSON  Оооочень простой текстовый формат по написанию я бы сказал родственник XML
Например общение с  http://narodmon.ru  происходит так :
Получение списка датчиков :

Посылаем
http://narodmon.ru/api?{"cmd":"sensorsOnDevice","id":хххх,"uuid":"065177ca671801525b642d90c0хххххх","api_key":"UNbpY7zhgххх","lang":"ru"}
Получаем
{"id":хххх,"mac":"ESP8266хххххххх","name":"ххххххххх","my":1,"owner":"10ххх","location":"Краснодарский край, Россия","distance":565.28,"liked":1,"uptime":50,"sensors":[{"id":20689,"mac":"DS18T1","fav":0,"pub":0,"type":1,"name":"Корридор","value":12.9,"unit":"°","time":1522513380,"changed":1522512796,"trend":0},{"id":25685,"mac":"U4","fav":1,"pub":0,"type":13,"name":"PZEM-004T_Напр. на
вводе","value":158.8,"unit":"V","time":1522513096,"changed":1522513096,"trend":0},
{"id":25687,"mac":"W4","fav":1,"pub":0,"type":6,"name":"PZEM-004T_Потреб. мощность","value":146,"unit":"W","time":1522513096,"changed":1522513096,"trend":0}]}

А разбирается это дело тоже очень просто
Вот процедура и функция которая выводят это в грид через временную таблицу (так надо было) :

procedure sensorsOnDevice (Sender: string; var Cancel: boolean); 

var
str:string;
kursor:integer ;
json :string ;
begin
 //{"cmd":"sensorsOnDevice","id":1234,"uuid":"UUID","api_key":"API_KEY","lang":"ru"}
json := '{"cmd":"sensorsOnDevice","id":'+id_u+',"uuid":"'+uuid+'","api_key":"'+api_key+'","lang":"'+lang+'"}'; // JSON
http_string := HTTPGet('http://narodmon.ru/api?'+json);
http_string := DecodeUTF(http_string);
log.Memo1.Lines.add('-----------------sensorsOnDevice------------------');
log.Memo1.Lines.add('http://narodmon.ru/api?'+json);
log.Memo1.Lines.add(http_string);
narod.Edit2.Text := CutData('id');
narod.Edit3.Text := CutData('owner');

//CREATE TEMPORARY TABLE VTab
//(
//id INTEGER PRIMARY KEY ,
//s_id INTEGER,
//s_name TEXT,
//s_value TEXT,
//s_unit TEXT,
//s_time INTEGER,
//)
SQLExecute ('DELETE FROM Vtab');// Очищаем временную таблицу

kursor := posex('[',http_string,1);                            
while posex('{',http_string,kursor)<>0 do                   
    begin
     kursor := posex('{',http_string,kursor);                  
     str := str +#39+ CutData('id',kursor)   +#39+ ',';
     str := str +#39+ CutData('name',kursor) +#39+ ',';
     str := str +#39+ CutData('value',kursor)+#39+ ',';
     str := str +#39+ CutData('unit',kursor) +#39+ ',';
     str := str +#39+ DateTimeToStr(UnixToDateTime(StrToInt(CutData('time',kursor))))+#39;
     SQLExecute ('INSERT INTO Vtab (s_id, s_name, s_value, s_unit, s_time ) VALUES ('+str+')' );
     str:='';
     kursor := kursor + 1;
    end;


narod.TableGrid1.dbSQL := 'SELECT id, s_id as '+#39+'ID_Датчика'+#39+', s_name AS '+#39+'Наименование'+#39+', s_value AS '+#39+'Значение'+#39+', s_unit AS '+#39+'Ед.Изм'+#39+', s_time AS '+#39+'Время '+#39+'FROM Vtab';
narod.TableGrid1.dbSQLExecute();
narod.TableGrid1.BestFitColumns(bfBoth);



//- sensors[id] целочисленный код датчика в проекте;
//- sensors[pub] = 1, если датчик публичный и = 0, если датчик приватный;
//- sensors[type] код типа датчика из справочника sensorType;
//- sensors[name] название датчика или его ID (если нет названия);
//- sensors[value] последнее показание датчика;
//- sensors[unit] единица измерения;
//- sensors[time] время последнего показания датчика в UnixTime;
//- sensors[changed] время последнего изменения показаний датчика в UnixTime;
//- sensors[trend]  коэффициент линейного роста показаний датчика за последний час, рассчитанный по МНК.
end;

function CutData(pole:string ;kursor : integer = 1 ):string ;
var
 pozN,pozK,dlin : int ;
begin
dlin := length(pole);
pozN := posex(pole,http_string,kursor) + dlin + 2 ;
if copy(http_string,pozN,1)='"' then
    begin
       pozN:=pozN + 1;
       pozK:=posex('"',http_string,pozN);
    end
else pozK := posex(',',http_string,pozN);
result := copy(http_string,pozN,pozK-pozN);
end;

5

(13 replies, posted in Russian)

http://myvisualdatabase.com/download/myvisualdb.exe

6

(13 replies, posted in Russian)

Проблема в стороннем компоненте , который Дмитрий полагаю в будущем заменит .
апостроф Вы зря вписали , уберите его а на то что скрипт синеет просто не обращайте внимания он полностью работоспособен .
Вид скрипта ,конечно, необычен но на работу не влияет . Как временное решение можете добавить пробел после буквы Я(или временно поставить другую букву) , а в окончательной версии его уберёте(замените букву) .(как я делал)

п.с. Не рекомендую использовать русские буквы в названиях компонентов ( ...правда это очень удобно )

7

(2 replies, posted in Russian)

Значит что-то все таки изменилось .
....я  сам недавно случайно мышкой свойство задел (ноут переносил  )))  ) и не мог понять почему Мемо стало показывать только мелкие буквы . yikes
Просмотрите внимательно  проект .......истина где-то рядом smile
Ну или выкладывайте , посмотрим .....

Попробуйте двойные кавычки убрать, они не нужны.
pole := 'N2';
newnum := SQLexecute('SELECT MAX("'+pole+'") FROM skup WHERE parrentID = "'+IntToStr (new_poruch.TableGrid1.dbItemID)+'"');

9

(3 replies, posted in Russian)

Отсутствует основной(обязательный) блок , допишите его.

BEGIN
END
.

10

(5 replies, posted in Russian)

https://c2n.me/3SCCIw4

Form1.WindowState := wsMinimized ;

wsNormal (обычное состояние) — по умолчанию;
wsMinimized (свернута);
wsMaximized (развернута).

12

(5 replies, posted in Russian)

Всё правильно , я умышленно не вписал в другой комбобокс в фильтре 'hidden=0' для того что бы Вы сами его туда вписали и Вам стало понятнее . wink

Дмитрий уже отвечал на подобный вопрос .
Смотря какая цель преследуется , если просто чтобы кучи окон не было на раб столе то вот посмотрите :
http://myvisualdatabase.com/forum/viewt … 876#p15876

14

(4 replies, posted in Russian)

Правильно он ругается . Строку надо в цифру преобразовать .

CopyAddToJornal.DateTimePicker1.date := StrToDate(sqlexecute('select DateIN from GenJornal where id =' +inttostr(GeneralJornal.tablegrid1.dbitemid)));

15

(5 replies, posted in Russian)

Обратите внимание на поля в таблице и на фильтр комбобокса

У каждого компонента на форме есть событие OnKeyPress
https://c2n.me/3SttDdU Посмотрите справку .
Посмотрите сообщения на форуме воспользовавшись поиском:
http://myvisualdatabase.com/forum/search.php
можно создать процедуру обработки кнопок и сочетаний и повесить её на OnKeyPress каждого компонента  на форме
(как централизованно это сделать сразу для всей формы не знаю )
коды кнопок можно получить как опытным путем так и таблица где то проскакивала на форуме...
....а вот https://www.rapidtables.com/code/text/ascii-table.html , Дмитрий давал .

17

(26 replies, posted in Russian)

1. Блокированный юзер не войдет а при блокировке во время работы его выкинет.
2. Если блокировать юзера   "all" то приложение закроется сразу после старта а все кто работал отправятся в астрал (кроме "admin")
....кнопка USER активна только у админа
....у админа не должно быть 34 строки скрипта  lol
....при большом количестве юзеров не помешает увеличить время опроса или вообще повесить на второй таймер

mr_xxl wrote:

... в общем даже боюсь начинать переводить на мускул )))

Главное резервные копии делать . Мускул тоже , гад , довольно прожорлив при большом количестве обращений . Скорее всего сервер понадобится . Так как пользователей не много найдите комп с максимальной частотой проца
...а на каком железе это крутится ?
....так же если есть возможность убрать лишние обращения к базе то уберите .
так же можете попробовать в оперативке создать диск и запустить базу с него  эксперимента ради
Последние патчи интела (начиная с января) в связи с уязвимостями в камнях прилично садят именно дисковые обрашения
Как вариант установите систему с чистого образа без заплаток .

19

(26 replies, posted in Russian)

да по поводу
Timer := TTimer.Create(Form1);
....на пример  у Вас есть машина (программа) и понадобились вам туда часы . У Вас так же есть 3Д принтер (конструктор) .
Вы выбираете в 3Д принтере чертеж часов ( TTimer )  и даёте команду напечатать часы по имеющимся чертежам ( .Create ) и поместить эти часы на переднюю панель ( Form1 ) .
Если не поместить часы в машину то их в машине не будет ))) .
Так как часы невидны  снаружи машины то их можно поместить и в другое место например в бардачек ( Chat ), они и там прекрасно будут тикать .

....сильно не пинайте как смог так и объяснил big_smile

20

(26 replies, posted in Russian)

Как то так ...

21

(26 replies, posted in Russian)

Оно так ,по идее, и работает , так как висит это дело на таймере .
Попробуйте .
....разумеется при старте программы надо это все запустить

22

(26 replies, posted in Russian)

Можно и так wink

23

(26 replies, posted in Russian)

если просто сообщение показать , то добавил строки  5,40,56,57
....на данный костяк "Чата" можно навесить все на что только фантазии хватит вплоть до айфоноподобного вида со смайликами ))). (канвас Вам в помощь, ну и наличие времени )

24

(26 replies, posted in Russian)

Ну если в рукопашную городить то мне видится вариант с созданием временной таблицы на сервере и через проверку на новые записи с периодом например  5 сек смотреть есть ли сообщения для текущего юзера .

...Не знаю чем вам не нравится вагон уже готовых месенджеров

25

(8 replies, posted in Russian)

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