![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Значения переменных
mixi © (2004-03-09 14:27:00)Есть такая проблема:
Существует некая программа стороннего производителя, которая во время своей работы меняет значения своих переменных. Имена этих переменных известны. Причем изменения происходят ежесекундно.
Вопрос: можно ли используя Delphi написать такую программку, которая будет следить за этими переменными и записывать в какой либо файл, либо в базу данных их ежесекундные значения. Если такое возможно подскажите как сделать.
Заранее благодарен
coban2k (2004-03-10 18:18:00) [1]Ни один компилятор C/C++ не экспортирует даже при дебаге мод'е имена переменных, имена функций пожалуйста, переменных - никогда!
Digitman (2004-03-10 16:31:00) [2]куда считывает ? в какую твоюпеременную ? где это видно в приведенном коде ? какой тип и значение имеет ид-р PLANE_ALTITUDE ? где прототип MAKE_NEEDLE ? это что - ф-ция ? процедурв ? макрос ? или что ?
то что ты привел - огрызки кода, непонятно как вызываемого ... "на деревню дедушке"
mixi (2004-03-10 15:42:00) [3]Вот кусок кода в котором считывается значение переменной PLANE_ALTITUDE. И в соответствии с этими значениями поворачивает битмап стрелы соответственно координатам, которые описаны в NONLINEARITY nonlinearity[] =(для первого битмэпа)и NONLINEARITY nonlinearity1[] = (для второго битмэпа)
аналогично можно не поворачивать битмэп, а выводить значение переменной в текущее время в файл:
// Set up import and export tables and gauge header
char gauge_name[] = "SDK.Fuel\0";
extern PELEMENT_HEADER list;
MODULE_SETUP( GAUGE_HEADER_VERSION, 57, gauge_name, &list )
MODULE_VAR alt={GROUND_ALTITUDE};
MODULE_VAR altp={PLANE_ALTITUDE};
NONLINEARITY nonlinearity[] =
{
{{18, 94}, 0, 0},
{{15, 74}, 10, 0},
{{20, 55}, 20, 0},
{{26, 40}, 30, 0},
{{36, 30}, 40, 0},
{{46, 22}, 50, 0},
{{57, 19}, 60, 0},
{{75, 16}, 80, 0},
{{90, 15}, 100, 0},
{{115, 29}, 150, 0},
{{154, 44}, 200, 0},
{{132, 56}, 250, 0},
{{133, 67}, 300, 0},
{{133, 83}, 400, 0},
{{126, 104}, 600, 0},
{{18, 94}, 601, 0},
};
NONLINEARITY nonlinearity1[] =
{
{{18, 94}, 10, 0},
{{15, 74}, 0, 0},
{{20, 55}, 30, 0},
{{26, 40}, 40, 0},
{{36, 30}, 20, 0},
{{46, 22}, 60, 0},
{{57, 19}, 90, 0},
{{75, 16}, 80, 0},
{{90, 15}, 100, 0},
{{115, 29}, 150, 0},
{{154, 44}, 200, 0},
{{132, 56}, 250, 0},
{{133, 67}, 300, 0},
{{133, 83}, 400, 0},
{{126, 104}, 600, 0},
{{18, 94}, 601, 0},
};
FAILURE_RECORD fail[] =
{
{FAIL_SYSTEM_ELECTRICAL, FAIL_ACTION_ZERO},
{FAIL_GAUGE_FUEL_INDICATORS, FAIL_ACTION_FREEZE},
{FAIL_NONE, FAIL_ACTION_NONE}
};
MODULE_VAR_CB fuel_cb;
MAKE_NEEDLE( needle,
BMP_NEEDLE,
NULL,
NULL,
IMAGE_USE_TRANSPARENCY|IMAGE_USE_ERASE,
0,
{75, 75},
{27, 4},
{100, 120},
PLANE_ALTITUDE ,
fuel_cb,
//NULL,
nonlinearity,
6)
PELEMENT_HEADER plist1[] =
{
(PELEMENT_HEADER)&needle,
NULL
};
Digitman (2004-03-10 14:00:00) [4]все что в прикл.задачах можно сделать на C, точно так же можно сделать и на Паскале в Делфи.
> Я могу реализовать чтение этих переменных на С
покажи в коде как ты получаешь доступ к "переменным" в модуле на C - и получишь рекомендации к реализации того же самого в модуле на Паскале в Делфи
ибо есть оч большие сомнения, что ты адекватно воспринимаешь термин "переменная" и его сущность в данном контексте ...
mixi (2004-03-10 13:13:00) [5]Ну про знания помолчу. Дело все в том, что это SDK игры Microsoft Flight Simulator точнее SDK для написания собственных приборов для моделей самолетов.Данная задача ставилась для того чтоб написать прибор расшифровщик полетов. А поскольку клиентскую часть я написал на Delphi я и хотел узнать возможно ли сделать чтение переменных на Delphi. Я могу реализовать чтение этих переменных на С вот только dll придется прямо в панель каждой модели совать, что не совсем хочется. Хотелось просто спросить возможно ли это на Delphi и сделать универсальную утилиту для всех моделей. Ну а поскольку я вижу что ни кто не может дать вразумительный ответ по этому поводу. Считаю вопрос снятым и с удовольствием возвращаюсь к С-ным описаниям.
Digitman (2004-03-10 10:46:00) [6]))
и как ты предполагаешь, имея вот это вот "добро", реализовать [5] ?
Плохиш (2004-03-10 10:42:00) [7]>mixi © (10.03.04 10:36) [13]
>mixi © (10.03.04 10:38) [14]
С Вашими знаниями, Вы слишком рано за такую задачу берётесь.
Почитайте для начала про C-ые описания
mixi (2004-03-10 10:38:00) [8]Вот типа описание переменных из SDK
// Token list
//
// Token list for abstracted variable access
// The order of variables in this list is tied to the token map in the
// file panels\util_defs.c. Every token here needs an entry in the
// token map, which maps tokens to variables in memory.
//
// There are two types of tokens. Normal tokens are used for all the
// variables in GLOBALS, as well as variables exported from modules.
// Special tokens are used for variables which require a function call
// to get the required information.
//
// Tokens can be added anywhere in the list, but keep the lists aligned!
//
// DO NOT CHANGE THE ORDER OF THESE TOKENS UNLESS YOU REALLY KNOW WHAT
// YOU'RE DOING!
//
typedef enum GAUGE_TOKEN
{
MODULE_VAR_NONE = 0,
TICK18, // inc'd at 18hz. used for general purpose timing
GROUND_ALTITUDE, // ground level altitude (1/256 meter/unit)
CLOCK_HOUR, // local clock time, hours {0..23}
CLOCK_MINUTE, // local clock time, minutes {0..59}
CLOCK_SECOND, // local clock time, seconds {0..59}
mixi (2004-03-10 10:36:00) [9]И хелп подбросил,
а вот и фрагмент текста:
// defines for VOR_INFO.CODE field
#define VOR_CODE_IS_LOCALIZER BIT7 // bit7 = 0= VOR 1= Localizer
#define VOR_CODE_GLIDESLOPE BIT6 // bit6 = 1= Glideslope Available
#define VOR_CODE_BACKCOURSE_UNAVAIL BIT5 // bit5 = 1= no localizer backcourse
#define VOR_CODE_DME_AT_GLIDE_SLOPE BIT4 // bit4 = 1= DME transmitter at Glide Slope Transmitter
#define VOR_CODE_NAV_UNAVAILABLE BIT3 // bit3 = 1= no nav signal available
#define VOR_CODE_VOICE_AVAILABLE BIT2 // bit2 = Voice Available
#define VOR_CODE_TACAN BIT1 // bit1 = TACAN
#define VOR_CODE_DME_AVAILABLE BIT0 // bit0 = DME
Digitman (2004-03-10 08:27:00) [10]
> дал SDK со всеми переменными
приведи фрагмент текста из SDK, где фигурирует описание некоей "переменной"
evvcom (2004-03-10 08:02:00) [11]А к этому SDK производитель Help не подбросил?
mixi (2004-03-10 07:56:00) [12]Сторонний производитель дал SDK со всеми переменными и эвентами. Вот отсюда они и известны. Важно просто брать их значения во время выполнения программы и с интервалом в одну секунду запихивать в файл.
EXE7 (2004-03-09 15:56:00) [13]> Имена этих переменных известны
откуда известны?
Digitman (2004-03-09 15:52:00) [14]
> Имена этих переменных известны
откуда они известны ?
сторонний производитель вместе с исп.модулями предоставил их исх.тексты ?
mixi (2004-03-09 15:07:00) [15]Напишите примерчик пожалуйста
icebeerg (2004-03-09 15:03:00) [16]Попробовать указатели на эти адреса накинуть, но тут будет гемор с правами доступа.
mixi (2004-03-09 15:00:00) [17]Хорошо буду знать адреса что делать дальше????
Cobalt (2004-03-09 14:57:00) [18]Попробуйте отладчик запустить. Может, в проге есть отладочная информация...
mixi (2004-03-09 14:48:00) [19]А как узнать адреса???
icebeerg (2004-03-09 14:37:00) [20]Сложно, помоему. Тут вроде надо бы знать тип переменных, залезть в пространство данных "сторонней" программы отсканить его на предмет известных значений с учетом типа и потом по сегменту и смещению монитроить.
Поправте если я не прав.