Hallo,
Bei meinem Code wird die Zeile getOutput(T_Input(arr[2])) falsch compiliert.
Es wird ein falscher Parameterwert übergeben (siehe Bild).
Wenn ich den Parameterausdruck vorher in eine Zwischenvariable kopiere, dann tritt der Fehler nicht auf.
Gruß
Thomas.AC
program Test;
Device = mega2560, VCC=5;
Import SysTick;
Define
// System
ProcClock = 8000000; //Hertz
SysTick = 5;
StackSize = 256, iData;
FrameSize = 256, iData;
Implementation
{$IDATA}
type
T_Input = (IN0, IN1, IN2, IN3);
const
VAL2 : byte = 2;
var
arr : array[0..4] of byte;
procedure getOutput(input : T_Input);
begin
// Fehler: input ist ungleich 3 bzw. IN3
NOP; // nur für breakpoint
end;
begin
arr[0] := 3;
arr[1] := 3;
arr[2] := 3;
arr[3] := 3;
arr[4] := 3;
loop
getOutput(T_Input(arr[2])); // Aufruf mit 3
endloop;
end Test.
Bei meinem Code wird die Zeile getOutput(T_Input(arr[2])) falsch compiliert.
Es wird ein falscher Parameterwert übergeben (siehe Bild).
Wenn ich den Parameterausdruck vorher in eine Zwischenvariable kopiere, dann tritt der Fehler nicht auf.
Gruß
Thomas.AC
Code
program Test;
Device = mega2560, VCC=5;
Import SysTick;
Define
// System
ProcClock = 8000000; //Hertz
SysTick = 5;
StackSize = 256, iData;
FrameSize = 256, iData;
Implementation
{$IDATA}
type
T_Input = (IN0, IN1, IN2, IN3);
const
VAL2 : byte = 2;
var
arr : array[0..4] of byte;
procedure getOutput(input : T_Input);
begin
// Fehler: input ist ungleich 3 bzw. IN3
NOP; // nur für breakpoint
end;
begin
arr[0] := 3;
arr[1] := 3;
arr[2] := 3;
arr[3] := 3;
arr[4] := 3;
loop
getOutput(T_Input(arr[2])); // Aufruf mit 3
endloop;
end Test.
Attachments
Filename: | avrcoBug_ByteArrayEnumTypecast.png |
Filesize: | 34.83 KB |
Title: | Simulatorausgabe |
Download counter: | 93 |