Zitat von
EWeiss:
Ich denke das ist ein bug in Delphi.
Wenn ich einen Wert strikt als boolean definiere erwarte ich auch das nur auf true
oder false geprüft wird und nicht auf integer oder byte werte.
Nein es ist ein Bug in deiner Deklaration. Wenn du von VB eine Boolschen Wert bekommen willst oder reinreichst, musst du den Datentyp LongBool/WordBool/ByteBool statt Boolean verwenden. Delphi macht dann ganz automatisch die Übersetzung von -1 nach 1 bzw. andersherum.
Delphi-Quellcode:
var
lb: LongBool;
b: Boolean;
begin
lb := True;
{ 83C8FF or eax,-$01 }
b := lb;
{ 83F801 cmp eax,$01
1BC0 sbb eax,eax
40 inc eax }
if b = True then
{ 3C01 cmp al,$01
7505 jnz +$05 }
ShowMessage('Ist True');
end;