Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Значения переменных   Найти похожие ветки 

 
mixi ©   (2004-03-09 14:27) [0]

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

Заранее благодарен


 
icebeerg ©   (2004-03-09 14:37) [1]

Сложно, помоему. Тут вроде надо бы знать тип переменных, залезть в пространство данных "сторонней" программы отсканить его на предмет известных значений с учетом типа и потом по сегменту и смещению монитроить.
Поправте если я не прав.


 
Игорь Шевченко ©   (2004-03-09 14:37) [2]


> Имена этих переменных известны


Осталось узнать их адреса


 
mixi ©   (2004-03-09 14:48) [3]

А как узнать адреса???


 
Cobalt ©   (2004-03-09 14:57) [4]

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


 
mixi ©   (2004-03-09 15:00) [5]

Хорошо буду знать адреса что делать дальше????


 
icebeerg ©   (2004-03-09 15:03) [6]

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


 
mixi ©   (2004-03-09 15:07) [7]

Напишите примерчик пожалуйста


 
Digitman ©   (2004-03-09 15:52) [8]


> Имена этих переменных известны


откуда они известны ?
сторонний производитель вместе с исп.модулями предоставил их исх.тексты ?


 
EXE7   (2004-03-09 15:56) [9]

> Имена этих переменных известны
откуда известны?


 
mixi ©   (2004-03-10 07:56) [10]

Сторонний производитель дал SDK со всеми переменными и эвентами. Вот отсюда они и известны. Важно просто брать их значения во время выполнения программы и с интервалом в одну секунду запихивать в файл.


 
evvcom   (2004-03-10 08:02) [11]

А к этому SDK производитель Help не подбросил?


 
Digitman ©   (2004-03-10 08:27) [12]


> дал SDK со всеми переменными


приведи фрагмент текста из SDK, где фигурирует описание некоей "переменной"


 
mixi ©   (2004-03-10 10:36) [13]

И хелп подбросил,
а вот и фрагмент текста:

// 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


 
mixi ©   (2004-03-10 10:38) [14]

Вот типа описание переменных из 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}


 
Плохиш   (2004-03-10 10:42) [15]

>mixi ©   (10.03.04 10:36) [13]
>mixi ©   (10.03.04 10:38) [14]

С Вашими знаниями, Вы слишком рано за такую задачу берётесь.
Почитайте для начала про C-ые описания


 
Digitman ©   (2004-03-10 10:46) [16]

))

и как ты предполагаешь, имея вот это вот "добро", реализовать [5] ?


 
mixi ©   (2004-03-10 13:13) [17]

Ну про знания помолчу. Дело все в том, что это SDK игры Microsoft Flight Simulator точнее SDK для написания собственных приборов для моделей самолетов.Данная задача ставилась для того чтоб написать прибор расшифровщик полетов. А поскольку клиентскую часть я написал на Delphi я и хотел узнать возможно ли сделать чтение переменных на Delphi. Я могу реализовать чтение этих переменных на С вот только dll придется прямо в панель каждой модели совать, что не совсем хочется. Хотелось просто спросить возможно ли это на Delphi и сделать универсальную утилиту для всех моделей. Ну а поскольку я вижу что ни кто не может дать вразумительный ответ по этому поводу. Считаю вопрос снятым и с удовольствием возвращаюсь к С-ным описаниям.


 
Digitman ©   (2004-03-10 14:00) [18]

все что в прикл.задачах можно сделать на C, точно так же можно сделать и на Паскале в Делфи.


> Я могу реализовать чтение этих переменных на С


покажи в коде как ты получаешь доступ к "переменным" в модуле на C - и получишь рекомендации к реализации того же самого в модуле на Паскале в Делфи

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


 
mixi ©   (2004-03-10 15:42) [19]

Вот кусок кода в котором считывается значение переменной 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 16:31) [20]

куда считывает ? в какую твою переменную ? где это видно в приведенном коде ? какой тип и значение имеет  ид-р PLANE_ALTITUDE ? где прототип MAKE_NEEDLE ? это что - ф-ция ? процедурв ? макрос ? или что ?

то что ты привел - огрызки кода, непонятно как вызываемого ... "на деревню дедушке"


 
coban2k ©   (2004-03-10 18:18) [21]

Ни один компилятор C/C++ не экспортирует даже при дебаге мод"е имена переменных, имена функций пожалуйста, переменных - никогда!



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.053 c
3-1081149365
Brain Force
2004-04-05 11:16
2004.05.02
Форма для добавления поля в DBGrid(Eh)


14-1081244344
kaif
2004-04-06 13:39
2004.05.02
Принуждение и благо


3-1080999062
Skif
2004-04-03 17:31
2004.05.02
Передать результат запроса в массив


14-1081400275
Ega23
2004-04-08 08:57
2004.05.02
Еврофутбол


1-1081938491
metalfan
2004-04-14 14:28
2004.05.02
"нажать" кнопу в чужом окне...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский