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/ |