---------
void __ fastcall msg (char * str)// повідомлення для монітора
{
if (! mWrite (m_Disp, (AnsiString (str) + AnsiString (" n r")). C_str (), strlen (str) +2, & Wrtd));
}
void __ fastcall logmsg (AnsiString mes)// повідомлення в полі мемо
{
Form1-> LogText-> Lines-> Add (mes);
}
// --------------------------------------------- ----------------- char __fastcall DeviceOrModule (AnsiString Parameter, int * item_index)// визначити що було передано з початковими параметрами: прилад або модуль і видати порядковий номер потрібного тега.
{
int i, all_nodes;
// шукаємо прилад
all_nodes = SecondLevelNodeAccess-> GetCount ();// кількість тегів другого рівня
for (i = 0; i
if (AnsiString (SecondLevelNodeAccess-> GetNode (i) -> Attributes [WideString ("name")] ) == Parameter) {
* item_index = i;
return 1;
}
}
// якщо прилад не знайдений, шукаємо модуль в тезі default
all_nodes = SecondLevelNodeAccess-> FindNode ("default") -> ChildNodes-> GetCount ();// Кількість тегів третього рівня в тезі default
for (i = 0; i == Parameter) {
* item_index = i;
return 2;
}
}
return 0;
}
// --------------------------------------------- -----------------
void __ fastcall GetModuleList (AnsiString Parameter, PModule * ModuleList, int item_index, int * modules_counter)// отримання списку модулів входять до складу приладу
{
int i, j, k, p, all_modules, version_count;
AnsiString mes;
* modules_counter = ThirdLevelNodeAccess (item_index) -> GetCount ();// кількість модулів у приладі
* ModuleList = new TModule [* modules_counter];// виділяємо пам'ять під масив модулів
for (i = 0; i <* modules_counter; i + +) {// Заповнюємо поля name і baseaddress
if (cor_count)
{
for (j = 0; j
if (AnsiString (ThirdLevelNodeAccess (item_index) -> GetNode (i) -> GetNodeValue ()) == Correction [j]. Name) {
(* ModuleList) [i]. name = Correction [j]. New_name;
break;
}
else (* ModuleList) [i]. name = AnsiString (ThirdLevelNodeAccess (item_index) -> GetNode (i) -> GetNodeValue ());
}
}
else (* ModuleList) [i]. name = AnsiString (ThirdLevelNodeAccess (item_index) -> GetNode (i) -> GetNodeValue ());
(* ModuleList) [i]. baseaddress =
}
// LOG-> Add (AnsiString ());
// активізація dll зі списком модулів
Form1-> XMLDocument1-> FileName = "Module_list.xml";
Form1-> XMLDocument1-> Active = true;
all_modules = SecondLevelNodeAccess-> GetCount ();// скільки всього модулів у базі
for (i = 0; i <* modules_counter; i + +) {
for (j = 0; j <= all_modules; j + +) {//заповнюємо поля version
if (j> = all_modules) {//не знайшли модуль (помилка у файлі з виправленнями)
mes = AnsiString ("Не знайдений модуль ") + (* ModuleList) [i]. Name;
MessageBox (NULL, mes.c_str (), "Помилка", MB_ICONERROR | MB_OK);
break;
}
if ((* ModuleList) [i]. name == AnsiString (ThirdLevelNodeAccess (j) -> GetNode (0) -> GetNodeValue ())) {
(* ModuleList) [i]. version_count = ThirdLevelNodeAccess (j) -> GetCount () - 1;
for (k = 0; k <(* ModuleList) [i]. Version_count; k + +) {
(* ModuleList) [i]. version [k] = new TVersion;
(* ModuleList) [i]. version [k] -> address = StrToInt (FourthLevelNodeAccess (j, k +1) -> GetNode (0) -> NodeValue);
(* ModuleList) [i]. version [k] -> value = StrToInt (FourthLevelNodeAccess (j, k +1) -> GetNode (1) -> NodeValue);
(* ModuleList) [i]. version [k] -> type = StrToInt (FourthLevelNodeAccess (j, k +1) -> GetNode (2) -> NodeValue);
(* ModuleList) [i]. version [k] -> description =
}
break;
}
}
// LOG-> Add (ModuleList [i]. name + AnsiString ("") + ModuleList [i]. Baseaddress);
}
}
// --------------------------------------------- -----------------
void __ fastcall GetModule (AnsiString Parameter, PModule * ModuleList, int item_index)// отримуємо інформацію для одного модуля
{
int i, j, all_modules;
* ModuleList = new (TModule);
(* ModuleList) [0]. name =
(* ModuleList) [0]. baseaddress =
Form1-> XMLDocument1-> FileName = "Module_list.xml";
Form1-> XMLDocument1-> Active = true;
all_modules = SecondLevelNodeAccess-> GetCount ();
for (i = 0; i <= all_modules; i + +) {
if (i> = all_modules) {
MessageBox (NULL, "Модуль не був знайдений. Версія недоступна "," Error ", MB_ICONERROR | MB_OK);
break;
}
if ((* ModuleList) [0]. name == AnsiString (ThirdLevel...