HI,
ich hab jetzt ein Programm geschrieben, dass ein Bild übertragen soll. Jetzt ist mir im Langzeittest aufgefallen, dass das Programm unmengen Arbeitsspeicher braucht. Nach der Komprimierung nach JPEG ist die Speicherübernutzung zwar nicht weg, aber immer noch da. Nach rund 100 Zugriffen beendet sich das Programm wegen Speicherüberlauf. Ich hab schon versucht alle Variablen zu zerstören, aber das hilft nicht.
Quellcode:
Delphi-Quellcode:
Bild := TBitmap.Create;
MS := TMemoryStream.Create;
MakeScreenShot(Bild);
JPEGBild := TJPEGImage.Create;
JPEGBild.CompressionQuality := 90;
JPEGBild.Assign(Bild);
JPEGBild.Compress;
Bild.Destroy;
JPEGBild.SaveToStream(MS);
JPEGBild.Destroy;
MS.Write('ENDE', 4);
MS.Position := 0;
ServerSocket1.Socket.Connections[0].SendStream(MS);
MS.Clear;
MS.Destroy;
Wie sich wohl ahnen lässt, ist das ein Schnipsel aus einer ServerSocket1-ClientRead Prozedur.
Bild: TBitmap(lokal);
MS: TMemoryStream(lokal);
JPEGBild: TJPEGImage(lokal);
Vielen Dank im Vorraus für eure Hilfe
rollstuhlfahrer