OberonCore
https://forum.oberoncore.ru/

Единое пространство BlackBox
https://forum.oberoncore.ru/viewtopic.php?f=3&t=1723
Страница 3 из 3

Автор:  Илья Ермаков [ Суббота, 18 Июль, 2009 23:54 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Иван Горячев писал(а):
(я про то, что стандартными средствами нельзя работать с большими файлами или создавать каталоги, например. Или узнать значение локатора)


Сначала казалось тоже, что.....
Всё запихивать в общего назначения модуль - всё равно не угадаешь.
Если где-то нужно работать с..., это можно заизолировать в одном месте, написав через WinAPI так, как требуется под ситуацию.
Удобные без заморочек абстракции важнее побочного функционала, по-моему.

Автор:  Vlad [ Воскресенье, 19 Июль, 2009 02:28 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Илья Ермаков писал(а):
Сначала казалось тоже, что.....
Всё запихивать в общего назначения модуль - всё равно не угадаешь.


Это так, но тут главное (как всегда) знать меру. Чтобы не получилось так, что один и тот же баг надо фиксить в 10 разных местах системы. Переиспользование кода против переуниверсализации компонент.

P.S. У нас есть как раз такая проблема и именно с файлами. Есть супер компонента, которая может делать все с файлами любого размера и с любыми файловыми системами. Только никто не до конца понимает как она работает и чего от нее ждать в конкретной ситуации :) Любое, даже объективно "хорошее" исправление в ней - это куча головной боли, потому что фиг знает что отвалится в других местах.

P.S.S. Хотя конечно багов с большими файлами не должно быть даже в самой простой файловой компоненте, как ни крути и как не борись за простоту :)

Автор:  Иван Горячев [ Воскресенье, 19 Июль, 2009 03:50 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Илья Ермаков писал(а):
Сначала казалось тоже, что.....
Всё запихивать в общего назначения модуль - всё равно не угадаешь.
Если где-то нужно работать с..., это можно заизолировать в одном месте, написав через WinAPI так, как требуется под ситуацию.
Удобные без заморочек абстракции важнее побочного функционала, по-моему.


Оффтоп конечно, но... Базовые компоненты должны быть сбалансированы и расширяемы. И должны обеспечивать минимально необходимый функционал. В частности это означает, что для элементарных операций мне должно хватать только базовых компонент и что нигде в системе не должны использоваться "хаки". Тот же Files этого не обеспечивает: я могу задать значение локатору, но не могу узнать его. Я не могу узнать имени файла, что порождает совершенно безобразные вещи типа
Код:
name := SYSTEM.VAL(Str, SYSTEM.VAL(INTEGER, f) + 40);   (* f(HostFiles.File).name *)

(это из HostBitmaps.ImportBitmap). Т.е. Files переупрощён. Я же не призываю к запихиванию в Files всего-всего для работы с файлами. Только добавить необходимый минимум.

И, кстати, насколько я понимаю WinApi теперь вовсе необязательная принадлежность ББ. Вообще в идеале SYSTEM должен использоваться только для общения с внешним миром, а внутри ББ должно хватать менее экзотических средств.

Ну да сейчас это неважно. Пока неизвестна позиция ОМС по общественной разработке всерьёз такие вещи обсуждать рано.

Автор:  Сергей Оборотов [ Воскресенье, 19 Июль, 2009 06:53 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Иван Горячев писал(а):
Ну да сейчас это неважно. Пока неизвестна позиция ОМС по общественной разработке всерьёз такие вещи обсуждать рано.
Вот и не обсуждайте. Создайте прецедент. Пока общественной разработки не будет - не будет высказано и позиции по ней. Кстати, почему бы не пригласить сюда кого-нибудь из OMC?

Автор:  Info21 [ Воскресенье, 19 Июль, 2009 08:05 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Иван Горячев писал(а):
Files переупрощён. Я же не призываю к запихиванию в Files всего-всего для работы с файлами. Только добавить необходимый минимум.
Возможно, не переупрощен, а абстрагирован для работы под разными ОС. Когда-то он работал под старой МакОС.

"Необходимый функционал" может в какой-то момент оказаться костью в горле.

Приведенный пример не очень убеждает -- не корявость его, а то, насколько реально этот кусок является "необходимым функционалом".
По-моему, как раз не является.

Автор:  Сергей Оборотов [ Воскресенье, 19 Июль, 2009 08:20 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Info21 писал(а):
Возможно, не переупрощен, а абстрагирован для работы под разными ОС. Когда-то он работал под старой МакОС.
Что в ней нельзя было получить имя файла?

Автор:  Иван Горячев [ Воскресенье, 19 Июль, 2009 08:24 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Info21 писал(а):
Возможно, не переупрощен, а абстрагирован для работы под разными ОС. Когда-то он работал под старой МакОС.

"Необходимый функционал" может в какой-то момент оказаться костью в горле.

Приведенный пример не очень убеждает -- не корявость его, а то, насколько реально этот кусок является "необходимым функционалом".
По-моему, как раз не является.


Ну не знаю... Сомневаюсь что на Маках нельзя узнать имя используемого файла. А что касается необходимости... я например не смог создать список открывавшихся документов (который recent files) именно потому, что не смог узнать имена файлов (значения локаторов хоть в HostFiles есть, хотя это тоже не фонтан). А использовать такое безобразие не хотелось. И вообще, если мы можем чему-то установить значение, мы должны иметь возможность и узнать значение.

Автор:  Info21 [ Воскресенье, 19 Июль, 2009 08:33 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Иван Горячев писал(а):
если мы можем чему-то установить значение, мы должны иметь возможность и узнать значение.
Ну, это штука внешняя. Какой у нее формат еще роль играет.

Автор:  Иван Горячев [ Воскресенье, 19 Июль, 2009 08:45 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Какой бы не был - это строка. Дальнейшая обработка от системы конечно зависит, но строка - она и в африке строка.

Автор:  Vlad [ Воскресенье, 19 Июль, 2009 09:29 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

GUEST писал(а):
Info21 писал(а):
Возможно, не переупрощен, а абстрагирован для работы под разными ОС. Когда-то он работал под старой МакОС.
Что в ней нельзя было получить имя файла?


Вообще сколько себя помню - ни разу не возникало желания имея на руках файловый объект получить его имя. Возможно у создателей HostFiles - тоже :) Может вы чего-то делаете не так? :)

Автор:  Vlad [ Воскресенье, 19 Июль, 2009 09:31 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Иван Горячев писал(а):
А что касается необходимости... я например не смог создать список открывавшихся документов (который recent files) именно потому, что не смог узнать имена файлов


Не понимаю я ваших проблем :) Открыли файл, запомнили путь в списке открывавшихся файлов. В чем проблема-то?

Автор:  Vlad [ Воскресенье, 19 Июль, 2009 09:34 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Иван Горячев писал(а):
И вообще, если мы можем чему-то установить значение, мы должны иметь возможность и узнать значение.


В общем случае - нет. Наоборот, наличие парных set/get может говорить о плохой инкапсуляции/декомпозиции.

Автор:  Иван Горячев [ Воскресенье, 19 Июль, 2009 09:37 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Vlad писал(а):
Не понимаю я ваших проблем :) Открыли файл, запомнили путь в списке открывавшихся файлов. В чем проблема-то?


Проблема в том, что имеется готовый модуль (в данном случае - HostCmds), который занимается открыванием/сохранением документов. Он - готовый и стандартный, править внутри него я не хочу. Остаётся два варианта - либо копипастой создавать его клон с добавлением необходимого функционала, либо - попытаться работать с теми объектами, которые есть в системе. А в системе есть текущий документ, из которого, если постараться, можно вытянуть объект типа Files.File. И всё, приехали

Автор:  Vlad [ Воскресенье, 19 Июль, 2009 09:41 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Иван Горячев писал(а):
Какой бы не был - это строка. Дальнейшая обработка от системы конечно зависит, но строка - она и в африке строка.


Вообще работать с путями файлов как со строками - крайне неудобно. Сам много сталкивался с этим на практике. Конечно, чтобы открыть файл - достаточно строки, понимаемой нижележащей ОС. Но как только вы захотите делать простейшие операции с путями (хотя бы сложить директоррию с именем файла) - со строками будете иметь кучу граблей :)

Автор:  Иван Горячев [ Воскресенье, 19 Июль, 2009 09:44 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Я не спорю. Но для того, чтобы хотя бы иметь возможность поиметь эти грабли я для начала должен иметь строку :)

Автор:  Vlad [ Воскресенье, 19 Июль, 2009 09:47 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Иван Горячев писал(а):
Проблема в том, что имеется готовый модуль (в данном случае - HostCmds), который занимается открыванием/сохранением документов. Он - готовый и стандартный, править внутри него я не хочу. Остаётся два варианта - либо копипастой создавать его клон с добавлением необходимого функционала, либо - попытаться работать с теми объектами, которые есть в системе. А в системе есть текущий документ, из которого, если постараться, можно вытянуть объект типа Files.File. И всё, приехали


В этой ситуации я бы сказал, что проблема как раз таки в HostCmds и его надо править на предмет лучшей расширяемости (вот захотите вы, чтобы он не только из файлов открывал документы) и т.д. А не пихать все что можно в HostFiles.

Автор:  Сергей Оборотов [ Воскресенье, 19 Июль, 2009 10:20 ]
Заголовок сообщения:  Re: Единое пространство BlackBox

Спасибо, HostCmds работает и так.

Страница 3 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/