
- HDD'de bulunan 2000 adet WMF dosyasını okuyup, Width x Height değerlerini alıp JPG yaparak HDD'ye kopyalamak istiyorum.
- Standart yollarla bu yapıldığında 100 kadar WMF sonra hafızadan yemeye başlıyor ve bir süre sonra da System Kaynakları yetmedi deyip program kırılıyor. (Memory Leak) Bunu çözmüş birisi varsa helal olsun diyorum.
Bu durum Windows'un rapor edilmiş buglarında biri olduğundan alternatif yollar bilen varsa paylaşırsa sevinirim.
- ACDsee programı bu işi mükemmel yapıyor ki bunun bir yolu olduğunun göstergesi. (Ama ne olur WMF'yi Binary olarak okuyup parse edip çözümlediğin çizimleri canvas üzerine kendin yap demeyin

- Kullandığım örnek routinler aşağıdaki gibi. İçinden WMF çıkarılırsa sistemde herhangi bir yüklenme olmuyor, WMF işin içine girince olanlar oluyor.
- WMF zorunluluğu olmasaydı da sizi bunlarla yormasaydım ama, mevcut proje WMF katalog sistemi olunca dediğim gibi 100 kadar WMF sonra sistem kaynakları azalmaya başlıyor ve bir süre sonra da tükeniyor.
- Problemim bu tükenmeyi bertaraf edememek.
Kod: Tümünü seç
Procedure TForm1.WMFdenJPG(Kaynak, Hedef:String);
Var
JPGDosya : TjpegImage;
BMPDosya : TBitmap;
WMFDosya : TMetaFile;
begin
If FileExists(Kaynak) then
begin
WMFDosya := TMetaFile.Create;
WMFDosya.LoadFromFile(Kaynak);
BMPDosya := TBitmap.Create;
BMPDosya.Width := WMFDosya.Width;
BMPDosya.Height := WMFDosya.Height;
BMPDosya.Canvas.Draw(0,0,WMFDosya);
JPGDosya := TjpegImage.Create;
JPGDosya.Assign(BMPDosya);
JPGDosya.SaveToFile(Hedef);
JPGDosya.Free;
BMPDosya.Free;
WMFDosya.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WMFdenJPG('C:\0.WMF', 'C:\0.JPG');
end;
- Ref. Kaynak Ölçer programı.
- Konu ile ilgili Microsoft sayfası :
Microsoft Knowledge Base Article - 257523---------------------------------------------
BUG: Resource Leak Occurs When You Display WMF Files in a PictureBox
----
http://support.microsoft.com/default.as ... -us;257523