OberonCore https://forum.oberoncore.ru/ |
|
Как работает TextControllers, TextModels, TextMappers https://forum.oberoncore.ru/viewtopic.php?f=23&t=2498 |
Страница 1 из 1 |
Автор: | hothing [ Вторник, 30 Март, 2010 10:14 ] |
Заголовок сообщения: | Как работает TextControllers, TextModels, TextMappers |
Доброго дня. Несколько вопросов по теме. Пока больше всего интересует следующий: Не могу понять почему после выполнения кода размер текста в модели равен 0. Код: c := TextControllers.Focus(); IF c # NIL THEN c.GetSelection(sb,se); buf := TextModels.CloneOf(c.text); Log.Int(buf.Length());Log.Ln; (* buf.Length() == 0*) ... END В фокусе находится окно с программой. |
Автор: | Иван Горячев [ Вторник, 30 Март, 2010 11:02 ] |
Заголовок сообщения: | Re: Как работает TextControllers, TextModels, TextMappers |
Из-за неудачного названия процедуры. Согласно документации: Цитата: PROCEDURE CloneOf (source: Model): Model This procedure should be used to obtain a new text from the same type as another existing text. То бишь она делает объект такого же типа, но отнюдь не с тем же содержимым. По хорошему эта процедура должна называться как-то типа NewWithSameType. |
Автор: | hothing [ Вторник, 30 Март, 2010 11:31 ] |
Заголовок сообщения: | Re: Как работает TextControllers, TextModels, TextMappers |
Спасибо! |
Автор: | Иван Кузьмицкий [ Воскресенье, 09 Декабрь, 2012 21:33 ] |
Заголовок сообщения: | Re: Как работает TextControllers, TextModels, TextMappers |
Вот эта вот TextModels.CloneOf, оказывается, делает клон с одной целью - разделить между клонами некую структуру SpillFile, содержащую ссылку на временный файл. Получается, что каждой текст-модели соответствует свой временный файл на диске. Сперва мы тут подумали, что это работает только для текстов, загруженных из файла, но вот если приглядеться к процедуре TextModels.StdWriter.WriteChar, то можно увидеть, как там открывается этот самый спилл-файл. Что-то жирновато получается, под каждый текст заводится свой файл. Тогда логична необходимость операции клонирования, не позволяющая плодиться временным файлам. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |