Set XYZ = Nothing

Hallo Experten,
hin und wieder stößt man bei euch im Code auf die Zeile

Set XYZ = Nothing

Warum macht man das? Hat das einen Sinn? Meine Programme laufen auch alle ohne! Bin ich jetzt ein schlechter Programmierer? (Bin ich sowieso :smile:)

Danke für die Hilfe!
Stefan

Hallo Stefan,

hin und wieder stößt man bei euch im Code auf die Zeile

Set XYZ = Nothing

Warum macht man das? Hat das einen Sinn? Meine Programme
laufen auch alle ohne! Bin ich jetzt ein schlechter
Programmierer? (Bin ich sowieso :smile:)

Dies hat 2 Effekte:

  1. Die für das entsprechende Objekt geladene Software (.DLL .OCX) und der belegte Speicherplatz im RAM wird freigegeben. Damit wird auch sicher verhindert, dass es z.B. durch einen Timer mit Callback-Routine, zu einem Laufzeitfehler beim Beenden des Programms kommt, da sonst Timeraufrufe ausgelöst werden können, aber die entsprechende Routine schon im Speicher gelöst wurde.

  2. Ein versehentlicher Zugriff auf ein freigegebenes Objekt wird verhindert, indem eine Fehlermeldung, kann man natürlich mit „On Error“ abfangen, erzeugt wird, wenn auf ein nicht mehr gültiges Objekt zugegriffen wird.

MfG Peter(TOO)

Ergänzung
Hallo.

.OCX) und der belegte Speicherplatz im RAM wird freigegeben.

Ja, hoffentlich wird er das. In diversen windowitschen Versionen knallte es trotzdem irgendwann einmal. Speziell Excel hat sich einen Namen als Tamagotchi gemacht, das überall kleine Bäbäs hinterließ, die die Systemressourcen ständig verkleinerten …

Wenn man das Rücksetzen auf Nothing unterlässt, kann es theoretisch passieren, dass bei einem Neuaufruf der Routine solange neue Instanzen der Objekte gebildet werden, bis der Bluescreen einen dämlich angrinst. Das Rücksetzen ist zwar auch keine Lebensversicherung, erhöht aber die Hoffnung ganz erheblich.

Gruß kw