Board index » delphi » Array of const - problem in Delphi 3

Array of const - problem in Delphi 3

I want to dynamically change the variable wi\hich is 'array of const' . I
have no idea how.
This example refers exactly to my problem:

procedure PreSetRange( Range : array of const );
begin
  while High( Range ) < 5 do  begin
// I always need at least 6 elements
       .... do something to increase number of elements ....
       ... set new element as Integer value =  MaxInt  .......
  end;

  SetRange(  Range ) ;
end;

I do not have to use the same variable 'Range' , I would be happy if
PreSetRange can
create new open array variable , take existing elements from Range and add
some
new elements. I have tried couple constructions but Delphi 3 'does not like'
them.
I will appreciate any advice.

Marek.

 

Re:Array of const - problem in Delphi 3


you can't use constants here, use an array of strings instead !!
(constants are replaced by the compiler)
good luck,

Bhas

Marek schreef:

Quote
> I want to dynamically change the variable wi\hich is 'array of const' . I
> have no idea how.
> This example refers exactly to my problem:

> procedure PreSetRange( Range : array of const );
> begin
>   while High( Range ) < 5 do  begin
> // I always need at least 6 elements
>        .... do something to increase number of elements ....
>        ... set new element as Integer value =  MaxInt  .......
>   end;

>   SetRange(  Range ) ;
> end;

> I do not have to use the same variable 'Range' , I would be happy if
> PreSetRange can
> create new open array variable , take existing elements from Range and add
> some
> new elements. I have tried couple constructions but Delphi 3 'does not like'
> them.
> I will appreciate any advice.

> Marek.

Re:Array of const - problem in Delphi 3


Hi Marek,

maybe this will help you:

procedure TellMe( Range : array of const );
var i: Integer;
begin
  for i:=0 to High(Range) do with TVarRec(Range[i]) do begin
    case VType of
      vtInteger: WriteLn(VInteger);
      vtBoolean: WriteLn(VBoolean);
      vtExtended: WriteLn(VExtended^);
      vtAnsiString: WriteLn(PString(@VAnsiString)^);
      // and so on
      else WriteLn('?');
    end;
  end;
end;

procedure PreSetRange( Range : array of const );
var
  OldLength: Integer;
  NewLength: Integer;
  i: Integer;
  NewRange: Array of TVarRec;
begin
  OldLength:=High(Range)+1;
  if OldLength>=6 then NewLength:=OldLength else NewLength:=6;
  SetLength(NewRange, NewLength);
  for i:=0 to OldLength-1 do NewRange[i]:=Range[i];
  for i:=OldLength to NewLength-1 do
    with TVarRec(NewRange[i]) do begin
      VInteger:=MaxInt;
      VType:=vtInteger;
    end;

  // now, do something with NewRange, like:
  TellMe(NewRange);
end;

Bye,
Michael

Marek schrieb:

Quote
> I want to dynamically change the variable wi\hich is 'array of const' . I
> have no idea how.
> This example refers exactly to my problem:

> procedure PreSetRange( Range : array of const );
> begin
>   while High( Range ) < 5 do  begin
> // I always need at least 6 elements
>        .... do something to increase number of elements ....
>        ... set new element as Integer value =  MaxInt  .......
>   end;

>   SetRange(  Range ) ;
> end;

> I do not have to use the same variable 'Range' , I would be happy if
> PreSetRange can
> create new open array variable , take existing elements from Range and add
> some
> new elements. I have tried couple constructions but Delphi 3 'does not like'
> them.
> I will appreciate any advice.

> Marek.

Other Threads