Al vaak ben ik de volgende code tegengekomen in allerlei varianten:
Daarbij vraag ik me drie dingen af.
Delphi:
1
2
3
4
5
6
7
8
9
10
11
| procedure Bert; var Ernie: OleVariant; // zomaar een interface begin Ernie := CreateOLEObject('Ernie'); try Ernie.DoeIets; finally Ernie := Unassigned; end; end; |
Daarbij vraag ik me drie dingen af.
- Waarom zou je Ernie bij het verlaten van de procedure persé Unassigned willen maken? Die interface wordt toch automatisch opgeruimd zodra hij out of scope raakt?
- Stel dat er geen try..finally lus zou zijn en dat Ernie.DoeIets een exception zou raisen. Wordt Ernie dan nog steeds automatisch opgeruimd?
- Is Ernie := Unassigned hetzelfde als Ernie := nil?
[ Voor 2% gewijzigd door Tomatoman op 14-07-2003 21:51 . Reden: typo in code ]
Een goede grap mag vrienden kosten.