Vincent Snijders schrieb:
>> type
>>  TVertex = record
>>    x: double;
>>    y: double;
>>  end;
>>  PVertex = ^TVertex;
>>
>>  TEdge = record
>>    v1: PVertex;
>>    v2: PVertex;
>>  end;
.
.
>>  Result := @vert_list[vert_count - 1];
>
> I think this is not correct. If you increase the size of vert_list,
> then the array may be relocated and Result isn't a valid pointer
> anymore.

True.

I think it would be better to change the type of "vert_list" to

type vert_list : array of PVertex;

This would have two advantages:

1.) Array sorting and reallocation would be faster because only a pointer to each element is stored in the array and if the element type is changed (increases in size) it would not affect performance.

2.) Assignments as "Result := @vert_list[vert_count - 1];" would convert to "Result := vert_list[vert_count - 1];" and therefore references to the element itself would be unaffected by array resorting.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to