AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Kontrolle freier System-, User- und GDI-Ressourcen unter Win
Thema durchsuchen
Ansicht
Themen-Optionen

Kontrolle freier System-, User- und GDI-Ressourcen unter Win

Ein Thema von Dirk Reichert · begonnen am 30. Apr 2003 · letzter Beitrag vom 2. Mai 2003
Antwort Antwort
Dirk Reichert

Registriert seit: 25. Apr 2003
Ort: Neubrandenburg
4 Beiträge
 
#1

Kontrolle freier System-, User- und GDI-Ressourcen unter Win

  Alt 30. Apr 2003, 06:47
Da ich unter Windows 98 Probleme mit der 64 K Grenze für Windows-Handles habe, will ich in meinem Programm die Ressourcen ähnlich der Ressourcenverwaltung von Windows überwachen.
Kann ich nicht z.B. über einen Timer die Systemressourcen überwachen und entsprechende Warnungen ausgeben? Müsste doch eine Möglichkeit geben, die Ressourcenverwaltung von WIndows warnt ja auch bei 90 % Auslastung.
Exception (eigentlich müssten dies EOSERROR oder EOUTOFRESSOURCES sein)habe ich an alle Stellen im Programm ausgewertet, sie werden aber einfach nicht ausgelöst. Vielleicht liegt das ja da dran, dass das ganze Windows zu diesem Zeitpunkt (keine freien Ressourcen) total instabil ist.
Meistens kommen bei diesen Systemabstürzen irgendwelche leeren Meldungsfenster. Wer kan helfen?

Viele Grüße

Dirk
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#2
  Alt 30. Apr 2003, 08:48
hallo Dirk,

das mit der Exception EOutOfResources ist in der Tat so eine Sache. Wenn ich sie unter Win98 bekomme, ist es manchmal auch schon zu spät, das System war dann oft völlig instabil -> nur noch Reboot.

Theoretisch sollte das mit dem Timer klappen, der aber nicht zu hoch aufgelöst laufen sollte (so alle paar Sekunden vielleicht).

Mit GlobalMemoryStatus kannst Du einige Statusinfos zum gegenwärtigen Speicherverbrauch bekommen. Leider aber nicht die Anzahl freier Handles, wenn ich mich recht erinnere.

Wenn Du weißt, wie man die Zahl verbrauchter/freier Handles bekommt, wär ich Dir für ein Posting dankbar.

vGrüße
Roderich
  Mit Zitat antworten Zitat
Dirk Reichert

Registriert seit: 25. Apr 2003
Ort: Neubrandenburg
4 Beiträge
 
#3

Sparsamster Umgang mit Systemressourcen unter Windows 98

  Alt 2. Mai 2003, 09:19
Für große MDI-Childforms mit vielen Controls sind bekanntlich die Systemressourcen unter Windows 98 begrenzt auf 64 KB. Um dies zu lösen habe ich in den Forms ein PageControl mit TabSheets welche als erstes Control ein TPanel mit alClient bekommen eingebaut. Innerhalb dieses PageControls befinden sich alle Controls.

Mit DestroyHandle habe ich die Handles aller Controls, welche sich auf im Augenblick nicht sichtbaren TabSheets befinden freigegeben. Über CreateHandle hole ich mir die Handle für die Controls des sichtbaren TabSheets zurück.
Für meine User-Ressourcen hatte das vollen Erfolg, die Zahl verringert sich jetzt bei jedem neuen Child-Form nur sehr gering. War ein voller Erfolg.
Allerdings bleiben leider meine GDI-Ressourcen im Keller.

Vielleicht mal bischen genauer. Ich laufe im Change-Ereignis des PageControls für jedes nicht sichtbare TabSheet die Controls durch und gebe mittels DestroyHandle die Handles frei.

Delphi-Quellcode:
procedure Set_FreeRessources(ControlFree: TWinControl);
var
  i: integer;
begin
  for i := 0 to ControlFree.ControlCount -1 do
  begin
    if ControlFree.Controls[i].ClassType = TPanel then
      TUserPanel(ControlFree.Controls[i]).DestroyHandle;
    if ControlFree.Controls[i] is TWinControl then
       Set_FreeRessources( ControlFree.Controls[i] as TWinControl);
  end;
end;
Klappt für die User-Ressourcen prima. Kann man was vergleichbares für die GDI-Ressourcen tun?

Viele Grüße Dirk

[edit=Daniel B]Delphi-Tags gesetzt. MfG Daniel B.[/edit]
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.
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