Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2007, 17:21   #1
Sergey2007
 
Регистрация: 11.05.2007
Сообщений: 8
По умолчанию FindVariable

Научите, пожалуйста, пользоваться сабжем. По хелпу, вроде бы, должно работать вот это:

Var
st:String;
...
FindVariable('st'):='aaa';
...

Но Delphi при компиляции говорит, что переменная "FindVariable" не объявлена :-( А как и где ее объявлять?
Моя задача - на этапе работы проги иметь возможность обращаться к некоторым ее переменным, к примеру, набирая эту переменную в Edit-е.
Sergey2007 вне форума Ответить с цитированием
Старый 10.07.2007, 18:28   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Совет. Поставь компонент CalcExpress (найдешь при желании). Там в Edit можно вводить не только переменные, но и формулы (включая переменные). Всего 18 действий (в т.ч. sin, cos и т.п.). Я не раз пытался написать функцию перевода строки в формулу пока не наткнулся на этот компонент.
_SERGEYX_ вне форума Ответить с цитированием
Старый 10.07.2007, 19:06   #3
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

ну и st точно без кавычек ..
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 10.07.2007, 19:47   #4
Sergey2007
 
Регистрация: 11.05.2007
Сообщений: 8
По умолчанию

_SERGEYX_, математические действия мне, как раз, не нужны. У меня терминальная прога, которая выводит на экран текстовую информацию, поступающую через COM порт. Вот эту-то инфу мне бы и обрабатывать... Причем, обрабатывать сегодня так, а через месяц, возможно, эдак. Хотелось бы не перекомпилировать каждый раз. Напрашивается идея - использовать, например, Memo для ввода нескольких функций - DELETE, COPY, INSERT, POS, IF...THEN..., а прогу научить распознавать знакомые слова. Но проблема с переменными - я ввожу в Memo, к примеру S:=Copy(D,1,2), в программе S и D объявлены, как String, как мне к ним перейти?

Virtson, если брать аналогичное "FindComponent", то там, как раз с кавычками и все работает. Как-то эту беду нужно объявить...
Sergey2007 вне форума Ответить с цитированием
Старый 11.07.2007, 10:07   #5
mrandrey
Форумчанин
 
Регистрация: 30.03.2007
Сообщений: 124
По умолчанию

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

Из помощи:

функция FindVariable

Возвращает элемент из этого списка с указанным именем переменной.
Синтаксис Delphi:

функция FindVariable(константа AName: строка): TComponent;

Описание
Метод FindVariable вызван из серверного сценария, чтобы разместить поле или действие с указанным именем. Этот метод идентичен
методу FindNamedVariable, за исключением того, что это не виртуально. Вместо этого, FindVariable вызывает виртуальный метод
FindNamedVariable.
AName - это имя переменной.
FindNamedVariable возвращает элемент из списка с указанным именем переменной. Если ни один из элементов в списке не имеет
имени AName, FindNamedVariable возвращает nil.

Отсюда следует что с ее помощью присвоить значение строке нельзя.

Так что твоя задумка только через If ... then или читаль литературу о написании компиляторов...
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!!

Последний раз редактировалось mrandrey; 11.07.2007 в 10:35.
mrandrey вне форума Ответить с цитированием
Старый 13.07.2007, 08:04   #6
Sergey2007
 
Регистрация: 11.05.2007
Сообщений: 8
По умолчанию

Да нет, dll-ами тут не обойдешься. Ситуёвина может меняться чаще, чем я их буду писать. К тому же, хочется сделать универсальную прогу, подходящую не только к моей станции. У оригинальной программы, идущей в комплекте с АТэЭсиной, для этих целей используются скрипты (хрен редьки не слаще), которые, к тому же, много чего не позволяют – собственно, поэтому и ковыряюсь помаленьку. Полкомпилятора мне и не нужно, надеюсь обойтись максимум десятком функций.
Сообразил я, как обойти этот гемор с переменными, буду просто назначать их динамически из какого-то массива, имея другой массив для указания соответствия.
Sergey2007 вне форума Ответить с цитированием
Старый 15.07.2007, 00:26   #7
Sergey_nl
Пользователь
 
Регистрация: 02.07.2007
Сообщений: 23
По умолчанию

Советую вместо компилятора (Delphi, C) использовать интерпретаторы, которые не создают бинарный код, например Perl.
Там есть замечательная функции типа eval:
Цитата:
Функция осуществляет анализ и выполнение выражения EXPR, как если бы оно представляло собой автономную программу на Perl. Однако выполнение производится в контексте текущей исполняемой программы, что позволяет использовать любые переменные, подпрограммы и определения форматов, которые используются в данной программе. Значение, возвращаемое функцией, представляет собой значение последнего выражения внутри eval.
Проекты для лучших программистов http://www.netlancer.ru
Sergey_nl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц