Hi,
ich habe schon einige Einträge zum Thema gefunden. Aber los bin ich mein Problem leider nicht.
Ich habe sporadisch Programmabstürze in der Funktion CopyBitmap (Graphics) in der Zeile:
Result := GDICheck(CreateCompatibleBitmap(ScreenDC, bmWidth, bmHeight))
Da CreateCompatibleBitmap 0 liefert, kommt dann GdiError: EOutOfResources "Für diesen Befehl ist nicht genug Speicher verfügbar" ID 5878...
Der Fehler tritt momentan nur unter Citrix[EDIT]aber auch bei Verbindung über RDP (RemoteDesktop)[/EDIT] / Windows Server 2003 und bei großen Bildschirmauflösungen (z.B. 1980 x 1200) auf.
Trotz des Fehlers kann man einfach weitermachen.
Ich dachte, es liegt an den Developer Express - Komponenten.
Dort wurde so etwas schon diskutiert und man kann die Grafik dort von device-dependent bitmaps auf DIB umstellen.
Ich konnte das gestern nachvollziehen.
Ich habe mei Programm mehrmals gestartet und alle möglichen Fenster geöffnet, bis ich jeweils ca. 1000
GDI - Handles hatte.
Beim Start Nummer 6 kam der Fehler.
Da ich die Umstellung auf DIB per INI einstellen konnte, habe ich es wunderbar reproduziert.
DIB in INI ein - Start OK
DIB in INI aus - Error ... *freu*
Also habe ich auf allen Citrix - Servern die INI angepasst.
Heute - wieder der Fehler ... *heul*
Ich verliere jetzt langsam Haare.
Ich habe schon einige Artikel über
GDI - Handels, Einträge in der Registrierung etc. gelesen.
Aber solche Änderungen auf Kundenservern mache ich nicht so gern und es betrifft auch nur die Anzahl der
GDI - Handles.
Der Fehler deutet aber mehr auf den
GDI - Heap hin.
Deshalb noch einmal die Frage, bevor ich auf den Servern anfange, in der Registry Änderungen vorzunehmen:
Hat jemand das gleiche Problem und idealerweise evtll. sogar eine mögliche Lösung?
Ach ja, nutze Delphi 2007 Pro. Im Anhang ist ein Auszug vom Call Stack.
Danke, Frank