Buffer.CopyData

From SunFlurry wiki
Jump to: navigation, search
  CopyData (Копирование данных внутри буфера)
Объект:Буфер
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в число, чтение за пределами буфера.
Визуальность:Нет

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

Синтаксис

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

Аргументы

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

Примеры

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

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