![]() |
Re: Datei bearbeiten und nur Teile wieder speichern
Moin und Danke,
zur Frage: ja, in jeder Datei ist nur ein Element Lehrgang drin und innerhalb des Elementes sind dann mehrere Childs. Es läuft auch soweit, recht gut, nur nach unbestimmter Zeit bleibt er hängen. Ich habe dann versucht, das so zu machen, dass ich den Speicher der Variablen dann mit free wieder freigebe, allerdings kennt er das mal wieder nicht und in der MSXML_TLB habe ich dazu auch nichts gefunden. Geht das auch mit Release ? Oder woran könne das sonst noch liegen ? Die versteckten Anregungen sind klasse, vereinfacht vieles. ;-) Gruß Hoschie |
Re: Datei bearbeiten und nur Teile wieder speichern
Wenn du glaubst, dass dir der Speicher zuläuft, dann solltest du ein Werkzeug wie z.B.
![]() |
Re: Datei bearbeiten und nur Teile wieder speichern
Also ich habe nach 128 aufgerufenen XML Seiten so an die 260.000 Kb gemäß dem TaskManager, da ist es ja kein wunder, dass die Anwendung sich irgendwann aufhängt. Ich befürchte, dass ich irgendwie das WebBrowser Dokument wieder freigeben muss, bevor ich erneut darauf zugreife. Nur wie weiss ich noch nicht. Irgendwelche Tipps ?
Ich werde heute Abend mich mal an MemCheck ranwagen. Kann ich WebBrowser so freigeben :
Delphi-Quellcode:
und ihn dann gleich wieder erneut aufrufen oder muss das anders aussehen ?
WebBrowser1.Document.free
Gruß Hoschie |
Re: Datei bearbeiten und nur Teile wieder speichern
Moin Hoschie,
wenn du größere Dokumente geladen hast, dann belegt das aufgebaute DOM natürlich reichlich Speicher. Sobald du ein neues Dokument lädst, wird dieser Speicher aber automatisch wieder freigegeben. Du selbst kannst das mit WebBrowser.Navigate('about:blank') veranlassen. Von dir verwendete Automationsobjekte (COM) werden automatisch freigegeben, sobald sie nicht mehr verwendet werden. Du kannst die vorzeitige Freigabe erzwingen, indem du sie einfach auf NIL setzt. Free() dient der Freigabe von Delphi-Objekten. Freundliche Grüße |
Re: Datei bearbeiten und nur Teile wieder speichern
Dadurch das ich ja gleich nach der Abbarbeitung die nächste Webseite aufrufe habe ich ja keine Möglichkeit den Speicher des Dokumentes mit aufruf der Seite about:blank freizugeben. Aber wenn alles automatisch freigegeben wird, wie erkläre ich mir dann den horenden Speicherbedarf, der mit jeder aufgrufenen Seite anwächst.
Gruß Hoschie |
Re: Datei bearbeiten und nur Teile wieder speichern
Zitat:
Ich vermute mal das IE-Intern Objekte gegenseitig Interface-Zeiger halten so das hier eine "Deadlock"-Situation (ich glaube es gibt auch einen gebräuchlicheren Begriff) vorliegt. |
Re: Datei bearbeiten und nur Teile wieder speichern
Zitat:
Dagegen hilft hier nur IE beenden und neu starten. Falls die IE-Instanz nur vom TWebBrowser genutzt wird, dann sollte es vermutlich helfen, wenn man diesen freigibt (WebBrowser.Free) und dann neu erstellt (WebBrowser := TWebBrowser.Create) ... dann müßte ja hoffentlich auch die speicherfressende IE-Instannz gelöscht/feigegeben werden? :stupid: |
Re: Datei bearbeiten und nur Teile wieder speichern
Es wäre ja schon von Vorteil, wenn er den reservierten Bereeich nur überschreibt und nicht ständig erweitert. Ich werde das heute Abend mal antesten und dann melden.
Gruß Hoschie |
Re: Datei bearbeiten und nur Teile wieder speichern
Hallo,
ich habe schon viele Threads in der DP zum Thema TWebBrowser und IE gesehen - sie hatten oft eines gemeinsam: Die falsche Darstellung der Beziehung zwischen dem Webbrowser Control und dem Internet Explorer. Das visuelle Herzstück des modular aufgebauten IE ist das Webbrowser Control und ![]() Ich habe zu Zeiten von IE5 damit begonnen das Control in einem Projekt zu verbauen. Speicherlecks beim IE habe ich nie gesucht, es gab bis heute keinen Grund dazu. Ich will damit nicht behaupten, dass es diese Lecks nicht gäbe, alleine mir sind bisher keine aufgefallen. Ich bin auch fest davon überzeugt, dass die Ursache für Speicherlecks im Programm von Hoschie zuerst in seinem eigenen Code gesucht werden muss. Freundliche Grüße |
Re: Datei bearbeiten und nur Teile wieder speichern
Was durchaus sehr wahrscheinlich ist und ich das ganze nicht absprechen möchte, weil ich dafür vieeeel zu wenig Ahnung habe. Es sah für mich nur eben nach einem direktem Zusammenhang mit dem aufrufen der Seiten auf, weil die Speichermenge in dem Moment stieg, als er die neue Seitee geladen hat, Aber ich werde versuchen das ganze möglichst einzugrenzen mit dem MemCheck.
Trotzdem bin allen Postern hier sehr dankbar für die Hilfe :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 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