type
ok=record
a:integer;
b:intger:
end;type
Pok=^ok;var
i:Pok;
begin
现在我想通过i将ok记录的成员1赋值为3,我这样写i^.a:=3;运行以后内存报错,请问应该怎么通过
记录的指针i来对a赋值呢?
ok=record
a:integer;
b:intger:
end;type
Pok=^ok;var
i:Pok;
begin
现在我想通过i将ok记录的成员1赋值为3,我这样写i^.a:=3;运行以后内存报错,请问应该怎么通过
记录的指针i来对a赋值呢?
Pok=^ok;
ok = record
a:integer;
b:integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i : Pok;
begin
New(i);
i^.a := 12;
ShowMessage(IntToStr(i^.a));
Dispose(i);
end;
这样用,要申请内存的呀。记得释放内存
必须分配内存空间。type
ok=record
a:integer;
b:integer;
end;
type
Pok=^ok;procedure TForm1.Button3Click(Sender: TObject);
var
i:Pok;
begin
i := AllocMem(Sizeof(ok));
try
i.a := 3;
i.b := 5;
Showmessage(Format('i.a=%d,i.b=%d',[i.a,i.b]));
finally
FreeMemory(i)
end;
end;
i:Pok;
begin
new(i); // 申请空间
i^.a:=3;
....
dispose(i); //释放new 和 dispose 是pascal 遗留的操作符,现在建议使用类的方式,
还有,new不能申请连续的内存实体空间,对于这点,建议使用GetMem和FreeMem来操作数组类的。
如果声明成常规变量就Delphi负责分配释放内存。
不过下面可以不用分配内存。
var
xx:ok;
yy:pok;
begin
yy:=@xx;
end;