[fpc-pascal] const parameter writeable

2006-04-29 Thread L505

Are const parameters supposed to ensure read only access?
If so how come one can write to a typed pointer?

program project1;

{$mode objfpc}{$H+}

  type
PSomeRec = ^TSomeRec;
TSomeRec = record
  a: string;
  b: string;
end;

  procedure ChangeRec1(const Rec: PSomeRec);
  begin
Rec^.a:= 'string A';
  end;

var
  RecPtr: PSomeRec;
begin
  new(RecPtr);
  ChangeRec1(RecPtr);
  writeln(RecPtr^.a);
  dispose(RecPtr);
  readln;
end.


___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] const parameter writeable

2006-04-29 Thread Peter Vreman
>
> Are const parameters supposed to ensure read only access?
> If so how come one can write to a typed pointer?
>
> program project1;
>
> {$mode objfpc}{$H+}
>
>   type
> PSomeRec = ^TSomeRec;
> TSomeRec = record
>   a: string;
>   b: string;
> end;
>
>   procedure ChangeRec1(const Rec: PSomeRec);
>   begin
> Rec^.a:= 'string A';
>   end;
>
> var
>   RecPtr: PSomeRec;
> begin
>   new(RecPtr);
>   ChangeRec1(RecPtr);
>   writeln(RecPtr^.a);
>   dispose(RecPtr);
>   readln;
> end.

Only the pointer itself is the parameter and read-only. Where the pointer
points to is irrelevant.





___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal