AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Große String-Liste out of Memory - Hilfe?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Pogoner · begonnen am 20. Apr 2014 · letzter Beitrag vom 23. Apr 2014
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

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

  Alt 20. Apr 2014, 18:44
Zitat von Pogoner:
ich selbst mit 8GB RAM out of Memory bekomme
von denen du rein gar nichts hast bei einer 32bit Anwendung.

Und wenn du den Speicher stark fragmentierst, dann ist sogar schon weit vor der 32bit-Grenze von 2GB Schluss.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Pogoner

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

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

  Alt 20. Apr 2014, 18:48
Und wenn du den Speicher stark fragmentierst, dann ist sogar schon weit vor der 32bit-Grenze von 2GB Schluss.
Ja aber das ist ja nicht mein primäres Problem - Selbst wenn ich 100GB nutzen könnte, würde mir das in dem Fall nicht helfen, da der Bedarf mit jeder Stelle Faktor 10 wächst. Deshalb will ich die Cluster-Liste ganz vermeiden und die Einträge direkt in den Spider einspeisen... Nur ich weiß eben nicht, wo/wie ich das tun kann...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

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

  Alt 20. Apr 2014, 18:51
Irgendwie erstellst du ja diese Liste, also du erstellst jeden einzelnen Eintrag und fügst diesen in die Liste.

Nun füg den Wert nicht in die Liste, sondern übergib den Wert an die Routine, die etwas damit macht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Pogoner

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

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

  Alt 20. Apr 2014, 18:58
Ja das will ich ja die ganze Zeit Aber wie schon 2x gesagt - ich weiß nicht, wo ich das tun muss. Für mich mit meinem einfachen Delphi-Gemüt liest sich der Code nicht so einfach
Delphi-Quellcode:
step1:

        for i := 0 to hlplst.Count -1 do begin
                for n := 1 to length(astring) do begin

                npw := hlplst.Strings[i]+astring[n];

               Cluster.Add(npw); //wenn ich das hier entferne, gehts nichtmehr
                                                  //dann kommt nur aa bis a0, aber nicht aaa-aa0 etc
                                                  //sonst hätte ich es hier abgegriffen
                                                  //desweiteren loopt es dann die aa-a0 immer wieder
                if length(npw) >= startlen then
                begin
                Results.Add(npw);
                end;
        end;
        HlpLst.Clear ;
        hlplst.AddStrings(Cluster);
        Cluster.Clear ;
   

        if length(npw) + 1 <= endlen then goto step1;
        hlplst.Clear;
     end;
        result := 0;
        Label1.Visible := False;
€dit - Und mir ist schon bewusst, dass das für euch wahrscheinlich eine blöde Frage ist.... Sorry^^

Geändert von Pogoner (20. Apr 2014 um 19:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.631 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 20. Apr 2014, 19:55
Wenn ich das jetzt richtig verstanden habe, nimmt man die Buchstaben aus substr und fügt jeweils alle Kombinationen der Buchstaben aus astring an. Die resultierenden Kombinationen werden, so sie eine Länge von startlen bis endlen haben in die Liste result geschrieben und dem Spider übergeben.

Frage: Was passiert mit der Liste results? Die wird in deinem Code nirgendwo sonst verwendet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

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

  Alt 20. Apr 2014, 20:18
Wenn ich mir das so betrachte, dann ist Results die Liste, die ständig wächst.
Sollten diese Werte irgendeine Relevanz haben, dann kann man diese auch direkt in eine Datei schreiben und damit den Speicher entlasten.

Kommentiere zunächst mal das Results.Add(...); aus und schau dir den Speicherverbrauch an.

Ich weiß aber nicht, ob ich zum Thema BruteForce und Webseiten hier wirklich weiterhelfen möchte ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Pogoner

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

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

  Alt 20. Apr 2014, 20:37
Wenn ich das jetzt richtig verstanden habe, nimmt man die Buchstaben aus substr und fügt jeweils alle Kombinationen der Buchstaben aus astring an. Die resultierenden Kombinationen werden, so sie eine Länge von startlen bis endlen haben in die Liste result geschrieben und dem Spider übergeben.

Frage: Was passiert mit der Liste results? Die wird in deinem Code nirgendwo sonst verwendet.
Ja die Results-Liste stammt noch aus dem "Tutorial" - anstatt in die Liste, möchte ich es in den Spider übergeben. Bevor ich das tun kann, wird die Cluster-Liste allerdings zu groß und ich kann ehrlichgesagt mit den Schleifen nicht so gut umgehen, um es im richtigen Moment abzugreifen bzw die Liste wieder freizugeben...

Kommentiere zunächst mal das Results.Add(...); aus und schau dir den Speicherverbrauch an.
Die Results ist ja nur ein Teil der Cluster-Liste. Ich habe sie kommentiert und bin nur 100MB runter, der Großteil ist von der anderen belegt... (Mittelteil meiner Tabelle mit allen Kombinationen)

Sollten diese Werte irgendeine Relevanz haben, dann kann man diese auch direkt in eine Datei schreiben und damit den Speicher entlasten.
Die Werte haben keine Relevanz - außer dass ich sie (wenn sie x Stellen lang sind) dem Spider übergeben möchte

Ich weiß aber nicht, ob ich zum Thema BruteForce und Webseiten hier wirklich weiterhelfen möchte ...
Naja also ich will ja kein Passwort knacken oder etwas ähnliches - es ist mehr eine sportliche Herausforderung, eine versteckete Unterseite zu finden. Diese ist offen zugänglich für den, der den Link kennt - Keine Sorge

Geändert von Pogoner (20. Apr 2014 um 20:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.631 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 20. Apr 2014, 20:55
Ich weiß aber nicht, ob ich zum Thema BruteForce und Webseiten hier wirklich weiterhelfen möchte ...
Naja also ich will ja kein Passwort knacken oder etwas ähnliches - es ist mehr eine sportliche Herausforderung, eine versteckete Unterseite zu finden. Diese ist offen zugänglich für den, der den Link kennt - Keine Sorge
Ganz so unbedarft ist das aber nicht! Nach deiner Aussage kommen da 380204032 Strings zusammen, von denen ein großer Teil zu einem HTML-Call führt. Das kann durchaus schon als Versuch einer DOS-Attacke angesehen werden.

Abgesehen davon wurde dir der passende Lösungsansatz bereits in Post 3 aufgezeigt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

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

  Alt 21. Apr 2014, 01:03
Naja also ich will ja kein Passwort knacken oder etwas ähnliches - es ist mehr eine sportliche Herausforderung, eine versteckete Unterseite zu finden. Diese ist offen zugänglich für den, der den Link kennt - Keine Sorge
Du möchtest dir Informationen zugänglich machen, die nicht für dich bestimmt sind!

Solche Seiten sind ja nicht zufällig "versteckt", sondern aus einem ganz bestimmten Grund: Der Urheber möchte diese Seiten nicht veröffentlichen. Das ist sein gutes Recht, das du nicht mit deinen illegalen Methoden umgehen darfst.

Mit anderen Worten: Ich möchte nicht, daß du oder sonst jemand via BruteForce die versteckten Seiten auf meinem Web-Server ausfindig macht, denn die wurden ausschließlich für ganz bestimmte Kunden abgelegt, denen ich den Link dazu freiwillig gebe. Weder dir noch sonst jemandem ist es gestattet, sich diese Seiten mittels BruteForce-Techniken oder anderen illegalen Mitteln zugänglich zu machen. Konkret: Dich und alle anderen geht der Inhalt dieser nicht veröffentlichten Seiten absolut nichts an!
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz