Вопрос о GetDeviceInfo

Столкнулась с проблемой, которую так пока и не удалось решить.
Необходимо получить DEVICE_NAME с помощью функции GetDeviceInfo(). Все предельно просто, передается она в виде PChar в строку, которую укажем. Был пример, на котором эти имена получались и благополучно записывались в некие компоненты.
При попытке организовать такое получение в собственном приложении получаю либо пустуй строку, при том, что контекст из найденных устройств создается и вычисления благополучно запускаются, или набор символов в неустановленной кодировке.

Собственно, кусок кода, которым я пытаюсь получить имена:

  1.  SetLength(device_name, 1024);
  2.       clGetDeviceInfo(device_ids[j], CL_DEVICE_NAME, Length(device_name), @device_name, @returned_size);
  3.       SetLength(device_name, Min(Pos(#0, device_name)-1, returned_size-1));
  4.       ShowMessage(IntToStr(Length(device_ids)));
  5.       SetLength(device_vendor, 1024);
  6.                         clGetDeviceInfo(device_ids[j], CL_DEVICE_VENDOR, Length(device_vendor), PChar(device_vendor), @returned_size);
  7.       SetLength(device_vendor, Min(Pos(#0, device_vendor)-1, returned_size-1));

После чего, они должны помещаться в Caption компонента Label на форме.

Подскажите, пожалуйста, с чем может быть связано, если кто сталкивался с такой проблемой, в какой стороне искать?

Forums: 

SetLength(device_name, 1024);

  1. SetLength(device_name, 1024); //<<Использование динамического массива!!

Если используете динамический массив, то передавайте так

  1. clGetDeviceInfo(device_ids[j], CL_DEVICE_NAME, Length(device_name), @device_name[0], @returned_size);

Нужно передавать в качестве параметра не указатель на массив, а указатель на нулевой элемент массива.