(* Имплантируемый модуль
procedure ConMacro(var S : String);
function SiCoMe(var C : String) : boolean;
*)
{ ConMacro : S - строка с вызовами макроподстановок }
{ Res = S строка после подстановок }
procedure ConMacro(var S : String);
var I,K,L,M : integer;
T,C : String;
H : ^String;
begin L:=Length(S);
repeat
I:=0;
K:=0;
while (I < CkoIndMem) and (K = 0) do begin
I:=I+1;
H:=AdrIndMem^[I];
C:=NumbStr(1,H^);
K:=-1;
if Fin_Str(T,C) then { H^ = 'SET ИМЯ +ЗНАЧЕНИЕ+' ? }
if T = 'SET' then
if Fin_Str(T,C) then
if C = '' then K:=Pos(T,S)
end;
if 0 < K then begin { T = ИМЯ }
M:=Length(T);
C:=NumbStr(2,H^); { C = ЗНАЧЕНИЕ }
L:=L-M+Length(C);
S:=Copy(S,1,K-1)+C+Copy(S,K+M,255)
end
until (K <= 0) or (255 < L) end;
{ SiCoMe : C - имя параметра для поиска в ExtMemory }
{ Res = FALSE, если параметр не найден }
{ TRUE , если параметр найден + С - его значение }
function SiCoMe(var C : String) : boolean;
var I : integer;
R : ^String;
begin for I:=CkoIndMem downto 1 do begin
R:=AdrIndMem^[I];
if NumbStr(1,R^) = C then begin
SiCoMe:=true;
C:=NumbStr(2,R^);
ConMacro(C);
Exit
end
end;
SiCoMe:=false end;
|