From: arne@vajhoej.dk
On 11/17/2025 1:56 PM, Simon Clubley wrote:
> On 2025-11-14, Arne Vajhøj wrote:
> These two examples _appear_ to do different things.
They both stuff an integer into a char aka circumvent
strict typing.
They do it differently.
>> $ type usaf.pas
>> var
>> c : [unsafe] char;
>> c := 65;
> This one appears to say that _all_ writes to the variable "c" are not
> checked.
Yes.
>> $ type usaf.adb
>> with Unchecked_Conversion;
>> function i2c is new Unchecked_Conversion(Source => integer, Target =>
>> character);
>>
>> c : character;
>> c := i2c(65);
>> Put(c);
> However, with this one, you get to choose which writes to "c" are checked
> by Ada.
Yes.
The Pascal example is by variable. The Ada example is by assignment.
More granular control in Ada.
> Have I understood the Pascal code correctly or is there something
> I am missing ?
No.
Only thing is that [unsafe] can be used for other things - see
the hexdump example.
Arne
--- SoupGate-Win32 v1.05
* Origin: you cannot sedate... all the things you hate (1:229/2)
|