Open the-Arioch opened 10 years ago
ProcessedCell.Data ==
'<I><Font html:Color="#000000">В – геодезическая широта рассматриваемого объекта </Font>'+
'<Font'#$D#$A'html:Color="#FF0000">[радианы]</Font><Font html:Color="#000000">;</Font></I>'
в zexmlssutils, WritePage перед CorrectStrForXML, а после -
'<Font html:Color="#000000"><Font'#$D#$A' html:Color="#FF0000">'+
'<Font html:Color="#000000">В – геодезическая широта рассматриваемого объекта '+
'</Font>[радианы]</Font>;</Font><I></I>'
if Stack[kol].TagName = Stack[kol-1].TagName then
begin
dec(t);
if t <> 1 then
Corrected := Stack[kol-1].TextBeforeTag + Stack[kol-1].RawTag + Corrected +
Stack[kol].TextBeforeTag + Stack[kol].RawTag
else
Corrected := Corrected + Stack[kol-1].TextBeforeTag + Stack[kol-1].RawTag +
Stack[kol].TextBeforeTag + Stack[kol].RawTag;
dec(t);
в районе 890-й строки у тебя безумие какое-то.
Во-первых, T - это копия KOL; Это длина стека, она же вложенность тегов. Т.е. не нужна. Во-вторых, она намеренно убивает все тэги, кроме корневых.
Т.е. вариант THEN просто никогда не должен выполняться
Вообще непонятно, что ты пытаешься добиться со стеком. Только проверить согласованность? Принудительно закрыть забытые теги ? Непонятно.
Подправлено: 68ea450a664db542ce2c4b6b554f2dc96c1b2a75
T не есть копия KOL! T - кол-во валидных (непокоцанных) тэгов! Заведено на случай, если в текст ячейки кто-то попытается записать что-то вроде этого: " <font bla-bla-bla".
Думаю, надо готовить тест-кейсы, иначе получается тришкин кафтан.
И я таки не смог придумать входную строку, при которой T и KOL рассинхронизируются. Зато перегрузка Corrected разными задачами привела к порче валидного значения :-(
... И как всегда это вскрывать в самый неподходящий момент.
Ps. А у тебя D7 стоит? Разве можно объявлять типы внутри процедур? D5 точно не дала бы
Avemey notifications@github.com написал(а):
Подправлено: 68ea450a664db542ce2c4b6b554f2dc96c1b2a75
T не есть копия KOL! T - кол-во валидных (непокоцанных) тэгов! Заведено на случай, если в текст ячейки кто-то попытается записать что-то вроде этого: " <font bla-bla-bla".
Reply to this email directly or view it on GitHub: https://github.com/Avemey/zexmlss/issues/5#issuecomment-27642901
Отправлено через К-9 Mail. Извините за краткость, пожалуйста.
Что за magic value t=1? Почему не 3,0,-1?
Ты уверен, что stack(kol-2) существует?
PS: интересно, что делает setlength(--). Не получается ли, что мы фрагментируем кучу и копируем туда-сюда-обратно? Мне вот чисто субъективно хочется длинную только увеличивать, причем большими порциями, как tlist
Avemey notifications@github.com написал(а):
Подправлено: 68ea450a664db542ce2c4b6b554f2dc96c1b2a75
T не есть копия KOL! T - кол-во валидных (непокоцанных) тэгов! Заведено на случай, если в текст ячейки кто-то попытается записать что-то вроде этого: " <font bla-bla-bla".
Reply to this email directly or view it on GitHub: https://github.com/Avemey/zexmlss/issues/5#issuecomment-27642901
Отправлено через К-9 Mail. Извините за краткость, пожалуйста.
И это, второй кормит тоже посмотри
Avemey notifications@github.com написал(а):
Подправлено: 68ea450a664db542ce2c4b6b554f2dc96c1b2a75
T не есть копия KOL! T - кол-во валидных (непокоцанных) тэгов! Заведено на случай, если в текст ячейки кто-то попытается записать что-то вроде этого: " <font bla-bla-bla".
Reply to this email directly or view it on GitHub: https://github.com/Avemey/zexmlss/issues/5#issuecomment-27642901
Отправлено через К-9 Mail. Извините за краткость, пожалуйста.
В теории, stack[kol-2] должен существовать, т.к. данная проверка ведётся только для закрывающих тэгов (kol >= 2 (0, 1, 2)) и при t <> 1 (можно было бы написать t > 1). Пока не найден контрпример, будем считать что так оно и есть.
В 7-ой (да вроде и в 6-ой тоже) типы можно объявлять в процедурах.
Если есть примеры хитрого оформления ячеек, которое поломает сохранение, буду пересматиривать алгоритм.
Ты мой тестовый файл гонял, по ссылке? Я тут на мобиле с edge gprs, так что внимательно посмотреть не могу. Более того, я не вижу примеров что и как ты собираешься исправлять. Например очевидное закрытие промежуточных забытых тегов ты и то не делаешь. Но тогда - что?
Но чисто из здравого смысла, тезисно:
Отправлено через К-9 Mail. Извините за краткость, пожалуйста.
что-то вроде этого: " bla-bla-bla".
Отправлено через К-9 Mail. Извините за краткость, пожалуйста.
Отправлено через К-9 Mail. Извините за краткость, пожалуйста.
Берём ячейку со значением, внутри которого разные шрифты, надстрочные и подстрочные индексы, типа
Или
Открываем в компоненте, закрываем.... и не можем открыть в Экселе:
Ошибка XML в "Таблица" Причина: Слишком много тегов Файл: C:\xxxx.xml Группа: Font Тег: Font Атрибут: Color Значение: #000000
Вглядываемся - и находим там такие, ставшие вложенными структуры: