Neu vorgestellt, Programmierung

Änderung bei Close-Befehlen

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 Kommentare

2 Kommentare “Änderung bei Close-Befehlen”

  1. 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?

Kommentar abgeben