I've never thought to accomplish an array this way. Would you mind clearing up a few details?
1. What is the purpose of the input variable, History?
2. Where are you defining "temp" and is it another Pointer?
3. If you wouldn't mind briefly explaining what's going on in your example, that'd be very helpful; it'd be great to really understand what's going on here.
#1: It's the same as the history in your example, a input array of values, but instead of just writing History as the input you write Adr(History)
#2: My bad, all Temp should be Item
#3: Basically my example just fills the input history with the value;
Size:INT; (* Size of the array *)
History: POINTER TO INT; (* Same as History: ARRAY[0..Size-1] OF INT; *)
Item: POINTER TO INT;
(* Just save a local copy of History *)
FOR I:= 1 to Size do
(* History[I]:= Value; *)
(* Goto the next item in the array *)
Item:= Item+ SIZEOF(Temp^);