代码如下
type
 Ttemp=record
   a:integer;
   b:string;
   c:integer;
 end;
var
 temps:array of Ttemp
begin
 setlength(temps,10);
 //然后赋值
 .....
 ....
end;现在比如我想删除temps[5],该如何操作?
网上找到个DynArrayDelete过程,一用就报错,还请高手指点,指针实在不懂..procedure DynArrayDelete(var A; elSize : Longint; index, Count: Integer);
var
  len, MaxDelete: Integer;  P : PLongint; //4 个字节的长整形指针
begin
  P := PLongint(A);// 取的 A 的地址
  if P = nil then
    Exit;
  len := PLongint(PChar(P) - 4)^; // 变量的长度 ,偏移量 -4
  if index >= len then //要删除的位置超出范围,退出
    Exit;
  MaxDelete := len - index; // 最多删除的数量
  Count := Min(Count, MaxDelete); // 取得一个较小值
  if Count = 0 then // 不要求删除
    Exit;
  Dec(len, Count);// 移动到要删除的位置
  MoveMemory(PChar(P)+index*elSize , PChar(P)+(index + Count)*elSize , (len-index)*elSize); //移动内存
  Dec(P);  //移出 “数组长度”位置
  Dec(P);  //移出“引用计数” 位置
  //重新再分配调整内存,len 新的长度. Sizeof(Longint) * 2 = 2*Dec(P)
  ReallocMem(P, len * elSize + Sizeof(Longint) * 2);
  Inc(P); // 指向数组长度
  P^ := len; // new length
  Inc(P); // 指向数组元素,开始的位置
  PLongint(A) := P;
end;