Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.014 c
14-74901
Николай Быков
2002-12-01 12:02
2002.12.23
Посоветуйте принтер до 3000 рублей, но можно и до 3500 р.


7-75009
olphi
2002-10-20 15:50
2002.12.23
Как узнать путь каталога Windows?


1-74827
abcccc
2002-12-11 20:44
2002.12.23
Автозапуск программы


3-74548
De2
2002-12-04 00:03
2002.12.23
о формате dbase IV


7-75021
turonix
2002-10-17 13:01
2002.12.23
Как получить идентификатор окна кнопки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский