Bu, Delphi'de yapılan bir özel ad işleyicisinden dosyaları webbrowser bileşenine yüklemek için kullanıyorum.Bu bit kodunda TOleStream nasıl kullanılır
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;
sorun programın bitip TOleStream serbest olmadığını söylerken Fastmm4 bir bellek sızıntısı hata veriyor olmasıdır. Nasıl serbestlerim? Bir değişkende TOleStream koymak ve bu
var TOS:TOleStream; TOS:=TOleStream.Create(DataStream) TOS.CopyFrom(F, F.Size); .. TOS.Free; End;
gibi atarsanız ben TOS değişkeni serbest zaman sonunda bir hata (EAccessViolation ComObj içinde TComObject.ObjRelease işaret) olsun. Yorumlarınızı ve yardımlarınızı takdir ediyorum. Bu problem bir süredir beni rahatsız ediyor.
Ayrıca FastMM4 ile bir şey olup olmadığını merak ediyorum? Yanlış bilgi veriyor olabilir mi? Aşağıdaki gibi bir kodda. TOLEStream tipik olarak nasıl serbest kalır?
f.SaveToStream(TOleStream.Create(DataStream));
Veri akışına TFileStream kullanmadan veri yollamanın bir yolu var mı?
Merhaba Remy, Sen fastmm ve buradaki sorun usulüne ad işleyici bir çalışma demo proje bulabilirsiniz: Proje yükleri, ad işleyicisi dosyaları yüklemek için butonuna tıklayın http://mode5.webs.com/namespace.7z . Çıktığınızda, fastmm hatasını almalısınız. Saygılarımızla
Merhaba, Mode, StackOverflow'a hoş geldiniz. Bu oldukça iyi bir soru, ama özgür olduğunuzda aldığınız hatanın ne olduğunu bilseydik yardımcı olur. Sorunuzu düzenleyebilir ve sizin için buraya girdiğiniz hatayı kopyalayabilir misiniz? Teşekkürler. –
FastMM yanlış değil. Tam olarak ne yapmaya çalışıyorsun? Bir dosyayı bir IStream'e yükleyin ve onunla bir şeyler yapın? Dosya değiştirilmeli mi yoksa okuyuculu mu? –