buff: array[1..64*1024] of PChar; 读成string
这个是64*1024个Pchar指针!除非你为每个指针分配内存,否则访问会出错的。
分配内存完成后
var P:PChar;
for i:=1 to 64*1024 do
begin
P:=Buff[i];
ShowMessage(StrPas(P));
end;
这个是64*1024个Pchar指针!除非你为每个指针分配内存,否则访问会出错的。
分配内存完成后
var P:PChar;
for i:=1 to 64*1024 do
begin
P:=Buff[i];
ShowMessage(StrPas(P));
end;
str : string;
size : integer;
buff: array[1..64*1024] of PChar
begin
//...........
size := //buff数组内容的长度
p := new(size);
move(buff^, p^ , size);
str := StrPas(PChar(p));
end;没经过验证,不过我感觉可以,你可以试一下
我认为你的那个指针数组还是需要for 一次,才能把东西读出来;
getdata :array of string;
begin
move(buffer^,getdata,bufferleng);
end;
动态创建的,然后赋值,会连续吗??
从头指针读数据,不知道可以不?
psocket.buff
psocket属于动态页面的1个指针
这个动态页面是c++的1个exe创建的
我在my app里读这个动态内存页面
如果是char数组,很容易读出来,可惜它是静态的
Var
Buff:PChar;Initialization
Begin
GetMem(Buff,64*1024);
End;疑问=>
Char和Pchar是完全不同的数据类型
怎么会考虑用char代替PChar?
>>如果用char代替,只能读到静态内容
>>我需要读动态内存数据
这个地方,你究竟是pchar还是char?????
如果是char,则是连续的,而且很好实现。
array[1..64*1024] of PChar