Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#5

AW: Bitweise Parameter füllen in Delphi

  Alt 29. Jun 2019, 10:41
Wenn ich nur citCreate übergebe, bekomme ich 2 zurück.
Wenn ich nur citVerify übergebe, bekomme ich 4 zurück.
Bei beiden Werten bekomme ich 6 zurück.
Die Werte stimmen aber nicht mit der Enmueration überein.
Tun sie doch!

Delphi-Quellcode:
TCreateImageTask = (
  citCreate = 1,
  citVerify
);
In Delphi hat das erste Element einer Enumeration den Ordinalwert 0 - außer man überschreibt das explizit, wie du das mit citCreate = 1 machst. Damit bekommt citCreate den Ordinalwert 1 und citVerify den Ordinalwert 2.

Baust du aus nun aus diesen Werten ein Set, daß du dann als Integer auswertest, dann entspricht ein citCreate einem Wert von 2^1 = 2 und citVerify von 2^2 = 4. Sind beide gesetzt, kommt logischerweise eine 6 heraus. Das passt zu deinen Beobachtungen.

Ich konnte jetzt aber noch keine Beschreibung entdecken, wie der Gegenpart (die DLL) die Daten erwartet. Deswegen kann ich auch nicht sagen, wie es richtig heißen muss.

Außerdem wäre die Angabe deiner Delphi-Version hilfreich. Nur so können wir hier qualifizierte Antworten zu geben, die auch von deiner Version unterstützt werden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat