AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Warum ist ein Boolean so groß?

Ein Thema von Eichhoernchen · begonnen am 25. Okt 2005 · letzter Beitrag vom 26. Okt 2005
 
NicoDE
(Gast)

n/a Beiträge
 
#23

Re: Warum ist ein Boolean so groß?

  Alt 26. Okt 2005, 18:47
Beispiel: Der Rückgabewert der Win32-API-Funktion GetMessage() ist von Borland 1:1 als BOOL(LongBool) übersetzt worden:function GetMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax: UINT): BOOL; stdcall; 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.

Deshalb sehen viele Nachrichtenschleifen von Fenstern so aus:
Delphi-Quellcode:
while GetMessage(Msg, Wnd, 0, 0) do
begin
  // ...
end;
ExitCode := Msg.wParam;
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):
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;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 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