[fpc-devel] Array assignment operator
Gennady Agranov
gennadyagranov at gmail.com
Mon Nov 5 01:00:03 CET 2018
On 11/4/2018 5:24 PM, Sven Barth via fpc-devel wrote:
> Am So., 4. Nov. 2018, 20:36 hat Gennady Agranov
> <gennadyagranov at gmail.com <mailto:gennadyagranov at gmail.com>> geschrieben:
>
> On 11/4/2018 11:24 AM, Sven Barth via fpc-devel wrote:
>> Am So., 4. Nov. 2018, 12:23 hat Schindler Karl-Michael
>> <karl-michael.schindler at web.de
>> <mailto:karl-michael.schindler at web.de>> geschrieben:
>>
>>
>>
>> > Am 04.11.2018 um 12:00 schrieb Ben Grasset
>> <operator97 at gmail.com <mailto:operator97 at gmail.com>>:
>> >
>> > From: Ben Grasset <operator97 at gmail.com
>> <mailto:operator97 at gmail.com>>
>> > To: FPC-Devel users discussions
>> <fpc-devel at lists.freepascal.org
>> <mailto:fpc-devel at lists.freepascal.org>>
>> > Subject: Re: Array assignment operator
>> > Message-ID:
>> <CAL4d7FjPfX-ysT6Z3--fhPR9Pts-N47ksFN6m2pHD7SunzwpJg at mail.gmail.com
>> <mailto:CAL4d7FjPfX-ysT6Z3--fhPR9Pts-N47ksFN6m2pHD7SunzwpJg at mail.gmail.com>>
>> > Content-Type: text/plain; charset="utf-8"
>> >
>> > On Sat, Nov 3, 2018 at 4:44 PM Gennady Agranov
>> <gennadyagranov at gmail.com <mailto:gennadyagranov at gmail.com>>
>> > wrote:
>> >
>> >> Hi,
>> >>
>> >> Leaving aside the reason why the MiSchi's solution doesn't
>> work the main
>> >> question is still not answered :)
>> >>
>> >> If you have integer dynamic array "MyArray" is there a way
>> for the
>> >> following statement to compile and work correctly:
>> >>
>> >> MyArray := 5;
>> >>
>> >
>> > Uh, yes? That's what my example showed.
>>
>> In your example the length of the array was set to the number
>> and the elements of the array assigned to their index,
>> whereas my intention is to keep the length of the array and
>> fill all elements to the same number.
>>
>>
>> The operator always creates a new array and does not modify the
>> existing one.
>> You'd need to abuse a binary operator (e.g. >< or even <=) for this.
>>
>> Regards,
>> Sven
>>
>>
>>
>> _______________________________________________
>> fpc-devel maillist -fpc-devel at lists.freepascal.org
>> <mailto:fpc-devel at lists.freepascal.org>
>> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>
> I was thinking that type helper might work - e.g.
> MyArray.SetValue(5) and with using properties MyArray.Value := 5
>
> But seems that even simple type helper is not working anymore?
>
> E.g. I was not able to compile example from
> http://wiki.freepascal.org/Helper_types :(
>
> TTypeHelper= type helperfor Integer
> procedure SetZero;
> end;
>
> Did you add {$modeswitch typehelpers}?
>
> If so, what is the error you get?
>
> Regards,
> Sven
>
>
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
My error was caused by the fact that I was using delphi mode - when I
used the mode switch it worked perfectly :)
The original problem is solved - at least the way I see it - in FPC you
can add method to the array :)
Cool!
Thanks!
{$MODESWITCH TYPEHELPERS}
program arrayset;
type
abc = array of integer;
abc_helper = type helper for abc
procedure SetValue(value: integer);
procedure Print;
end;
procedure abc_helper.SetValue(value: integer);
var
i: integer;
begin
for i := Low(self) to High(self) do
self[i] := value;
end;
procedure abc_helper.Print;
var
i: integer;
begin
for i := Low(self) to High(self) do
Writeln('[',i,'] = ',self[i]);
end;
var
a: abc;
begin
SetLength(a,10);
a.SetValue(5);
a.Print;
end.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20181104/3388ac29/attachment.html>
More information about the fpc-devel
mailing list