Re: Two Dimensional Arrays
Peter <[email protected]> Tue, 14 Feb 2017 15:47:43 +0000
| Newsgroups | gmane.comp.compilers.gpc |
|---|---|
| Message-ID | <[email protected]> |
On 14/02/17 15:37, Waldek Hebisch wrote:
> Peter B wrote:
>>
>> Does anyone know the syntax for initializing a dynamic array of more
>> than one dimension?
>>
>>
>> type
>> {$ifdef __GPC__}
>> tMSet (n:CWord) = Array [1..n, 1..n] Of double;
>> {$else}
>> tMSet = Array Of Array Of double;
>>
>> var
>> MSet : tMSet;
>> {$endif}
>>
>> pMSet : ^tMSet;
>>
>> ........
>>
>>
>> {$ifdef __GPC__}
>> new (pMset, n, n);
>> {$else}
>> SetLength (Mset, n, n);
>> pMSet := @Mset;
>> {$endif}
>>
>>
>> The above works in FPC, but fails in GPC on the "new" with
>> "error: `New' applied to this schema requires 1 discriminant value"
>>
>> This general approach works fine for 1D arrays.
>
> As the error message says, 'tSet' is a schema with _one_
> parameter (discrimnant). So 'new' requires single parameter,
> that is 'n'. In general you may use complicated formula to
> compute array bounds from discriminant values. GPC generated
> appropriate code so that 'new' will do right thing.
>
Hi Waldek,
Thanks. Doing "new (pMset, n)" did compile, but failed with a range
check. I had made another mistake, having GPC ranges from '1..n' whereas
the code written for FPC needs ranges fixed as '0..n-1'
Regards,
Peter
_______________________________________________
Gpc mailing list
[email protected]
https://www.g-n-u.de/mailman/listinfo/gpc