Autor Beitrag
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Di 25.02.03 19:48 
Ein Bitmap ist eine Systemresource und die sind bei Win9x/ME an einer einzigen Stelle registriert. Wenn man dieses vergisst gehen die GDI Resourcen aus. Diese werden auch nicht beim Programmende freigegeben.
Unter Windows NT/2000/XP werden alle vom Programm belegten Resourcen (GDI und Heap) auf jeden Fall bei Programmende freigegeben.

_________________
Ist Zeit wirklich Geld?
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 25.02.03 20:12 
Das mit dem Programmender wäre noch akzeptapel gewesen. Bei dem Problem handelte sich um eine Prozedur in der das Bitmap Objekt erstellt und wieder freigegeben wurde. Die Prozedur wurde mehrmals pro Minute aufgerufen.
infomio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Win xy

BeitragVerfasst: Mi 26.02.03 09:09 
ich hab halt nur den Eindruck, daß viele Objekte erstellt werden, deren Sinn durchaus kritisch hinterfragt werden kann...ne einfache Funktion tuts da meist auch!!!


Also Danke an alle, ich werd mich mal in OOP wagen und wehe es macht keinen ersichtlichen Sinn !!! Späßle...
infomio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Win xy

BeitragVerfasst: Mi 26.02.03 09:13 
Popov hat folgendes geschrieben:
... Pascal kann mit Objekten arbeiten, ist aber keine Objektsprache. Pascal ist somit nur mit einem Trick OOP. Wenn man jetzt also automatisch beim beenden auch die Objekte freigeben würde, dann würde man etwas machen was mit Pascal nicht vereinbar wäre.


Und genau den Satz habe ich nicht begriffen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 26.02.03 12:36 
AndyB hat folgendes geschrieben:

Unter Windows NT/2000/XP werden alle vom Programm belegten Resourcen (GDI und Heap) auf jeden Fall bei Programmende freigegeben.

Das gilt auch für Windows9x so viel ich weiß.

Es verhält sich so und damit erklärt sich auch Popovs Problem: Wärend des Programmablaufes muß ich schon meine selbst erstellten Objekte und belegten Ressourcen wieder freigeben, weil ich sonst den Speicherbereich meines Programmes zu mülle. Klar. Wenn ich in einem Timer-Ereignis jedes mal ein Bitmap im Speicher anlege und den Speicher nicht mehr freigeben ist irgendwann das Ende der Fahnenstange erreicht.
Aber wenn das Programm beendet wird, dann wird von Windows auch der gesamte belegte Speicher wirder freigegeben und ist danach wieder von Windows nutzbar. Auch wenn mein Programm nicht selbst alles freigibt.

(Nach zu lesen im Jeffrey Richter "Windows Programmierung für Experten".)
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 26.02.03 13:24 
infomio hat folgendes geschrieben:
ich hab halt nur den Eindruck, daß viele Objekte erstellt werden, deren Sinn durchaus kritisch hinterfragt werden kann...ne einfache Funktion tuts da meist auch!!!


Gib mal ein Beispiel. Welche Objekt erscheinen dir wenig sinnvoll als Objekte. Gib mal zwei oder drei Beispiele. Vieleicht können wir anhand der Beispiele den Sinn ein wenig vedeutlichen.

Ich hab mal eine Unit geschrieben in der ich das Arbeiten mit Ini's sehr vereinfacht habe. Der Programmierer braucht sich somit nicht um Objekte kümmern, sondern kann Iniwerte per einfache Funktion schreiben.

Das ganze erleichtert die Arbeit ungemein. Allerdings nicht wenn ich viele Ini Anweisungen am Stück habe. Dann ist das Arbeiten mit meinen Funktionen komplizierte, weil ich z.B. bei jeder Funktion den Inipfad angeben muß. Wenn ich mit der TIniFile arbeite, dann mache ich es nur ein mal. Ansonsten fällen mir keine Klassen ein die ich gerne per Unit vereinfachen würde.


infomio hat folgendes geschrieben:
Also Danke an alle, ich werd mich mal in OOP wagen und wehe es macht keinen ersichtlichen Sinn !!! Späßle...


Bedenke einfach, es gibt zig tausend Programmierer. Wenn Arbeiten mit Objekten Blödsinn wäre, dann hätte sich das ganze nicht durchgesetzt.