Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

CreateFiber Deklaration in der Windows.pas

  Alt 1. Apr 2008, 10:52
Ich habe mich gerade mit Fiber beschäftigt um mein Threading Tutorial zu vervollständigen. Dabei bin ich auf etwas mir unverständliches gestossen.

Laut SDK ist CreateFiber wie folgt deklariert:
Code:
LPVOID WINAPI CreateFiber(
  SIZE_T dwStackSize,
  LPFIBER_START_ROUTINE lpStartAddress,
  LPVOID lpParameter
);
Es wird also ein Zeiger zurückgegeben, weil
Zitat:
If the function succeeds, the return value is the address of the fiber.
Als ich eine Demo schreiben wollte, hat mich Delphi immer mit Fehlermeldungen zugeschmissen, weil die Typen angeblich nicht zusammenpassen würden. Nach einem Blick in die Windows.pas wurde mir auch klar warum:
Delphi-Quellcode:
function CreateFiber(dwStackSize: DWORD; lpStartAddress: TFNFiberStartRoutine;
  lpParameter: Pointer): BOOL; stdcall;
Man achte auf den Rückgabetyp: BOOL.

Jetzt frage ich mich, was soll das? Steckt da ein tieferer Sinn drin, dass Borland den Rückgabetyp geändert hat? Und dann noch in einen, für mich ziemlich unsinnigen. BOOL entspricht zwar LongBool, welches vier Byte groß ist und somit einen Zeiger beinhalten kann, aber um an den Zeiger dran zukommen ist ein Cast erforderlich.

Also warum hat sich Borland hier für BOOL entschieden und nicht für Pointer? Letztendlich habe ich mir die nötigen Funktionen alle selber noch mal deklariert, damit die Dokumentation zum Quellcode passt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat