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免费一年会有人用吗?
......
就是一个服务端和一个客户端,里边有一些共用单元 ,我在 工程的SEARCH PATH里设置的路径,
里边有个结构体,我在服务端打开,加了成员,但是我在客户端其他单元访问不到我新加的,我在客户端打开那个单元,确实加� ......
请教各路高手。武林前辈。我将B.EXE做成资源文件,然后加到123.dll中。用A.EXE来调用123.dll中的B.EXE
请各位前辈帮忙指教下。A.exe如何来调用dll中的exe?代码又该如何写?
先把b.exe还原出来在调用,应该是� ......
请教各路高手。武林前辈。我将B.EXE做成资源文件,然后加到123.dll中。用A.EXE来调用123.dll中的B.EXE
请各位前辈帮忙指教下。A.exe如何来调用dll中的exe?代码又该如何写?
无人回答?
做成资源� ......