NodeAccess (i) -> GetNode (0) -> GetNodeValue ())) {
(* ModuleList) [0]. version_count = ThirdLevelNodeAccess (i) -> GetCount () - 1;
for (j = 0; j <(* ModuleList) [0]. Version_count; j + +) {
(* ModuleList) [0]. version [j] = new TVersion;
(* ModuleList) [0]. version [j] -> address = StrToInt (FourthLevelNodeAccess (i, j +1) -> GetNode (0) -> NodeValue);
(* ModuleList) [0]. version [j] -> value = StrToInt (FourthLevelNodeAccess (i, j +1) -> GetNode (1) -> NodeValue);
(* ModuleList) [0]. version [j] -> type = StrToInt (FourthLevelNodeAccess (i, j +1) -> GetNode (2) -> NodeValue);
(* ModuleList) [0]. version [j] -> description =
}
break;
}
}
/* LOG-> Add ((* ModuleList) [0]. name + AnsiString ("") + (* ModuleList) [0]. Baseaddress);
for (i = 0; i <(* ModuleList) [0]. Version_count; i + +) {
LOG-> Add ((* ModuleList) [0]. version [i] -> address);
LOG-> Add ((* ModuleList) [0]. version [i] -> value);
LOG-> Add ((* ModuleList) [0]. version [i] -> type);
} */
}
// --------------------------------------------- -----------------
unsigned int _fastcall get_version (unsigned int BaseAddress, unsigned int type)// зчитуємо версію з модуля
{
unsigned short i, j;
unsigned short SHsum;// контрольна сума
unsigned char * pTarget = new unsigned char [10];
unsigned char * pReceived;
unsigned short MessageSize = 6;
unsigned int version;
ComPort = new TCom ("COM2", 115200);
i = ComPort-> link_on ();
if (i) {
MessageBox (NULL, AnsiString (i). c_str (), "Помилка ініціалізації порту", MB_OK);
return 0;
}
pTarget [0] = 0x31;
pTarget [1] = (unsigned char) (MessageSize);// молодший байт
pTarget [2] = (unsigned char) (MessageSize>> 8);// старший байт
pTarget [3] = 0x04;
pTarget [4] = (unsigned char) type;
* (int *) (pTarget + 0x05) = BaseAddress;
version = 0;
SHsum = 0x0;
for (i = 3; i <= 8; i + + ) {SHsum + = pTarget [i];}// підрахунок КС
// MessageBox (NULL, AnsiString (SHsum). C_str (), "Контрольна сума", MB_OK);
pTarget [9] = (unsigned char) (SHsum) ;//молодший байт
pTarget [10] = (unsigned char) (SHsum>> 8) ;//старший байт
ComPort-> write (pTarget, 3 + MessageSize +2);
delete [] pTarget;
Sleep (100);
i = ComPort-> read ();
if (i> 0)
{
// MessageBox (NULL, AnsiString (i). C_str (), "Прийнято байт", MB_OK);
pReceived = ComPort-> get_receiver_ptr ();// Зчитуємо отримане значення
if (pReceived [0]! = 0x55 | | pReceived [1] ! = 0xAA) {
MessageBox (NULL, pReceived, "Помилка", MB_OK);
return 0;
}
// накладення масок
switch (type) {
case 1:
version = (unsigned int) (* (char * ) (PReceived + 5)) &0x000000FF;
break;
case 2:
version = (unsigned int) (* (short * ) (PReceived + 5)) &0x0000FFFF;
break;
case 4:
version = (unsigned int) * (int * ) (PReceived + 5);
break;
default:
version = (unsigned int) (* (short * ) (PReceived + 5)) &0x0000FFFF;
break;
}
}
ComPort-> link_off ();
return version;
}
__fastcall Executing :: Executing (bool CreateSuspended)// конструктор
: TThread (CreateSuspended)
{
end = false;// мітка закінчення = хибно
}
// --------------------------------------------- -----------------
int __ fastcall get_correction (PCorrection * CorrectionList)//Обробка файлу виправлень
{
int i = 0;
int j = 0;
int n = 0;
int correction_counter = 0;// кількість виправлень
FILE * CorrectFilePtr;// файл з виправленнями
char tempchar = '';
char * tempFile;// масив під файл з сіправленіямі
char control_buff [20];// масив знаків пунктуації
if ((CorrectFilePtr = fopen ("corrections.txt", "r")) == NULL) {
return 0;
}
// дізнаємося розмір файлу і виділяємо тимчасовий масив під файл
fseek (CorrectFilePtr, 0L, SEEK_END);
n = ftell (CorrectFilePtr);
fseek (CorrectFilePtr, 0L, SEEK_SET);
tempFile = new char [n];
// виправляємо можливі помилки пунктуації
while (tempchar == ' n' | | tempchar == '') {
tempchar = fgetc (CorrectFilePtr);
}
tempFile [0] = tempchar;
i = 1;
while (1) {
tempchar = fgetc (CorrectFilePtr);
if (tempchar == ' n') {
continue;
}
if (tempchar == '') {
continue;
}
if (tempchar == '=') {
control_buff [j] = t...