[fpc-pascal] about dynamic array
    Frank Peelo 
    f26p at eircom.net
       
    Fri May  7 15:16:52 CEST 2010
    
    
  
On 07/05/2010 10:29, spir ☣ wrote:
> On Fri, 7 May 2010 06:10:30 +0200
> cobines <cobines at gmail.com> wrote:
> 
> 
>>2010/5/6 spir ☣ <denis.spir at gmail.com>:
>>
>>>(By the way, started playing with TFPList already, and could not find how to get data back! I mean the symtric of add(). Even tried indexing (who knows, with the syntactic magic of modern language? ;-).)
>>
>>It is indexing.
>>
>>var
>>  l: TFPList;
>>  p: Pointer;
>>  index: Integer;
>>begin
>>  l := TFPList.Create;
>>  index := l.Add(p);
>>  p := l[index];
>>end;
>>[...]
> 
> 
> Thank you, I must have written a typo or messed up indices, since now it works fine. Still, remains a mystery about untyped pointers, illustrated by the code below:
> 
Type
   ptInteger = ^Integer;
> var
> 	l : TFPList;
> 	i : Integer;
> 	p : ^Integer;
> begin
> 	l := TFPList.Create;
> 	i := 1 ; new(p) ; p^ := i; l.Add(p);
> 	p := l[0] ; writeln(p^);
> 	writeln(l[0]^);			// error
         writeln(ptInteger(l[0])^);
> end.
i.e. cast the untyped pointer into a pointer to integer, so the compiler 
knows what type of writeln to throw it at.
(untested)
    
    
More information about the fpc-pascal
mailing list