function DumpFileToStringArray(FN: String): array of String; var Buf: String; I, J, oJ: Integer; begin //This uses Buf := DumpFileToString('Build.cfs') + #0; Buf := StringReplace(Buf, #13#10, #0, [rfReplaceAll]); Buf := StringReplaceC(Buf, #13, #0); Buf := StringReplaceC(Buf, #10, #0); J := 0; for I := 1 to Length(Buf) do if Buf[I] = #0 then Inc(J); SetLength(Result, J); I := 0; oJ := 1; for J := 1 to Length(Buf) do if Buf[J] = #0 then begin Result[I] := Copy(Buf, oJ, J - oJ); oJ := J + 1; end; //We injected a line-end at the end, so there's no trailing line to deal with. Buf := ''; end; procedure LoadBuildScript; var ScriptLin: array of String; LI, Lin: Integer; TabLevel: Integer; begin ScriptLin := DumpFileToStringArray('Build.cfs'); for LI := 0 to High(ScriptLin) do begin Lin := Trim(ScriptLin[LI]); if Length(Lin) = 0 then Continue; bContinues := Lin[Length(Lin)] = ':'; if bContinues then SetLength(Lin, Length(Lin)-1); ` end; end;