Ошибка "variant Or Safe Array Is Locked" при экспорте в Msexcel
mvb
Казань
Ошибка "Variant or safe array is locked" при экспорте в MSExcel
Комментарии
Обращение в техподдержку дало почти нулевой результат.
Пришлось засучить рукава и разбираться самому.
Причина:
При экспорте в Excel числовых полей разработчики добавили функцию ConvertNumber,
которая преобразует строку в число. Однако они не учли, что строковое значение
числового поля может быть пропущено через обработчик GetText.
В моем случае выводилась цена и добавлялся символ валюты, типа: 175 р.
В фунции ConvertNumber вызывается StrToFloat, возникает ошибка преобразования,
которая в итоге выглядит как "Variant ... Locked"
(опять привет от разработчиков, по качеству кода обработки ошибок).
Решения:
1. Убрать у числовых полей обработчики GetText.
2. Закоментировать вызов функции ConvertNumber в файле frxExportXLS.pas
(в версии 4.12.6 строка 866)
3. Пинать разрабочиков, чтоб исправили ошибку.
2 gpi: так работает, правда пришлось заменить Result := StrToFloat(string(s)); на Result := StrToFloatDef(string(s), 0);, иначе вылетало на пустых s.