delphi动态数组如何去掉一个元素
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;
procedure TForm1.Button2Click(Sender: TObject);
type
Ttemp=record
a:integer;
b:string;
c:integer;
end;
var
temps:array of Ttemp;
i: Integer;
begin
setlength(temps,10);
相关问答:
已知Python 中:
s = unicode("测试", "gb2312")
s = u'\u6d4b\u8bd5'
print s
测试
在Delphi里面如何将\u6d4b\u8bd5这样的还原成Gb2312的汉字呢?
找到个方法
......
Delphi 像亡国的南宋,试问这语言还有前途吗?
Win32开发不如C#;
面像对像开发不如JAVA;
系统开发不如VC++6.0;
能用性不如VB6.0;
不支持Web开发。。。
出个Delphi 2010免费一年会有人用吗?
......
我写了个小程序,上面添加了一个shockwaveflash控件,然后在movie里写入swf文件的路径,然后执行没有问题。
当我把这个程序转移到另一台电脑执行时, shockwaveflash 控件显示空白。也就是没有加载那个swf文件。 ......
我先用idhttp 的get方法访问一个网站,网站返回了一段cookie,当我 调用 idhttp post方法的时候,我如何把服务器返回的这段cookies带上 ,先谢谢各位了
读取 HTTP Response Header
里面有 Set-Cookies 域 ......