Ich verwende Delphi XE. Ich habe ein Problem mit Speicherverlust mit Delphi Soap gefunden. Es stellt sich heraus wegen eines fehlenden .Free Anruf zu sein in TWSDLLookup.Destroy
, wie beschrieben in QC 91160Delphi XE Speicherverlust in TWSDLLookup.Destroy Methode
Das Problem, das ich habe, ist die beschriebene Behelfslösung, die einfach FLookup.Free
zur TWSDLLookup.Destroy
Methode hinzuzufügen ist.
Ich möchte nicht die Delphi-Quelle ändern, also habe ich versucht, das Gerät in meinen Projektordner zu kopieren, die Änderung vorzunehmen und neu zu kompilieren, wie in Toms Antwort here beschrieben. Das Problem mit dieser Technik ist, dass es anscheinend nur funktioniert, wenn Sie auch alle abhängigen Einheiten neu kompilieren. Ich habe versucht, nur WSDLLookup.pas
in mein Projektverzeichnis zu kopieren, und ich bekomme einen Stackoverflow-Fehler. Ich bin nicht vertraut mit Web Services/SOAP, also weiß ich nicht, welche anderen Einheiten ich kopieren sollte, wenn ich diese Technik verwende.
Die Antwort von Rob Kennedy auf derselben Seite beschreibt eine andere Technik mit Code-Hooking - aber es scheint nicht für Objektmethoden zu gelten. Ich habe getan, wie er den kostenlosen Code für die TNT-Unicode-Steuerelemente vorgeschlagen und heruntergeladen und die relevanten Prozeduren gefunden, aber ich konnte keine Informationen darüber finden, wie man die Methoden eines Objekts haken kann - falls dies tatsächlich möglich ist. Wenn ich das tun könnte, würde ich dann TWSDLLookup.Destroy
haken und den FLookup.Free
Anruf hinzufügen.
Irgendwelche Ideen für, wie man das behebt, wird sehr geschätzt. Ich bin ein bisschen ein Anfänger Programmierer, also hoffe ich, dass ich etwas Offensichtliches verpasst habe?
Danke für die schnelle Antwort :) –
Ich sah etwas darüber, dass die Verwendung von Debug-Dcus könnte ein Problem verursachen - möglicherweise das ist, warum ich meine Stapelüberlauf bekommen. Oder vielleicht habe ich einen anderen Fehler. –
Wie auch immer, nochmals vielen Dank. Da es funktioniert, werde ich versuchen herauszufinden, was ich sonst noch falsch mache :) –