Buffer.CopyDataInverse

From SunFlurry wiki
Revision as of 08:47, 24 October 2020 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  CopyDataInverse (Копирование данных внутри буфера)
Объект:Буфер
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в число, чтение за пределами буфера.
Визуальность:Нет

Функция копирует данные внутри буфера. Данные копируются начиная с конца отрезка, заканчивая началом отрезка копирования (в обратном направлении). Обычно эта процедура применяется при перемещении данных дальше к концу буфера, при этом, отрезок копирования может пересекаться с отрезком назначения.

Синтаксис

Buffer.CopyDataInverse(<Индекс начала данных (INT)>,<Размер области в байтах (INT)>,<Индекс назначения копирования (INT)>)

Аргументы

  • <Индекс начала данных (INT)> - Позиция начала чтения. Адресация буфера начинается с нуля.
  • <Размер области в байтах (INT)> - Количество байт для копирования.
  • <Индекс назначения копирования (INT)> - Позиция начала записи. Адресация буфера начинается с нуля.

Примеры

аБуф:=Buffer.Create();
аБуф.SetStringW(0,"Строка проверки");
//Слово "Строка" копируется по направлению к началу буфера и регионы копирования пересекаются. Правильно было бы использовать функцию CopyDataInverse.
аБуф.CopyDataInverse(14,16,8);
//Будет выведено "Строкиркиркирки" вместо предполагаемой "Стропроверкирки"
Message(аБуф.GetStringW(0,аБуф.Size()\2));

аБуф:=Buffer.Create();
аБуф.SetStringW(0,"Строка проверки");
//Корректный подход предыдущего примера
аБуф.CopyData(14,16,8);
//Будет выведено "Стропроверкирки"
Message(аБуф.GetStringW(0,аБуф.Size()\2));