Главная страница
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.018 c
1-74677
Fernis
2002-12-13 04:30
2002.12.23
Подскажите, как правильно сохранять свой объект в файл


1-74681
Che
2002-12-13 12:54
2002.12.23
Active !!


1-74828
dm
2002-12-11 12:07
2002.12.23
Delphi + Prolog = ?


1-74756
Yr2
2002-12-13 14:13
2002.12.23
Прошу мастеров проконсультировать по сложному вопросу


1-74821
BlackTiger
2002-12-10 20:41
2002.12.23
Как получить ВСЕ Caption ы контролов на форме?