ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ»

ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ» (http://forum.tk-chel.ru/index.php)
-   Система «АвтоГРАФ»: Программное обеспечение (http://forum.tk-chel.ru/forumdisplay.php?f=4)
-   -   Получение данных из Delphi (http://forum.tk-chel.ru/showthread.php?t=5760)

SahatoshL 07.07.2016 10:11

Получение данных из Delphi
 
В соответствии с документацией «Описание COM-сервера АвтоГРАФ.doc» а так же веткой «http://board.tk-chel.ru/index.php?t=1103&o=0&st=10», дополнительно изучили пример для MS Excel.
Разрабатываем ПО для получения данных из системы AutoGRAPH.
Для разработки используем Embarcadero® Delphi® 2010 Version 14.0.3593.25826, ОС Win7x64, АвтоГРАФ 4.0.6
Стоит задача в получении израсходованного за период топлива и пробег.
Пишем:
var
Autograph : IAutoGRAPHAutomation;
Begin
Autograph := CoAutoGRAPHAutomation.Create ;
Autograph.StartComputing(SysAllocString(PChar('Car sList.ini')), 3001539, WideString(PChar('01.07.2016 00:00:00')), WideString(PChar('07.07.2016 00:00:00')), WideString(PChar('GSM')), 1);
//ждем пока Autograph.ComputingPercents
//тут же видем в АвтоГРАФе что указатель позиционируется на нужном нам транспорте и считает данные
//Пробуем получить данные
ListCars.Items.Add(FloatToStr(Autograph.TripsNum)) ; // возвращает количество рейсов, вопросов нет.

ListCars.Items.Add(Autograph.TripRealCont) ;
ListCars.Items.Add(FloatToStr(Autograph.TripTank1S tartLevel)) ;
ListCars.Items.Add(FloatToStr(Autograph.TripDistan ce)) ;
// ничего не возвращает
End ;

Подскажите пожалуйста что мы делаем не так?

storm 07.07.2016 10:18

SahatoshL,
у вас есть количество рейсов Autograph.TripsNum, чтобы запросить информацию по конкретному рейсу - вам нужно выставить индекс нужного вам рейса, например Autograph.TripIndex := 1;

PS: нумерация рейсов начинается с 1; можно сделать цикл по всем рейсам

SahatoshL 07.07.2016 10:23

Цитата:

Сообщение от storm (Сообщение 138072)
SahatoshL,
у вас есть количество рейсов Autograph.TripsNum, чтобы запросить информацию по конкретному рейсу - вам нужно выставить индекс нужного вам рейса, например Autograph.TripIndex := 1;

PS: нумерация рейсов начинается с 1; можно сделать цикл по всем рейсам

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

storm 07.07.2016 10:27

Цитата:

Сообщение от SahatoshL (Сообщение 138073)
Да, спасибо получилось. А как быть если мне нужна инфа за период не учитывая рейсы, а просто вся сумма?

запускаете расчет без разбивки на рейсы - последний параметр в Autograph.StartComputing ставьте равным 0

SahatoshL 07.07.2016 10:53

Цитата:

Сообщение от storm (Сообщение 138074)
Цитата:

Сообщение от SahatoshL (Сообщение 138073)
Да, спасибо получилось. А как быть если мне нужна инфа за период не учитывая рейсы, а просто вся сумма?

запускаете расчет без разбивки на рейсы - последний параметр в Autograph.StartComputing ставьте равным 0

не выходит, выводит 0

storm 07.07.2016 10:58

Цитата:

Сообщение от SahatoshL (Сообщение 138081)
не выходит, выводит 0

куда выводит?
вот так вызываете расчет
Autograph.StartComputing(SysAllocString(PChar('Car sList.ini')), 3001539, WideString(PChar('01.07.2016 00:00:00')), WideString(PChar('07.07.2016 00:00:00')), WideString(PChar('GSM')), 0);
если были данные за выбранный промежуток времени, то должен быть один рейс
(проверяете, что Autograph.TripsNum больше 0, то есть есть рейсы)
потом устанавливаете индекс рейса Autograph.TripIndex := 1;
и запрашиваете нужные вам данные за этот рейс

SahatoshL 07.07.2016 10:58

Ну это решаемо на раз:for I := 1 to Autograph.TripsNum do
Еще вопрос, а как посчитать количество потраченного топлива?

storm 07.07.2016 11:00

Цитата:

Сообщение от SahatoshL (Сообщение 138083)
Еще вопрос, а как посчитать количество потраченного топлива?

все параметры описаны в документе «Описание COM-сервера АвтоГРАФ.doc»
вам нужен TripMotor1Fuel - Расход топлива двигателем 1

SahatoshL 07.07.2016 11:02

все разобрался.


Текущее время: 06:27. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot