Ich denke, gemeint mit der Lösung ist die For-While Schleife mit Continue?
Eigentlich zielte ich eher auf die Rekursion hin. Also in etwa so:
Delphi-Quellcode:
function TForm1.bruteforce(astring:
string;substr:
string; startlen: integer; endlen: integer):LongInt;
procedure CheckURL(
const url:
string);
begin
spider.Initialize(urlk);
spider.CrawlNext();
Edit1.Text := Spider.LastUrl;
Edit2.Text := Spider.LastHtmlTitle;
If Edit2.Text = '
Vorhanden'
then begin
Memo4.Lines.Add (Edit1.Text);
end;
end;
Procedure TesteString(
const Basis:
string);
var
npw:
string;
I: Integer;
begin
for I := 1
to Length(astring)
do begin
npw := Basis + astring[I];
if startlen <= Length(npw)
then begin
CheckURL(urls + npw);
end;
{ Abbruchbedingung }
if Length(npw) < endlen
then begin
{ hier probieren wir dann ein Zeichen mehr }
TesteString(npw);
end;
end;
end;
var
I: Integer;
begin
For I := 1
to length(substr)
do begin
TesteString(substr[I]);
end;
end;
Bei solchen Rekursionen muss man zwar auf seinen Stack aufpassen, aber da der Parameter als const übergeben wird, der lokale string auf dem Heap angelegt wird und die Rekusionstiefe maximal
endlen
ist sollte das kein Problem werden. Diese Lösung verbraucht fast gar keinen Speicher.