Dies ist von einem benutzerdefinierten Namespacer-Handler in Delphi ich zum Laden von Dateien in eine Webbrowser-Komponente verwendet.So befreien Sie TOleStream in diesem Bit Code
Datastream:IStream; var F: TFileStream; Dummy: INT64; begin F:=TFileStream.Create(strfilename fmOpenRead); CreateStreamOnHGlobal(0, True, DataStream); TOleStream.Create(DataStream).CopyFrom(F, F.Size); DataStream.Seek(0, STREAM_SEEK_SET, Dummy); TotalSize := F.Size; F.Free; end;
Das Problem ist, dass Fastmm4 ein Speicherleck Fehler gibt, wenn das Programm beendet wird und sagt, dass TOleStream wurde nicht befreit. Wie kann ich es freigeben? Wenn ich TOleStream in einer Variablen setzen und weisen ähnliche
var TOS:TOleStream; TOS:=TOleStream.Create(DataStream) TOS.CopyFrom(F, F.Size); .. TOS.Free; End;
bekomme ich einen Fehler (EAccessViolation zu TComObject.ObjRelease in ComObj zeigt) am Ende, wenn ich die TOS Variable befreien. Ich würde Ihre Anmerkungen und Hilfe schätzen. Dieses Problem nervt mich seit einiger Zeit.
Ich frage mich auch, ob es etwas mit FastMM4 sein könnte? Könnte es falsche Informationen geben? In ein bisschen Code wie folgt. Wie wird TOLEStream in der Regel freigegeben?
f.SaveToStream(TOleStream.Create(DataStream));
Und gibt es eine Möglichkeit, Daten an Datenstrom zu senden, ohne den TFileStream zu verwenden?
Hallo Remy, Sie können eine funktionierende Demo-Projekt des Namespace-Handler mit dem FastMM und das Problem Verfahren finden Sie hier: http://mode5.webs.com/namespace.7z Wenn die Projektladungen, die Schaltfläche klicken Sie auf den Namespace-Handler zu haben, um die Dateien zu laden. Wenn Sie beenden, sollten Sie den Fastmm-Fehler erhalten. Mit freundlichen Grüßen
Hallo, Mode, willkommen bei StackOverflow. Das ist eine ziemlich gute Frage, aber es würde helfen, wenn wir wüssten, welchen Fehler Sie bekommen, wenn Sie es freigeben. Können Sie Ihre Frage bearbeiten und den Fehler, den Sie hier eingehen, kopieren? Vielen Dank. –
FastMM ist nicht falsch. Was versuchst du genau? Eine Datei in einen IStream laden und etwas damit machen? Soll die Datei geändert werden oder soll sie nur gelesen werden? –