Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизКак запустить процедуру Найти похожие ветки
← →
SKIPtr (2007-05-12 16:23) [0]Драсте. Делаю программу, которая должна работать по сценарию, написанному в файле (скорей в текстовом). Как запустить процедуру, имя которой в этом файле. А также изменить свойство компонента, который указан в файле
← →
DVM © (2007-05-12 16:29) [1]Сценарий кто исполнять то будет?
← →
>>DEATH<< (2007-05-12 16:31) [2]ну к примеру через case of
← →
>>DEATH<< (2007-05-12 16:33) [3]ну к примеру через case of
← →
SKIPtr (2007-05-12 18:06) [4]После case идёт переменная, Что там должно быть, если у меня есть напр. Если s = ‘MyProc’ нужно запустить процедуру с именем MyProc
← →
SKIPtr (2007-05-12 18:16) [5]После case идёт переменная, Что там должно быть, если у меня есть напр. Если s = ‘MyProc’ нужно запустить процедуру с именем MyProc
← →
Anatoly Podgoretsky © (2007-05-12 21:38) [6]> SKIPtr (12.05.2007 18:16:05) [5]
Тут IF нужен2озникновения исключения в данном случае выше, вплоть до полного зависания системы.
← →
DVM © (2007-05-12 21:56) [7]
> Anatoly Podgoretsky © (12.05.07 21:38) [6]
Чего то 2 поста из разных веток склеились вроде.
← →
SKIPtr (2007-05-12 22:00) [8]Получается если у меня i процедур, то надо i раз выполнить IF
← →
DVM © (2007-05-12 22:05) [9]
> SKIPtr (12.05.07 22:00) [8]
case не работает со строками. Только с порядковыми типами.
← →
homm © (2007-05-12 22:14) [10]> Получается если у меня i процедур, то надо i раз выполнить IF
Есть еше способ. Создаешь заранее хэш нужных тебе имен функций, и записываешь их вместе с точками входа. При необходимости вызвать считаешь хэш нужного тебе имени и сравниваешь с заготовленными загодя. Нашел - вперед наточку входа.
← →
Anatoly Podgoretsky © (2007-05-12 22:15) [11]> SKIPtr (12.05.2007 22:00:08) [8]
Не обязательно, if можно применять к списку, например TStringList
← →
Loginov Dmitry © (2007-05-12 23:59) [12]> Как запустить процедуру, имя которой в этом файле.
Используй вот такой скелет:
unit Unit2;
interface
uses
Classes;
type
TProc = procedure;
procedure RegisterProc(AProc: TProc; const ProcName: string);
function ProcByName(const ProcName: string): TProc;
implementation
var
AList: TStringList;
procedure RegisterProc(AProc: TProc; const ProcName: string);
begin
if AList.IndexOf(ProcName) < 0 then
AList.AddObject(ProcName, TObject(@AProc));
end;
function ProcByName(const ProcName: string): TProc;
var
I: Integer;
begin
I := AList.IndexOf(ProcName);
if I >= 0 then
Result := TProc(AList.Objects[I])
else
Result := nil;
end;
procedure Proc1;
begin
end;
procedure Proc2;
begin
end;
procedure Proc3;
begin
end;
initialization
AList := TStringList.Create;
finalization
AList.Free;
end.
Доработай его под свои нужды.
← →
Leonid Troyanovsky © (2007-05-13 10:26) [13]
> SKIPtr (12.05.07 18:16) [5]
> меня есть напр. Если s = ‘MyProc’ нужно запустить процедуру
> с именем MyProc
http://rsdn.ru/Forum/Message.aspx?mid=476748&only=1
--
Regards, LVT.
← →
SKIPtr (2007-05-13 10:27) [14]Этот вариант для меня хороший
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c