![]() |
Wann bzw. an welcher Position CloseHandle?
Hallo Delphifreunde!
Zur Abwechslung mal wieder eine fachliche Frage, die ich nicht so recht beantwortet fand: Wann bzw. an welcher Stelle sollte (eigentlich muß) ein Closehandle generell erfolgen? Nur, wenn der Funktionsaufruf erfolgreich war oder immer? Also ein Beispiel anhand eines Prozeßhandles:
Delphi-Quellcode:
Ich vermute, daß es immer, also außerhalb des if-Blockes, erfolgen sollte/muß.
var hProcess:THandle;
begin hProcess:=OpenProcess(PROCESS_SET_INFORMATION,true,0); if hProcess<>0 then begin //tue irgendetwas mit dem Prozeßhandle closehandle(hProcess) //hier? end; closehandle(hProcess) //oder hier? end |
AW: Wann bzw. an welcher Position CloseHandle?
innerhalb, nur dann hast Du ein gültiges handle zum Schließen.
|
AW: Wann bzw. an welcher Position CloseHandle?
Danke!
Ergänzung: Ich erlebte allerdings noch nie, daß bei einem fehlgeschlagenen Funktionsaufruf das Closehandle, auf das ungültige Handle angwandt, irgendein merkliches Programmverhalten auslöste, Exception z.B., geschweige denn, Absturz. |
AW: Wann bzw. an welcher Position CloseHandle?
Das ist wie mit
![]() ![]()
Delphi-Quellcode:
hier mit
CloseHandle
![]() Ein
Delphi-Quellcode:
(analog zu
SafeCloseHandle
![]()
Delphi-Quellcode:
function SafeCloseHandle( hObject : THandle ) : Boolean;
begin if ( hObject = 0 ) then Exit( True ); Result := ( CloseHandle( hObject ) <> 0 ); end; |
AW: Wann bzw. an welcher Position CloseHandle?
Oder in älteren Delphi-Versionen:
Delphi-Quellcode:
function SafeCloseHandle(hObject : THandle) : Boolean;
begin if (hObject = 0) then Result := True else Result := CloseHandle(hObject) <> 0; end; |
AW: Wann bzw. an welcher Position CloseHandle?
Verstehen tue ich Euch zwar nicht so recht, aber plötzlich kam ich auf die Idee zu prüfen, ob CloseHandle einen boolschen Rückgabewert hat. Tatsächlich, hat es: Bei einem gültigen Handle gibt es true, bei einem ungültigen false false. Damit kann ich Bummis Aussage hiermit bestätigen (war mir aber auch vorher schon klar, daß es stimmt).
Danke noch einmal! |
AW: Wann bzw. an welcher Position CloseHandle?
@Sir Rufo & DeddyH: Eine
Delphi-Quellcode:
mit einem Rückgabewert? Mit einer
procedure
Delphi-Quellcode:
geht das besser ;).
function
MfG Dalai |
AW: Wann bzw. an welcher Position CloseHandle?
Jaja, sch**ß C&P, ich korrigier das oben :tongue:
|
AW: Wann bzw. an welcher Position CloseHandle?
Zitat:
Delphi-Quellcode:
:mrgreen:
procedure
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz