OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 13:07

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 185 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 10  След.
Автор Сообщение
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Воскресенье, 08 Май, 2016 20:01 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
prospero78 писал(а):
Если считать, что радиан есть величина безразмерная, то технически можно разделить 180 на pi.
Даже если и не считать, то 180 разделить на pi=3.14159... можно.

Затрудняюсь порекомендовать литературу.
Какой-нибудь начальный курс общей физики.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Воскресенье, 08 Май, 2016 21:51 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
prospero78 писал(а):
Получим отмасштабированные градусы, но не радианы. Количество полученных градусов будет в точности соответствовать 1 радиану, но от этого они не перестанут быть градусами.

Откуда это "отмасштабированные" появилось? Пи - это не коэффициент масштабирования.

Градусы не являются производными от радианов, а радианы не являются производными от градусов.

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

Решения у такой задачи простые. Одно из них я привёл в предыдущем посте (надеюсь, нигде не ошибся).

И ещё раз: формулы не делают из радиан градусы. Формулы находят соответствие заданному количеству радиан в альтернативной системе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Понедельник, 09 Май, 2016 10:08 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
На минуточку. pi -- величина безразмерная! И означает она ДЛИНУ окружности к ДЛИНЕ единичного вектора этой окружности с коэффициентом -- 2*pi.

Так что радианы не зависят от градусов, простите подвиньтесь. Они зависят от базовых констант нашего пространства-времени.

Цитата:
И ещё раз: формулы не делают из радиан градусы. Формулы находят соответствие заданному количеству радиан в альтернативной системе.

Да уж тогда скорее радианы -- это альтернативная система градусам. По крайней мере, я понимаю, почему 6.28. И с трудом понимаю, почему pi.
Я с трудом понимаю почему градусов 360, а не 100 (привет Вавилону с его 60-ричной системой?)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Четверг, 12 Май, 2016 21:00 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
prospero78 писал(а):
Я с трудом понимаю почему градусов 360, а не 100 (привет Вавилону с его 60-ричной системой?)


эта система была введена до калькуляторов.
Удобно нацело делить на 2,3,4,5,6,8,9,10,12,15,20,30,40,60.

А 100 нацело делится только на 2,4,5,10,20,50.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 12:48 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Пришлось по работе посидеть под FreePascal.
Постоянно ловил себя на мысли, что меня бесит отсутствие пространства имён, и выпадающая подсказка по членам класса нужна именно поэтому.
Может, я что-то делаю не так, но передать объект по ссылке в качестве сеттера для property в классе -- НЕЛЬЗЯ!!!
И определить статический объект в процедуре в виде класса (и уж тем более инициализировать его) тоже не можно. Сидел, плевался)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 12:55 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
prospero78 писал(а):
Может, я что-то делаю не так, но передать объект по ссылке в качестве сеттера для property в классе -- НЕЛЬЗЯ!!!
Что за кошмар вы там наворотили? Зачем вам оъект в качестве сеттера? Сеттер - это же процедура, а никакой не объект.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 13:42 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Совершенно верно. И объявление в форме:
Код:
PROTECTED
    _Ua:clsKVw;
    PROCEDURE _set_Ua(VAR a:clsKVw);
PUBLIC
    PROPERTY Ua:SINGLE read _Ua.val write _set_Ua

Вот это во FreePascal сделать невозможно.
И упреждающее объявление методов бесит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 13:48 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Я не понял, почему у вас property имеет тип single, а в сеттер вы хотите передать переменную другого типа? Что за концептуальную кашу вы там пытаетесь завариь? Сделайте просто. Компилятор прав, что не даёт вам устроить нетипизированный балаган.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 13:53 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Где же не типизированный???
Я же прописал тип аргумента!
Затея такая, чтобы не передавать только Ua.val (а там ещё и масштабный коэффициент, достоверность, метка времени обновления и всё-такое).
Кучу параметров в сеттере невозможно передать, а передача ссылки на объект просто просится.


Последний раз редактировалось prospero78 Пятница, 13 Май, 2016 13:54, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 13:54 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
prospero78 писал(а):
Затея такая, что не передавать Ua.val (а там ещё и масштабный коэффициент, достоверность, метка времени обновления и всё-такое).
Кучу параметров в сеттере невозможно передать, а передача ссылки на объект просто просится.
Ну, так и сделайте property типа clsKVw, в чём проблема?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 13:58 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Так вот в том и проблема, что я хочу получать тип напряжение в киловольтах, а отдавать просто число (например для ГИП). Но в операциях, на присвоение я не хочу получать что попало (амперы или ватты). А именно то, что мне надо.
Видимо, придётся ковырять в сторону перегрузки операций. Что не очень хорошо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 14:00 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Я вообще не понимаю: ну какая разница компилятору, какого типа аргумент на присвоение?! Связи никакой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 14:07 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
prospero78 писал(а):
Так вот в том и проблема, что я хочу получать тип напряжение в киловольтах, а отдавать просто число (например для ГИП). Но в операциях, на присвоение я не хочу получать что попало (амперы или ватты). А именно то, что мне надо.
Видимо, придётся ковырять в сторону перегрузки операций. Что не очень хорошо.
Налицо непонимание смысла языковой конструкции property.
http://wiki.freepascal.org/Property

prospero78 писал(а):
Я вообще не понимаю: ну какая разница компилятору, какого типа аргумент на присвоение?! Связи никакой.
Вы хотите объявить переменную одного типа, а присваивать ей значения другого типа, и не видите проблемы? Вы хотите, чтобы что угодно можно было присвоить чему угодно? С этим в Basic, пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 14:12 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Цитата:
Налицо непонимание смысла языковой конструкции property.

Почитал. Ничего нового не узнал. Именно так я property и понимаю.

Цитата:
Вы хотите объявить переменную одного типа, а присваивать ей значения другого типа, и не видите проблемы? Вы хотите, чтобы что угодно можно было присвоить чему угодно? С этим в Basic, пожалуйста.

В каком месте я пытаюсь присвоить другой тип? Что-то я у себя такого не вижу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 16:05 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Это язык со строгой статической типизацией. Свойство имеет некий тип, и результат геттера и аргумент сеттера этого свойства должны иметь тот же самый тип. Что здесь непонятного?
Если хочется использовать разные типы, нужно реализовать операторы преобразования Implicit/Explicit.
ЗЫ: А потом эти люди начинают с придыханием вещать: язык ХХХ полная лажа, а вот Оберон, это да, сила. И люди начинают сомневаться в адекватности любителей оберона.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 16:45 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Причём тут тип аргумента в процедуре, и результат присваиваемый property?????
Кемет, ты опять пишешь не по теме.
Я может во write вызов процедуры вообще как чекпоинт использую, без какого-либо присвоения?!
Какое дело компилятору, какого типа АРГУМЕНТ я передаю в ПРОЦЕДУРУ?!!!
ПРОЦЕДУРА ОНА ВООБЩЕ НИЧЕГО НЕ ВОЗВРАЩАЕТ!!!
Кемет, ты молодец, что имеешь что сказать, но такое ощущение складывается, что ты вообще не читаешь вопрос.

В КП нет property за ненадобностью. Имхо, это отличное подтверждение такому техническому решению.

================
З. Ы. Я сейчас ради спортивного интереса сделал write через FUNCTION():SINGLE.
Один хрен. FreePacal упорно считает, что так делать нельзя. Да это бред.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 17:23 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
prospero78 писал(а):
сделал write через FUNCTION():SINGLE... Да это бред.
Вот так правильно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 17:44 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Дать, что ли, азы понимания property вам?

По приведённый ранее ссылке из вики есть пример:
Код:
  TCar = class
  private
    FColor: string;
    procedure SetColor(CarColor: string);
  public
    property Color: string read FColor write SetColor;
  end;

Все элементы property: его тип, тип, возвращаемый геттером, и тип параметра сеттера должны быть одинаковыми. Геттер и сеттер не должны иметь дополнительных параметров, у них чётко оговоренный формат.

Что сделает компилятор? Если у нас есть объект car типа TCar, то при чтении car.Color будет вызван геттер, в данном случае будет подставлено выражение car.FColor. Например, вызов
file.Write(car.Color) будет заменён на file.Write(car.FColor).

При присвоении значения свойству Color компилятор заменит car.Color := "red" на вызов car.SetColor("red").

Что вы на самом деле будете делать в сеттере, конечно, дело ваше, но компилятор видит, что вы объявили свойство типа string, и при компиляции присваивания этому property проверяет тип присваиваемых значений на соответствие типу property. Поэтому и параметер сеттера должен иметь тот же тип, чтобы при замене присваивания на вызов сеттера типы совпали.

В вашем случае у property имеется тип single, а сеттер принимает на вход какой-то левый класс. Компилятор справедливо негодует, точно так же, как он негодовал бы, если бы вы сделали следующее:
Код:
var
  s: single;
  c: clsKVw;
begin
  s := c;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 18:03 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Спасибо, Александр за небольшую лекцию.
Я прекрасно понимаю, как работает property.

Говоря "Это же бред", я имел в виду, что даже через
Код:
FUNCTION():SINGLE

это не работает!!!!!!!!!!!!!!!!!
У сеттера через PROCEDURE нет возвращаемого значения, в том и дело!
А если сеттер сделан через функцию, то его возвращаемое значение такое же, как у property.
Но компилятор и в этом случае отказывается компилировать.
КАКОЕ ДЕЛО КОМПИЛЯТОРУ ДО МОИХ АРГУМЕНТОВ???
Ну это же бред!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОИК "Восход"
СообщениеДобавлено: Пятница, 13 Май, 2016 18:16 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
prospero78 писал(а):
Я прекрасно понимаю, как работает property.
Вы это уже говорили, и статью по ссылке читали, но компилятор с вами не согласен.

Ваш код должен выглядеть примерно так:
Код:
PROTECTED
    _Ua:clsKVw;
PUBLIC
    PROPERTY Ua:SINGLE read _Ua.val;
    PROCEDURE SetUa(VAR a:clsKVw);

Либо так:
Код:
PROTECTED
    _Ua:clsKVw;
    PROCEDURE _set_Ua(VAR a:clsKVw);
PUBLIC
    PROPERTY Ua:clsKVw read _Ua write _set_Ua;

Ну, ещё может быть вот так:
Код:
PROTECTED
    _Ua:clsKVw;
PUBLIC
    PROPERTY Ua:clsKVw read _Ua write _Ua;


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 185 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 10  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB