初学delphi希望大家指点几个问题
我不太了解。则么样才能得到一个PDouble指针在我开辟的内存空间上的每个值。
int *ptr
int i;
ptr = (double *) malloc(sizeof(double) * 20);
ptr2 = ptr;
for (i=0; i <20; i++){
*ptr = i;
ptr++;
}
这个是c语言的代码,*ptr就是这个指针的所指的值
那么r任意一个不越界的地址应该就是*(ptr+i)
delphi
怎么表示呢,这个代码我是在网上copy的,所以千万别把这个代码copy过来说,我看不懂才问的
[解决办法]
试着翻译了一下你的代码。不知道这段代码是干什么用的。供参考
procedure TForm1.Button1Click(Sender: TObject);
var
Ptr, Ptr2 : PInteger;
I : Integer;
begin
GetMem(Ptr, SizeOf(double)*20);
Ptr2 := Ptr;
for I := 0 to 20 do
begin
Ptr^ := I;
Inc(Ptr);
end;
//上面这一段就是翻译的你的C代码
Ptr := Ptr2;
for I := 0 to 20 do
begin
ShowMessage(FloatToStr(Ptr^));
Inc(Ptr);
end;
Ptr := Ptr2;
FreeMem(Ptr, SizeOf(Double)*20);
end;
[解决办法]
循环取值(从头开始)的代码,已以上面给出;
如果想直接根据偏移值取值,可以这样:
var
Ptr, Ptr2 : PInteger;
I : Integer;
begin
GetMem(Ptr, SizeOf(double)*20);
Ptr2 := Ptr;
for I := 0 to 20 do
begin
Ptr^ := I;
Inc(Ptr);
end;
//上面这一段就是翻译的你的C代码 即赋值部分
Ptr := Ptr2;
integer(Ptr) := integer(Ptr)+SizeOf(integer)*3; //偏移3个integer类型的空间
ShowMessage(FloatToStr(Ptr^)); //取Double值
Ptr := Ptr2;
FreeMem(Ptr, SizeOf(Double)*20);
end;