Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2005-04-24 00:11:56 ЛС | профиль | цитата
AlexKir, перечитал еще раз топик, добавлю кой чего (много Вы понаписали, все корректно с первого раза не схватил)
Важное замечание: IFPS3 не поддерживает типы Pointer и конструкцию class
Так с этого надо было начинать
Бог с ними со скритами в рунтайме , но почему бы не
сделать компонент с возможностью делать прямые
вставки процедуры на паскале в схеме !
Вот это справедливо. Не есть умно делать интерпретатор на то, на чего есть компилятор. Просто черт кроется в мелочах. А именно, макросы сильны тогда, когда нет проблем с интерфейсом. Т.е. принять входные данные и отдать выходные. А по моему пониманию, этот интерфейс (расширенный до почти любых задач) и заложен в элементе.
В погоне за визуальностью все забыли что НiAsm
это надстройка над мощнейшим компилятором

Кто Вам рассказал про "мощнейшесть" имеющихся компиляторов
Как-то обсуждали это на форуме, и я высказывал свое отношение к объему ИИ заложенному в компиляторы. Дельфи образован на уровне шестиклассника, а FPC - не выше третьего
Это ведь ни как не отразится на тех кто незахочет
эту возможность использовать

У меня нет Дельфей. Когда надо разобраться, или слепить свое, нажимаю Ctrl+F на выделенном элементе, редактирую (например отладочный Message вклеиваю), сохраняю, переключаюсь в проект, запускаю (вообще-то чаще компилирую, ибо знаю - все начнется с ошибок синтаксиса )

Не логичнее бы было просто вставить
эту формулу ПРЯМО в код!

Давайте с этого момента совершенно конкретно.
Делаете следующий INI-файл (ElementsconfExpression.ini):
[About]
Version=1.0
Author=Galkov
Mail=Galkov@inbox.ru

[Type]
Class=Element
Info=Мат.выражение

[Methods]
doCalc=Вычислить|1|int
onResult=Результат вычислений|2|
Data=Данные для вычислений|4|int
И пишите следующие коды (ElementscodehiExpression.pas):
unit hiExpression;

interface

uses Kol,Share,Debug;

type
THIExpression = class(TDebug)
private
public

_data_Data:THI_Event;
_event_onResult:THI_Event;

procedure _work_doCalc(var _Data:TData; Index:word);
end;

implementation

procedure THIExpression._work_doCalc;
var Res:real;
begin
Res := ReadReal(_Data, _data_Data, 0);
Res := Sin(Res*5*pi)/Res; // Это Ваша формула
_hi_onEvent(_event_onResult, Res);
end;

end.
И все, этого достаточно. Надеюсь, понятно, где следует писать свою формулу. А назначение всего остального, как и INI-файла, как и неупомянутой иконки - исключительно интерфейсное. Ну вот такой интерфейс получился......
Можно теперь устанавливать эти одинаковые элементики в проект хоть целую толпу. (Правда, чтобы это делать из среды, необходимо его зарегистрировать - прописать в файле Elements.ini)

Рассуждаем дальше. Годится ли такой "шаблон" для канонизации
Вряд ли. Слишком мало степеней свободы. Кому-то захочется иметь нижнюю точку. А кому-то покажется, что верхняя точка - это пижонство. А раз элементов может быть много (так уж устроено в ООП), значит пусть будут параметры, разные для разных экземпляров класса. Есть вопросы нескольких входов и нескольких выходов. Ну и т.д.
Вобщем, надеюсь, что более подробно рассказал смысл фразы:
"Galkov" писал(а):
немножко усовершенствовали идею, добавили к ней иконку, и получилось то, чего сегодня называется ЭЛЕМЕНТ

карма: 9

0