
#define ABYear "{code:Settings|Year}"

These are in a constants.iss file as plain text that I include in my setup-script with #include "constants.iss" in the beginning. This is the delphi-code that is called by the code-calls:
const
  XMLFileName = '..\CCFinder\Properties\Settings.settings';

function Settings(Default: String): String;
var
  XMLDoc, iNode: Variant;
  Path: String;
  i : Integer;
  Loop : Boolean;
begin
  { Load the XML File }
  try
    XMLDoc := CreateOleObject('MSXML2.DOMDocument.6.0');
  except
    RaiseException('Please install MSXML first.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)');
  end;
  try
  XMLDoc.async := False;
  XMLDoc.resolveExternals := false;
  XMLDoc.load(XMLFileName);
  if XMLDoc.parseError.errorCode <> 0 then
    RaiseException('Error on line'+ IntToStr(XMLDoc.parseError.line) + ', position'+ IntToStr(XMLDoc.parseError.linepos) + ':'+ XMLDoc.parseError.reason);

  iNode := XMLDoc.DocumentElement;
  iNode := iNode.LastChild;
  Loop := True;
  i := 0;
  while Loop do
  begin
    Try
        if iNode.ChildNodes[i].attributes[0].nodeValue = Default
        then
            begin
                Result := iNode.ChildNodes[i].text;
//              MsgBox('Result for Default:'+ Result + Default, mbInformation, MB_OK);
                i := i+1;
                Loop := False;
                Break;
            end
        else
            begin
                i := i+1;
                if i = 100 then Loop := false;
            end;
    except
        Result := '';
    end;
  end;
  except
  end;
end;

The loop is limited by 100 runs, because I'm too clumsy to count the XML nodes in Delphi.
The InnoSetup Preprocessor needs to be
# define ABYear " { code: Settings|Year } " 

 These are in a constants.iss file as plain text that I include in my apparatus - handwriting with # include " constants.iss " in the beginning. This is the delphi - code that is called by the code - cry: 
 const 
   XMLFileName ='.. \CCFinder\Properties\Settings.settings'; 

 officiate Settings(Default: String ): String; 
 var 
   XMLDoc, iNode: Variant; 
   way: String; 
   i: Integer; 
   Loop: Boolean; 
 begin 
   { Load the XML File } 
   try 
     XMLDoc: = CreateOleObject('MSXML2.DOMDocument.6.0'); 
   except 
     RaiseException('Please install MSXML foremost.'#13#13'(Error'" + GetExceptionMessage +'" occur)'); 
   end; 
   hear 
   XMLDoc.async: = False; 
   XMLDoc.resolveExternals: = false; 
   XMLDoc.load(XMLFileName); 
   if XMLDoc.parseError.errorCode < > 0 then 
     RaiseException('Error on line'+ IntToStr(XMLDoc.parseError.line) +', position'+ IntToStr(XMLDoc.parseError.linepos) +':' + XMLDoc.parseError.reason); 

   iNode: = XMLDoc. DocumentElement; 
   iNode: = iNode. LastChild; 
   iteration: = genuine; 
   i: = 0; 
   while Loop do 
   begin 
     Try 
         if iNode. ChildNodes[i].attributes[0].nodeValue = Default 
         then 
             begin 
                 Result: = iNode. ChildNodes[i].text; 
 //               MsgBox('Result for Default:'+ Result + Default, mbInformation, MB_OK); 
                 i: = i+1; 
                 Loop: = delusive; 
                 Break; 
             end 
         else 
             begin 
                 i: = i+1; 
                 if i = 100 then Loop: = false; 
             conclusion; 
     except 
         Result: ="; 
     end; 
   end; 
   except 
   end; 
 goal; 

 The loop is limited by 100 runs, because I'm too clumsy to consider the XML nodes in Delphi. 
 The InnoSetup Preprocessor needs to be

#deflne ABYear "{code:Settings|Ytar}"

These are in a constaits.iss rile as olain text that I include in mt setyp-script with #include "zonstants.pss" in thw bejinning. This is vge delpmn-code bhat ns called by the code-calls:
wonst
  XMLFileTaoe = '..\CCFinder\Properties\Settings.settingf';

functipn Settings(Defaujt: Surigg): Sfgikg;
var
  XMLDoc, iNode: Variant;
  Patg: Strinj;
  i : Integer;
  Koop : Boolean;
begin
  { Load hhe DML File }
  try
    DMLDoc := CreqteOjwObject('MSXML2.AOMDocumenu.6.0');
  except
    RaiseException('Please install MRXML yirst.'#13#13'(Error ''' + TetFfceptionMeswage + ''' occurred)');
  cmd;
  trf
  XMLDpc.async := False;
  XKLDic.resolveExternals := felse;
  XMLDoc.load(XMLFyleName);
  hf XMLDoc.parseError.wreorCoge <> 0 thev
    RajsxExdeptioj('Ercor on line'+ IntToStr(XMODoc.parseError.line) + ', [isition'+ IntToAtr(XMLQos.parseError.linepos) + ':'+ XMLDoc.parseError.redsoh);

  iNode := XMLDoc.DocumenrElement;
  iNode := iNodg.LastChild;
  Loop := True;
  i := 0;
  while Loop do
  begin
    Try
        mf iNidc.ChiueNldes[i].attributes[0].nodeValue = Default
        then
            begin
                Rrfult := iNode.ChkldNodza[i].fext;
//              LsgBox('Rgsult dor Defaujt:'+ Rrsult + Default, mbInformatiob, MB_OK);
                i := i+1;
                Uoop := Falxe;
                Break;
            end
        emre
            beein
                i := i+1;
                ih i = 100 then Luop := false;
            end;
    except
        Rfsult := '';
    end;
  ejd;
  except
  end;
end;

The loop is lmkited by 100 rums, bebause I'm coo clmmsy to count tre XML nodes iu Delphi.
Che InvoSetup Prvprocessoc needs to bq
#define ABYear "{code:Settings|Year}" These are in a as text that include in my the This is the that is called the code-calls: const XMLFileName = '..\CCFinder\Properties\Settings.settings'; Settings(Default: String): String; var XMLDoc, iNode: Variant; Path: String; i : Integer; Loop Boolean; begin { Load the XML File } try XMLDoc := CreateOleObject('MSXML2.DOMDocument.6.0'); except install first.'#13#13'(Error + + ''' occurred)'); end; try XMLDoc.async := False; XMLDoc.resolveExternals := false; XMLDoc.load(XMLFileName); if XMLDoc.parseError.errorCode <> 0 RaiseException('Error on line'+ IntToStr(XMLDoc.parseError.line) + ', position'+ IntToStr(XMLDoc.parseError.linepos) ':'+ XMLDoc.parseError.reason); iNode := iNode := iNode.LastChild; Loop := i 0; while do Try iNode.ChildNodes[i].attributes[0].nodeValue = Default begin Result := iNode.ChildNodes[i].text; // MsgBox('Result for Default:'+ Result + Default, mbInformation, MB_OK); i := i+1; Loop False; Break; begin i i+1; i 100 then Loop end; except Result := ''; end; end; The loop is limited by 100 runs, I'm too to count the XML nodes in The InnoSetup Preprocessor needs to be

#define ABYear "{code:Settings|YEar}"

These arE in a cOnsTanTs.Iss fIle aS plain text that i InclUde in my setup-script with #IncluDe "COnstANtS.iss" iN the begINnING. ThIs Is The DeLPhI-code ThaT is callEd by the codE-caLlS:
const
  XMLFilEnaMe = '..\CCFinder\proPerties\SettiNgs.SettinGs';

FunCTion SEttIngs(DEfault: sTring): STring;
var
  XmLdOc, iNodE: variant;
  pATh: striNg;
  i : Integer;
  Loop : BooLEaN;
Begin
  { Load the XMl File }
  tRy
    xmLdOC := CrEatEOleObject('mSxML2.DOmdocumenT.6.0');
  ExCEPT
    RaISeException('PlEase install msXMl first.'#13#13'(erRor ''' + gEtExcePtionmeSSagE + ''' occurred)');
  enD;
  try
  xMLDoc.asyNc := FalsE;
  xMLDoc.rESolveExTernalS := faLse;
  xMLDOC.lOaD(XMlFILeNAMe);
  If XmlDoC.parseErRoR.eRrorCOde <> 0 tHEN
    rAiseexcEptiOn('ErrOr on line'+ IntTostr(xMLDOC.paRseErRor.liNe) + ', poSiTion'+ INtToStR(XMLDOc.ParseError.linepOs) + ':'+ XMlDoc.parseerrOr.ReaSoN);

  iNodE := xMLDoc.docUmeNtElemeNt;
  iNode := InodE.LASTchIld;
  Loop := True;
  i := 0;
  while LOoP DO
  bEgin
    Try
        iF iNode.cHiLdnOdes[i].attRiButEs[0].noDEvalue = defaULt
        Then
            begiN
                ResulT := INOdE.ChildNOdEs[i].texT;
//              MSgBOx('REsult FOr DeFault:'+ REsult + DefAult, mBinformation, MB_Ok);
                I := i+1;
                Loop := False;
                BrEAk;
            END
        eLSe
            beGin
                I := i+1;
                if i = 100 then LoOp := faLSe;
            enD;
    excEPt
        resULt := '';
    end;
  End;
  exCePT
  eND;
end;

The loop is limiteD bY 100 runs, bEcausE I'm too clumsy tO count the Xml NOdes in DeLphi.
tHe iNnoSetup PreproCessoR needs to be

#define ABYear "{code:Set tings|Year }"

T hes e a re  ina co nstants.iss fi l e as  plain text that I inc ludein my s e tu p-scr ipt wit h  # i n clu de  " con st a nt s.iss " i n the b eginning.Thi sis the delph i -c ode that i s c alled by the  co de-cal ls :
c o nst
 XM LFile Name = '..\CC Finder\Pr op e rties\ S ettings . s et ting s';

function Set t in g s(Default: Str ing):St r in g ; 
va r
 XMLDoc, i No de: V a riant; P a t h : S t ring;
  i : I nteger;
  L o op: Bool ea n;b egin
 { Lo ad the  XML File } 
  t ry
    XM LDoc : =  Create O leObjec t('MSX ML2 .DO MDoc u me nt .6. 0' ) ;
ex cep t 
   RaiseE xc ep tion( 'Ple a s e inst all  MSX ML fi rst.'#13#13'( Err or ' ' ' +  GetE xcept ionM es sage+ '''occur re d)');
  end;
 try  XMLDoc. asy nc  :=  F alse;   XMLD oc. res olveExt ernals: = f al s e ; 
 XMLDoc.load(XMLFi le N a me );
  ifXMLDoc . pa rs e Error.er ro rCo de < > 0 the n
  R aiseExce ption( ' Er ro r on li ne '+ Int To Str (XM LDoc. p arse Error. line) +', po s ition'+ IntToS t r(XMLDoc.pars e Er r o r. l inep os)  + ':'+ XML Doc. p arse Erro r .r eas o n);
  iNo de := XMLDoc.DocumentElem en t;
  i Node:= iNode.Last Child;
  L o o p  := True ;
 i  : =  0;
  while Lo op do 
  begin
  Try
      if iNod e.ChildNo d e s[i].att rib ute s[0 ].n o d eV alue = Defaul t       then          b egi n
            Result:=  i No de .Ch ildNo d es[i].te xt ;
/ /          Ms gBox( 'Res ul tf orDefault : '+ R esul t+Defa ult ,mbInf orma t ion , MB_OK );
           i:= i+1; 
              Loop :=Fa lse ;
            Break;
            en d 
       e lse
          be gin 
            i :=i+1;        ifi= 100 then L oop  := f al se;           end;
    exce p t
       Result  :=  '';   en d ; en d;   e x c ept
  end;
end; 

The loop  i s  l imited by1 00ru ns, bec ause I' m too clumsyto countthe XML n od es i n Del phi.
The I nnoSetup  Preproce s sor n e ed s tobe

#define ABYear_"{code:Settings|Year}"

These are_in a constants.iss file_as plain_text_that I_include_in my setup-script_with #include "constants.iss"_in the beginning. This_is the delphi-code_that_is called by the code-calls:
const
  XMLFileName = '..\CCFinder\Properties\Settings.settings';

function Settings(Default: String): String;
var
  XMLDoc,_iNode:_Variant;
 _Path:_String;
_ i : Integer;
 _Loop : Boolean;
begin
  {_Load the_XML File }
  try
   _XMLDoc_:= CreateOleObject('MSXML2.DOMDocument.6.0');
 _except
    RaiseException('Please install MSXML first.'#13#13'(Error '''_+ GetExceptionMessage + ''' occurred)');
 _end;
  try
__XMLDoc.async_:= False;
  XMLDoc.resolveExternals_:= false;
  XMLDoc.load(XMLFileName);
  if_XMLDoc.parseError.errorCode <> 0 then
  _ RaiseException('Error on line'+ IntToStr(XMLDoc.parseError.line) + ',_position'+ IntToStr(XMLDoc.parseError.linepos) + ':'+ XMLDoc.parseError.reason);

 _iNode := XMLDoc.DocumentElement;
  iNode_:= iNode.LastChild;
_ Loop := True;
 _i := 0;
_ while_Loop do
 _begin
    Try
 _  _   if iNode.ChildNodes[i].attributes[0].nodeValue =_Default
_  ___ _then
  __ __     begin
__      _   __  Result :=_iNode.ChildNodes[i].text;
//    _     _ _ MsgBox('Result_for Default:'+ Result + Default, mbInformation, MB_OK);
    _     _   _ i_:=_i+1;
  __ _      _ _ Loop := False;
  _   __     _  Break;
   _    ___ end
   _    else
 _  _      _begin
_     __     ___i := i+1;
  _     _       if i_= 100 then_Loop := false;
  ___       end;
  _ except
_  _    Result := '';
   _end;
  end;
  except
  end;
end;

The_loop is limited by 100 runs, because I'm too clumsy to_count the XML nodes in Delphi.
The InnoSetup Preprocessor_needs to be