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.
Ich musste 2x lesen:)
Erstmal vielen vielen Dank für die Mühe, mir eine konkrete Lösung hinzuschreiben :thumb:
Also nachdem ich es jetzt geschafft habe, diese Prozeduren richtig zu deklarieren und TForm1 davorzumachen, musste ich es etwas drehen, weil er sonst einen Fehler gebracht hat (; erwartet aber . gefunden bei TForm1"."CheckURL):
Allerdings ist noch irgendein Fehler drin?
Delphi-Quellcode:
function TForm1.bruteforce(astring:
string;substr:
string; startlen: integer; endlen: integer):LongInt;
{das hier hab ich nach oben}
var
I: Integer;
begin
For I := 1
to length(substr)
do begin
TesteString(substr[I]);
end;
end;
procedure TForm1.CheckURL(
const url:
string);
begin
//spider.Initialize(urlk);
// spider.CrawlNext();
showmessage ('
CheckURL');
Edit1.Text := Spider.LastUrl;
Edit2.Text := Spider.LastHtmlTitle;
If Edit2.Text = '
Vorhanden'
then begin
Memo4.Lines.Add (Edit1.Text);
end;
end;
procedure TForm1.TesteString(
const Basis:
string);
var
npw:
string;
I: Integer;
begin
// Showmessage ('works'); //Message kommt
for I := 1
to Length(astring)
do begin
npw := Basis + astring[I];
// showmessage (npw); //Message kommt nicht
if startlen <= Length(npw)
then begin
CheckURL(urls + npw);
end;
{ Abbruchbedingung }
if Length(npw) < endlen
then begin
{ hier probieren wir dann ein Zeichen mehr }
// showmessage (npw + 'Nr.2'); //Message kommt nicht
TesteString(npw);
end;
end;
end;
Angesteuert hab ich es per
bruteforce('abcd','abcd',2,2);
- Aber bis auf die erste Nachricht kommt nichts weiter? :?