Man kann die for-Schleife noch los werden, und das andere Problem evtl. wie folgt lösen:
Delphi-Quellcode:
for l := 1 to length(s) do //string entschlüsseln (i ist der key der getestet wird)
s[l] := char(i Xor ord(s[l]));
if w.Strings.IndexOf(s) > 0 then
begin
//was halt bei einem Fund gemacht werden soll
end
else
for i := length(s)-1 downto 1 do
begin
t := Copy(s, 1, i);
if w.Strings.IndexOf(t) > 0 then
begin
//was bei einem Teilfund gemacht werden soll
end;
end;
Durch das downto erreichen wir, dass die längsten Teilstrings zu erst gefunden werden. Length(s)-1, weil wir nach dem kompletten String ja bereits gesucht haben.