SpcCode
SpcCode

Reputation: 917

Unchecked Conversion for different array length

I am having a constraint error on the following situation:

Get constrained buffer from procedure:

Get_MyBuffer(data => Buffer); -- This is ok

Buffer is of type Unsigned_Byte. Want to convert it to Byte.

function To_Byte is new Unchecked_Conversion (Source => Unsigned_Byte,
                                              Target => Byte);
MyFunction2Pass(To_Byte(Buffer)); -- Having warning 'uncheked conversion to unconstrained array subtype is not portable.

Printing inside MyFunction2Pass

function MyFunction2Pass(Data : Byte) is
begin
    New_Line(integer'image(integer(Data(1)))); -- **Shoot Constrain Error**
end

Upvotes: 1

Views: 731

Answers (1)

T.E.D.
T.E.D.

Reputation: 44804

That one line of yours is doing an awful lot. There's nothing wrong with that, but it is temporarily inconvienent while you are getting this exception. You might consider splitting each routine call into its own line for now, just so you can track down which call is putting out the constraint error.

    Bit     : constant boolean := Data(1);  -- I'm guessing this is the right type
    Bit_Int : constant integer := integer(Bit);
    Bit_Img : constant string  := integer'image(Bit_Int);
begin
    New_Line (Bit_Img);
end

Now which line is giving the constraint error? (After cleaning up any compiler errors of course).

Upvotes: 1

Related Questions