Теперь я сопровождаю несколько сценариев dxl и проверяю их все.
Сценарий, о котором идет речь, форматирует несколько строк в буфер, а затем преобразует их обратно в строку. , Эта строка затем объединяется с другой строкой, а затем сохраняется в атрибуте. Код ниже (имена переменных и количество параметров функции были санированы FYI):
string formatForField(string s1, string s2){
Buffer buff = create();
buff += s1
buff += "\n";
buff += s2;
string formattedString = tempStringOf(buff);
delete(buff);
return formattedString;
}
void alterField(string inputString1, string inputString2){
string formattedChange = formatForField(inputString1, inputString2);
string oldValue = currentObject."Attribute Name";
if (oldValue != "") {
oldValue = oldValue "\n---\n";
}
string newValue = oldValue formattedChange;
currentObject."Attribute Name" = newValue;
}
Проблема заключается в том, что иногда вместо ожидаемого результата значение □ добавляется к значению «Имя атрибута» текущего объекта на предыдущее значение.
Если, например, значение (current object)."Attribute Name
равно "Lorem Ipsum"
, а после запуска сценария ожидаемое значение (current object)."Attribute Name
равно:
Lorem Ipsum
---
inputString1
inputString2
Тогда время от времени значение (current object)."Attribute Name
будет на самом деле:
Lorem Ipsum
---
□
Мне не удалось обнаружить каких-либо подобных проблем в Интернете, поэтому я публикую здесь. Я не уверен, что здесь происходит, так как 99% времени сценарий дает ожидаемый результат. Интересно, что если атрибут содержит белый квадрат после запуска сценария, повторный запуск сценария с тем же вводом приведет к ожидаемому выводу ...
Редактировать: На этом изображении показан белый квадрат, которым я являюсь на примерно, как это, кажется, не отображается в режиме просмотра живого поста
Дополнительное редактирование: при дальнейшей проверке я обнаружил, что иногда включаются дополнительные случайные символы. Правый столбец должен содержать текст, а не случайные символы, которые он содержит.