Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zu wenig Arbeitsspeicher (https://www.delphipraxis.net/146825-zu-wenig-arbeitsspeicher.html)

Ines 27. Jan 2010 15:30

Re: Zu wenig Arbeitsspeicher
 
Hallo Medium,

mein Programm arbeitet mit Images. Der Nutzer kann ein Bild laden - darin zeichnen - und dieses Bild dann im Befund ausgeben.
Ich verwende die Befehle Image.Picture.Bitmap = nil, Image.Picture = nil, Image.Picture.Bitmap.FreeImage und Image.Picture.Bitmap.ReleaseHandle um das Image zu leeren und somit Speicherplatz zu sparen.

Aber nicht nur mein Programm arbeitet mit Bildern, auch 2 der anderen Programme (sog. Viewer) sind Bildbearberarbeitungs- und betrachtungsprogramme.

Ich suche noch nach einer Möglichkeit, daß mein Programm einigermaßen ordentlich beendet werden kann, wenn dieser Fehler auftritt. Momentan funktioniert weder mein noch die anderen Programme, auch der Taskmanager mag nicht.

Gruß
Ines

himitsu 27. Jan 2010 15:49

Re: Zu wenig Arbeitsspeicher
 
Startet den Taskmanager schon im Voraus und laßt ihn im Hintergrund laufen.
Das sollte die Möglichkeit erhöhen, daß man ihn dann noch nutzen kann, wenn es denn so weit ist.

Bernhard Geyer 27. Jan 2010 15:58

Re: Zu wenig Arbeitsspeicher
 
Zitat:

Zitat von Ines
Momentan funktioniert weder mein noch die anderen Programme, auch der Taskmanager mag nicht.

Hört sich für mich nach einem Ressourcen (GDI/User/...) Problem an. Hier hat Windows noch nicht die optimale Trennung zwischen Prozessen (auch wenn es mit jeder Windows-Version besser wird) so das ein Amok-Laufendes Programm alle anderen Programme "in den Abgrund reist".

Also Taskmanager an, Spalten "Handles", "BENUTZER-Objekte" und "GDI-Objekte" eingeblendet und schauen wo hier Zahlen >> 1000 auftreten. Dieser Prozess ist dann der Schuldige. Du kannst hier eigentlich gar nix mehr machen da selbst ein ShowMessage u.U. fehl schlägt.

Blup 29. Jan 2010 16:27

Re: Zu wenig Arbeitsspeicher
 
Von Image.Picture.Bitmap.ReleaseHandle lass mal die Finger.
Damit erreichst du genau das Gegenteil von Speicher sparen.

Du teilst der Bitmap damit lediglich mit, das du ihr das GDI-Handle auf die eigentlichen Bilddaten abnimmst und dich um dessen Freigabe (inclusive GDI-Speicher) später selbst kümmerst. Und das geschieht vermutlich nicht...

Statt dessen einfach:
Delphi-Quellcode:
Image.Picture.Bitmap := nil;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz