kaz_av
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору AlexCoRu Цитата: А можно всё же воспроизводимый? В общем, косяк твой, скорее всего, в том, что начальное значение результата функции тоже undefined (поэтому приведение VString к строке довольно смело, без предварительной инициализации). Когда ты используешь out-параметр, то для упраляемых типов дельфя предварительно очищает его, поэтому в функцию передаётся инициализированная дефолтным значением переменная. Добавлено: AlexCoRu В общем, если телепатировать дальше, то картина следующая. У тебя есть функция возвращающая Variant. При работе в цикле, начальное значение результата функции (оно всегда является undefined) соответствует результату предыдущей итерации. Соответственно, с таким кодом ты будешь падать после любой итерации, когда результатом была не строка, а результат текущей итерации должен быть строковым. Решение простое: по VType определять наличие управляемого типа и финализировать его руками, (например, для строки: UnicodeString(VString) := ''), а потом уже присваивать другое значение. | Всего записей: 439 | Зарегистр. 15-02-2006 | Отправлено: 15:38 30-07-2017 | Исправлено: kaz_av, 16:17 30-07-2017 |
|