![]() |
Re: Warum ist ein Boolean so groß?
Zitat:
Zitat:
Zitat:
|
Re: Warum ist ein Boolean so groß?
Es war unbedacht formuliert, aber es wusste doch jeder, was ich gemeint hatte.
|
Re: Warum ist ein Boolean so groß?
Beispiel: Der Rückgabewert der Win32-API-Funktion GetMessage() ist von Borland 1:1 als BOOL(LongBool) übersetzt worden:
Delphi-Quellcode:
Der Grund dafür ist relativ ersichtlich, da die Dokumentation besagt, dass die Funktion bei WM_QUIT 0 zurückgibt und anderfalls einen Wert ungleich 0.
function GetMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax: UINT): BOOL; stdcall;
Deshalb sehen viele Nachrichtenschleifen von Fenstern so aus:
Delphi-Quellcode:
Allerdings besagt die Dokumentation auch, dass in einem Fehlerfall (z.B. ungültiges Fenster-Handle) -1 zurückgegeben wird. Der Code sollte also 'besser' so aussehen (um eine Endlosschleife im Fehlerfall zu vermeiden):
while GetMessage(Msg, Wnd, 0, 0) do
begin // ... end; ExitCode := Msg.wParam;
Delphi-Quellcode:
while True do
case Longint(GetMessage(Msg, Wnd, 0, 0)) of 0: // WM_QUIT begin ExitCode := Msg.wParam; Break; end; -1: // ERROR! begin ExitCode := 42; Break; end; else //... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:25 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