Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Warum ist ein Boolean so groß? (https://www.delphipraxis.net/55716-warum-ist-ein-boolean-so-gross.html)

Olli 26. Okt 2005 18:02

Re: Warum ist ein Boolean so groß?
 
Zitat:

Zitat von SMO
Meinst du das ernst?

Ja.

Zitat:

Zitat von SMO
Das ist ein doofer alter Mythos. Wir benutzen 100% unseres Gehirns, wenn auch nicht gleichzeitig (CPUs sind ja auch nicht immer zu 100% benutzt/ausgelastet ;)). Siehe z.B. hier (Deutsch) oder hier (Englisch).

Wer's glaubt. Wenn du da eher irgendwelchen Leuten als dir selber glaubst, kann ich auch nix für :zwinker: ... wenn du natürlich alles nutzt, dann gilt dir mein vollster Respekt.

Zitat:

Zitat von SMO
Ich glaube nicht, dass es hier ein "Problem" gibt, ich finde diese Diskussion interessant. Oxmyx' Aussage über die Ausrichtung war inkorrekt, was mich dazu angestoßen hat hier teilzunehmen. Ebenso wie mich deine kühne Aussage dazu verleitet hat, nochmal zu antworten. ;)

Oxmyx' Aussage zum Alignment im Record war falsch, stimmt. Aber die Aussage, daß ausgerichtete Strukturen schneller bearbeitet werden war völlig korrekt.

Oxmyx 26. Okt 2005 18:11

Re: Warum ist ein Boolean so groß?
 
Es war unbedacht formuliert, aber es wusste doch jeder, was ich gemeint hatte.

NicoDE 26. Okt 2005 18:47

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:
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz