Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

Как запустить процедуру   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
2-1178994617
FIL-23
2007-05-12 22:30
2007.06.03
работ с edit


2-1178898796
M1sT
2007-05-11 19:53
2007.06.03
Ошибка при выполении SQL запроса....


15-1178473877
Knight
2007-05-06 21:51
2007.06.03
Тут кто-нить змеев делал?


15-1178188268
Иксик
2007-05-03 14:31
2007.06.03
Что за ерунда, на могу добавить пост!!!


2-1178970944
Strate
2007-05-12 15:55
2007.06.03
Exeption внутри Thread