*****************************************************************
***                   HexSel AkelPad plugin v7.1              ***
*****************************************************************

2006-2016 Шенгальц Александр aka Instructor (Shengalts@mail.ru)


*** Описание ***

Преобразование текста в шестнадцатеричный/десятеричный/восьмеричный код и наоборот.


*** Функции ***

HexSel::Main
Основной диалог.


*** Внешний вызов ***

Call("HexSel::Main", 1, FLAGS, "PREFIX", "SUFFIX", "INPUT", INPUTLEN, INPUTCODEPAGE, **OUTPUT, *OUTPUTLEN)
  Параметры:
    1
      Конвертировать выделение или указанный текст.
    FLAGS (сумма членов):
        1  текст в шестнадцатеричный код.
        2  шестнадцатеричный код в текст.
        4  однобайтовое преобразование (Ansi).
        8  двухбайтовое преобразование (Unicode).
       16  выделить результат преобразования.
      256  десятеричное преобразование.
      512  восьмеричное преобразование.
      По умолчанию: 8+16=24.
    "PREFIX"
      Строка перед кодом символа. По умолчанию используется текущая настройка.
    "SUFFIX"
      Строка после кода символа. По умолчанию используется текущая настройка.
    "INPUT"
      Текст для преобразования.
    INPUTLEN
      Длина текста (по умолчанию -1). Если -1, длина текста ограничивается NULL символом.
    INPUTCODEPAGE (для Win9x/Me)
      Кодировка текста для преобразования. По умолчанию используется системная ANSI кодировка.
    **OUTPUT
      Указатель на указатель на память, которая получает результат преобразования. Тип строки Unicode.
    *OUTPUTLEN
      Указатель на память, которая получает количество символов в результате преобразования.
  Замечания
    Если флаги 1 и 2 не указаны, используется автоматическое распознавание направления конвертирования.
    После использования параметра OUTPUT в Scripts плагине, его необходимо освободить через AkelPad.MemFree.
  Пример. Конвертировать выделение (1+4+16=21):
    Call("HexSel::Main", 1, 21, "\x", "")
  Пример. Конвертировать текст и вставить в окно редактирования (8+16=24):
    Call("HexSel::Main", 1, 24, "\x", "", "MyText")
  Пример. Получить результат конвертирования (скрипт):
    WScript.Echo(GetHex("MyText", "", ""));

    function GetHex(pInput, pPrefix, pSuffix)
    {
      var pOutput="";
      var lpOutput;
      var lpOutputLen;
      var lpOutputPtr;

      if (pInput)
      {
        if (lpOutput=AkelPad.MemAlloc(_X64?8:4 /*sizeof(wchar_t *)*/))
        {
          AkelPad.Call("HexSel::Main", 1, 9 /*1+8*/, pPrefix, pSuffix, pInput, pInput.length, 0, lpOutput);
          lpOutputPtr=AkelPad.MemRead(lpOutput, 2 /*DT_QWORD*/);
          pOutput=AkelPad.MemRead(lpOutputPtr, 1 /*DT_UNICODE*/);
          AkelPad.MemFree(lpOutputPtr);
          AkelPad.MemFree(lpOutput);
        }
      }
      return pOutput;
    }

Call("HexSel::Main", 2, FLAGS, "PREFIX", "SUFFIX", ANSICODEPAGE, UNICODECODEPAGE, "INPUT", INPUTLEN, INPUTCODEPAGE, **OUTPUT, *OUTPUTLEN)
  Параметры:
    2
      То же, что и 1, но с дополнительными параметрами: ANSICODEPAGE, UNICODECODEPAGE.
    ANSICODEPAGE
      Кодировка для однобайтового преобразования (Ansi).
      Если -1, кодировка выбирается автоматически.
      Если -2, использовать текущие настройки плагина.
      По умолчанию: -2.
    UNICODECODEPAGE
      Кодировка для двухбайтового преобразования (Unicode).
      Если -2, использовать текущие настройки плагина.
      По умолчанию: -2.
