Skybuck Flying
unread,Jan 15, 2023, 5:09:32 PM1/15/23You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
The [1,2,3 ]
in
vSomething := [ 1, 2, 3 ];
or
SomeProcedure( [1,2,3] );
Can mean different things depending on:
1. If it's a dynamic array
Thinks it's an array.
2. If it's a open array parameter
2.1 Inside the function
Thinks it's a set.
vs
2.2 Outside the function
Thinks it's an array.
2.3 Using it inside open array function not allowed...
2.1 is inconsistent with rest of language design.
Little bit fuzzy/messy example but it illustrates it:
// helper routine, example:
// FillArray( Values, [ 1, 2, 3] );
procedure FillArray( var VarValues : array of integer; const ConstValues : array of integer );
var
vIndex : integer;
begin
for vIndex := 0 to Length(ConstValues)-1 do
begin
VarValues[vIndex] := ConstValues[vIndex];
end;
end;
procedure FillWithLethalInternetValuesV2( var Values : array of integer );
var
vArray : array of integer;
begin
// strangely enough Delphi thinks this is a set !?! LOL WTF. maybe because 1,2,3 is part of an integer set ?
Values := [ 1, 2, 3 ]; // Problem with Delphi language, Delphi thinks it's a SET instead of an ARRAY ?!?!
// ^ inconsistent design between open array parameters and sets...
FillArray( Values, [ 1, 2, 3] ); // open array parameter, also known as open array constructor syntax.
// even more confusing is that nowadays dynamic array constructors are also possible:
vArray := [ 1, 2, 3 ];
end;
Bye for now,
Skybuck.