![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 11.05.2007
Сообщений: 8
|
![]()
Научите, пожалуйста, пользоваться сабжем. По хелпу, вроде бы, должно работать вот это:
Var st:String; ... FindVariable('st'):='aaa'; ... Но Delphi при компиляции говорит, что переменная "FindVariable" не объявлена :-( А как и где ее объявлять? Моя задача - на этапе работы проги иметь возможность обращаться к некоторым ее переменным, к примеру, набирая эту переменную в Edit-е. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
![]()
Совет. Поставь компонент CalcExpress (найдешь при желании). Там в Edit можно вводить не только переменные, но и формулы (включая переменные). Всего 18 действий (в т.ч. sin, cos и т.п.). Я не раз пытался написать функцию перевода строки в формулу пока не наткнулся на этот компонент.
|
![]() |
![]() |
![]() |
#3 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
![]()
ну и st точно без кавычек ..
Берегите друг друга!
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 11.05.2007
Сообщений: 8
|
![]()
_SERGEYX_, математические действия мне, как раз, не нужны. У меня терминальная прога, которая выводит на экран текстовую информацию, поступающую через COM порт. Вот эту-то инфу мне бы и обрабатывать... Причем, обрабатывать сегодня так, а через месяц, возможно, эдак. Хотелось бы не перекомпилировать каждый раз. Напрашивается идея - использовать, например, Memo для ввода нескольких функций - DELETE, COPY, INSERT, POS, IF...THEN..., а прогу научить распознавать знакомые слова. Но проблема с переменными - я ввожу в Memo, к примеру S:=Copy(D,1,2), в программе S и D объявлены, как String, как мне к ним перейти?
Virtson, если брать аналогичное "FindComponent", то там, как раз с кавычками и все работает. Как-то эту беду нужно объявить... |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 30.03.2007
Сообщений: 124
|
![]()
Sergey2007? тебе придется написать пол компилятора, вообще то для подобных вещей были придуманы динамические библиотеки (меняеш/добавляеш библиотеку и все считает по другому), а так если юзер в програмировании ноль что он будет прописывать?
Из помощи: функция FindVariable Возвращает элемент из этого списка с указанным именем переменной. Синтаксис Delphi: функция FindVariable(константа AName: строка): TComponent; Описание Метод FindVariable вызван из серверного сценария, чтобы разместить поле или действие с указанным именем. Этот метод идентичен методу FindNamedVariable, за исключением того, что это не виртуально. Вместо этого, FindVariable вызывает виртуальный метод FindNamedVariable. AName - это имя переменной. FindNamedVariable возвращает элемент из списка с указанным именем переменной. Если ни один из элементов в списке не имеет имени AName, FindNamedVariable возвращает nil. Отсюда следует что с ее помощью присвоить значение строке нельзя. Так что твоя задумка только через If ... then или читаль литературу о написании компиляторов... ![]() Спасибо не нужно, а на весы слева кликнуть не помешает!!! Последний раз редактировалось mrandrey; 11.07.2007 в 10:35. |
![]() |
![]() |
![]() |
#6 |
Регистрация: 11.05.2007
Сообщений: 8
|
![]()
Да нет, dll-ами тут не обойдешься. Ситуёвина может меняться чаще, чем я их буду писать. К тому же, хочется сделать универсальную прогу, подходящую не только к моей станции. У оригинальной программы, идущей в комплекте с АТэЭсиной, для этих целей используются скрипты (хрен редьки не слаще), которые, к тому же, много чего не позволяют – собственно, поэтому и ковыряюсь помаленьку. Полкомпилятора мне и не нужно, надеюсь обойтись максимум десятком функций.
Сообразил я, как обойти этот гемор с переменными, буду просто назначать их динамически из какого-то массива, имея другой массив для указания соответствия. |
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 02.07.2007
Сообщений: 23
|
![]()
Советую вместо компилятора (Delphi, C) использовать интерпретаторы, которые не создают бинарный код, например Perl.
Там есть замечательная функции типа eval: Цитата:
Проекты для лучших программистов http://www.netlancer.ru
|
|
![]() |
![]() |