pascalscript и есть ремобьект..
Но он Вам не подойдёт - там строкой задаётся только имя функции, а список аргументов передаётся через
открытый массив.
Модератор: Модераторы
svk12 писал(а):Но он Вам не подойдёт - там строкой задаётся только имя функции, а список аргументов передаётся через
открытый массив.
svk12 писал(а):pascalscript и есть ремобьект
absdjfh писал(а):К функции однозначно обращаются по адресу в памяти. String - простая формальность, для удобства программиста. А в паскале string и идентификаторы разделены и трудноприводимы друг к другу. Процедура - это даже не тип данных паскаля (по крайней мере, про указатели на процедуры я не слышал, и не представляю, как узнать адрес процедуры внутри программы).
Дальше ничего не знаю. Возможно, нужно использовать ассемблер, или ищите скрипт. А, может, можно обойтись без этого?
Kitayets писал(а):адрес процедуры/функции в программе определяется - одинаково просто
Kitayets писал(а):обратите внимание на на метод MethodAddress(name: string)
alexey38 писал(а):Я уверен, что вы ищете неверный путь решения простой задачи.
SAK писал(а):Весь вопрос в том, правильно ли задан вопрос этим самым Мастерам. Образно: стоит задача выйти из комнаты, но "обучающийся" вместо вопроса "как выйти из комнаты?" спрашивает "как пробить стену?" и получает соответствующий ответ. Именно такое впечатление возникает после прочтения Вашего вопроса. В откомпилированной программе НИГДЕ не хранятся исходные имена переменных, процедур и функций, поэтому обратиться к ним по имени просто невозможно. А что бы реализовать такую возможность надо каждой переменной, процедуре и функции создать связь её текстового имени и физического адреса и где-то сохранить эту таблицу. Потом при попытке обратится по имени к такой функции или переменной надо найти её имя в таблице и обратиться по указанному там адресу. Т.е. времени на поик и оращению к нужной области памяти будет затрачиваться больше чем на выполнение полезных функций, зачем это надо?
vitaly_l писал(а):Остаётся выяснить физические адреса функций и как к ним обращаться?!...
type TProcedure = Procedure;
var p: array[0..1] of TProcedure;
i: integer;
procedure pp1;
begin
writeln('Процедура 1');
end;
procedure pp2;
begin
writeln('Процедура 2');
end;
begin
p[0]:=@pp1;
p[1]:=@pp2;
for i:=0 to 1 do p[i];
end.
vitaly_l писал(а):Возможно это то, что хранится в PropInfo??? (см. выше (RTTI))
SAK писал(а): используется оператор взятия адреса "@"
vitaly_l писал(а):string... запускать функцию должен string... типа как в скриптах делают...
Мне бы вначале, самому, определиться: что есть что... что есть функция, а что метод классов? <=== правдивый юмор...SAK писал(а):Вы сначала определитесь с тем, к чему именно надо обращаться по имени: переменным, процедурам, функциям или методам классов.
vitaly_l писал(а):Почему автор, парсера - никогда не ставит символ ===> ; <=== в конце функций и в случае: end end; ???!!!...
vitaly_l писал(а):что есть функция, а что метод классов?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 229