Ab Version 5.6.04 gibt es eine Vereinfachung für alle Befehle, die einen Deskriptor schließen: Die Angabe von Null oder einem Fehlercode (< 0) wird einfach ignoriert.
Dadurch kann das Abfragen des Deskriptorwerts
if (tHandle > 0)
SckClose(tHandle)
vor dem Aufruf des Befehls entfallen. Dies vor verkürzt vor allem das "Aufräumen" von Deskriptoren nach einem try-Block.
try
{
tSck # SckConnect(aServerName,aPort,0,10000);
tMsx # MsxOpen(_MsxWrite | _MsxSocket,tHdl);
...
}
MsxClose(tMsx);
SckClose(tSck);
Bei positiven Deskriptorwerten (> 0) findet nach wie vor eine Überprüfung auf Typ und Gültigkeit des Handles statt. Das doppelte Schließen eines Deskriptors führt daher immer noch zu einem Laufzeitfehler.
Die Änderung betrifft folgende Befehle:
- BinClose
- ChartClose
- ChartDataClose
- ComClose
- CteClose
- DdeServiceClose
- DllUnload
- FsiClose
- FsiDirClose
- FsiMonitorClose
- HttpClose
- JobClose
- MailClose
- MemFree
- MsxClose
- OdbcClose
- PdfClose
- PdfPageClose
- PrtDeviceClose
- PrtFormClose
- PrtJobClose
- RecBufDestroy
- RecFilterDestroy
- SckClose
- SelClose
- StoClose
- SysTimerClose
- TapiClose
- TextClose
- UrmClose
- WinClose
- WinDestroy
2 Antworten
aEvt:Obj wäre ebenfalls ein Kandidat für erweiterte Debug-Infos
Das ist eine gute Sache.
Apropos Deskriptor: Ganz im Gegensatz zu seinem Namen lässt sich einem Deskriptor im Debugger nur recht wenig Deskriptives entlocken ;-).
Gibt es Pläne, diese Situation zu verbessen, also etwa Zugriffe auf Felder, die über einen Datensatzpufferdeskriptor referenziert werden zu ermöglichen, interessante Zusatzinfos anzuzeigen (ist der Dekskriptor noch gültig, Art des Deskriptors usw.), das Verfolgen eines CteObjekts (Liste, Baum usw.) durch Aufklappen einer Tree-Struktur zu erleichtern, usw. sicher gibt es noch mehr Ideen dieser Art?