Author Topic: Работает ли SETVAR?  (Read 1395 times)

0 Members and 1 Guest are viewing this topic.

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Работает ли SETVAR?
« on: November 06, 2018, 04:38:25 PM »
Code: (clickermann) [Select]

$_n = 1
$a = 20
$_ar_id[$_n] = 12345678
$id = $_ar_id[$_n]
$tmp = STRCONCAT("$id_", $id)
define($tmp)

SETVAR($tmp, $a) //на этой строке выдает ошибку

halt

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: Работает ли SETVAR?
« Reply #1 on: November 20, 2018, 10:59:24 PM »
Не пойму почему в одном случае $res = GETVAR ("$tmp") дает значение заданное через SETVAR, а потом
$res = GETVAR ("$tmp") выдает значение $tmp.
 
(res=$id_1263540102      <------------ почему-то $res=$tmp, а должен быть ED3AC80)

Code: (clickermann) [Select]
                     for($r=0, $r < $_kol_name)  //несколько имен 
                        if($arr_name[$r] = $_name) //проверка на совпадение
                           $_n = $_n + 1
                           $_ar_id[$_n] = readmem($_pid, ($_addr_zap4 + 0x00000018), 4)    //id
                           $tmp = STRCONCAT("$id_", $_ar_id[$_n])
                           define($tmp) //создание переменной $id_номер
                           SETVAR("$tmp", $_addr_zap4)  //=начальный адрес таблицы USER
                           $res = GETVAR ("$tmp")
                           print("res=",$res)
                           hex($res)
                           print("                    ",$_ar_id[$_n],"(res)=",$hex)
                           $r =  $_kol_name //досрочный выход из цикла если имя совпало
                        end_if
                     end_cyc

      print("                               ->",($minIn + 1)," ",$minD)  //номер записи с минимальной дальностью(D)
      FOR ($i=0, $i <= $_n )
         print("                    ",$_ar_id[$i]," ",$_ar_a[$i]," ",$_ar_d[$i]," ",$_ar_NAME[$i])
      end_cyc

      $_IDtrg = readmem($_pid, $_addr_IDtrg, 4)  //ID цели
      hex($_addr_IDtrg)
      print("                    ",$HEX," IDttg=",$_IDtrg)
      if ($_IDtrg > 0)
         $tmp = STRCONCAT("$id_", $_IDtrg)  //
         $res = GETVAR ("$tmp")       //<---------------------------см ЛОГ     
         print("res=",$res)
         hex($res)
         print("->                  (res)=",$hex)
      end_if

Code: (ЛОГ) [Select]
22:21:08 res=248751360                                              //адрес в памяти в десятичной
22:21:08                     1313923814(res)=ED3A500       //id в десятичной и адрес в памяти шестнадцатеричной
22:21:08 res=248752640
22:21:08                     1309731056(res)=ED3AA00
22:21:09 res=248753280
22:21:09                     1263540102(res)=ED3AC80
22:21:09 res=248766720
22:21:09                     1286665627(res)=ED3E100
22:21:09 res=248768000
22:21:09                     1225806387(res)=ED3E600
22:21:10                                ->3 1304
22:21:10                     1313923814 22 2321 Royal Cave Servant    //id, номер записи, дальность, имя
22:21:10                     1309731056 23 1372 Royal Cave Servant
22:21:10                     1263540102 24 1304 Headless Knight
22:21:10                     1286665627 29 1701 Headless Knight
22:21:10                     1225806387 30 2216 Royal Cave Servant
22:21:10                     10627860 IDttg=1263540102             //адрес в памяти и ID цели
22:21:10 res=$id_1263540102   //<-- почему-то $res=$tmp, а должен быть ED3AC80
22:21:10 ->                  (res)=
« Last Edit: November 20, 2018, 11:11:25 PM by ya12 »

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: Работает ли SETVAR?
« Reply #2 on: November 22, 2018, 09:20:43 AM »
Выкинул из программы SETVAR/GETVAR, обойдусь без прямых указателей. Сделал поиск ID в массиве.