Einzelnen Beitrag anzeigen

Pogoner

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 6 Enterprise
 
#20

AW: Große String-Liste out of Memory - Hilfe?

  Alt 21. Apr 2014, 00:28
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 = 'Vorhandenthen 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? :?
  Mit Zitat antworten Zitat