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

Вниз

Макросы   Найти похожие ветки 

 
olookin ©   (2002-12-13 13:02) [0]

Первичная процедура обработки сроки

procedure TMacroModule.MacroCommand(var CommandString: Ansistring);
var pars: TStringArray;
equ,a,s: Ansistring;
n,p,x: integer;
id: TIntegerArray;
begin
RVar:=0; equ:=CommandString; n:=DetectEqualization(equ,id);
if n<>-1 then Delete(CommandString,1,Pos("=",CommandString));
CommandString:=Trim(CommandString);
SquareBracketCalc(CommandString,CommandString);
BracesCalc(CommandString,CommandString);
RoundBracketCalc(CommandString,CommandString);
a:=Trim(CommandString);
if (Pos("(",a)<>0) and (Pos(")",a)<>0) then begin
Delete(a,1,Pos("(",a)); Delete(a,Pos(")",a),Length(a)); x:=0;
while a<>"" do begin p:=Pos(",",a);
if p<>0 then begin s:=Trim(Copy(a,1,p-1)); Delete(a,1,p); end else begin
s:=Trim(a); a:=""; end;
if s<>"" then begin SetLength(pars,x+1); pars[x]:=s; Inc(x); end; end; end;
a:=LowerCase(CommandString);
if n<>-1 then begin Ind:=n;
if Length(pars)=0 then PerformEqualization(Ind,a,id); end;
AllFunctions(a,pars); pars:=nil; id:=nil;
end;


 
Игорь Шевченко ©   (2002-12-13 13:05) [1]

Как прикажешь тебя понимать, Саид ? (с) Белое солнце пустыни


 
olookin ©   (2002-12-13 13:06) [2]

Какой вопрос не ясен?


 
olookin ©   (2002-12-13 13:06) [3]

Есть строка CommandString с ней работаю


 
olookin ©   (2002-12-13 13:09) [4]

procedure TMacroModule.MacroCommand(var CommandString: Ansistring);
var pars: TStringArray;
equ,a,s: Ansistring;
n,p,x: integer;
id: TIntegerArray;
begin
RVar:=0; equ:=CommandString;
проверка на равенство (например A = CalcMinValue(Q, 0, 100))
n:=DetectEqualization(equ,id);
if n<>-1 then Delete(CommandString,1,Pos("=",CommandString));
CommandString:=Trim(CommandString);
проверка скобок []
SquareBracketCalc(CommandString,CommandString);
проверка скобок {}
BracesCalc(CommandString,CommandString);
проверка скобок ()
RoundBracketCalc(CommandString,CommandString);
a:=Trim(CommandString);
if (Pos("(",a)<>0) and (Pos(")",a)<>0) then begin
Delete(a,1,Pos("(",a)); Delete(a,Pos(")",a),Length(a)); x:=0;
while a<>"" do begin p:=Pos(",",a);
if p<>0 then begin s:=Trim(Copy(a,1,p-1)); Delete(a,1,p); end else begin
s:=Trim(a); a:=""; end;
if s<>"" then begin SetLength(pars,x+1); pars[x]:=s; Inc(x); end; end; end;
a:=LowerCase(CommandString);
if n<>-1 then begin Ind:=n;
if Length(pars)=0 then PerformEqualization(Ind,a,id); end;
AllFunctions(a,pars); pars:=nil; id:=nil;
end;


 
Anatoly Podgoretsky ©   (2002-12-13 13:10) [5]

Используй стек


 
Anatoly Podgoretsky ©   (2002-12-13 13:11) [6]

Да и тебе говорили при помещении вопроса в форум, описиш что ты хочешь сделать, приведи образцы входных данных, иначе будешь ты "Саид"


 
olookin ©   (2002-12-13 13:15) [7]

To Anatoly Podgoretsky

Справедливо
Итак макрос

D = Window{1}.Fmus[CalcMaxValue(Window{1}.Afterload]
A = CalcMinValue(Window{1}.Lm, 0, 1000)
B = CalcMeanValue(Window{1}.Afterload[3], A[5], D[100])
Message(B[6])

Как решить?


 
Oldman ©   (2002-12-13 13:21) [8]

Попробуй обработать строку по приоритету вложенности:
Пример: есть a(b[c{}],d[])
Естественно, обработав строку и выяснив приоритеты получаем:
a(b[c{}],d[]) Вычислить d[]=D
a(b[c{}],D) Вычислить c{}=D
a{b[C],D) Вычислить b[C]=B
a(B,D) Dsxbckbnm a(B,D)=A
A



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
14-74933
Сатир
2002-12-01 20:53
2002.12.23
Исходящие на шару?


6-74863
karu
2002-06-13 19:41
2002.12.23
Пакеты.


4-75046
dokkk
2002-11-09 23:07
2002.12.23
Как по ID процесса определить FileName


1-74801
PaRL
2002-12-08 14:18
2002.12.23
Частота и имя процессора


6-74881
DarkRus
2002-10-25 16:34
2002.12.23
Download из интернета