偶很久没写过程序了,以前做数据库倒文本的时候都用过的。
就是,
var
startadd:pointer;
len:integer;
begin
getmem(startadd^,100);
socket.receivebuf(startadd^,len);
end;我现在要写个decode把内存里的这一堆东西转到一个
type
receivepack = record
cmdtype:int;
sjhm:string;
textlength:short;
text:string;
end;
里面去,我知道从这个记录怎么转到buffer,可是怎么变回来?
cmdtype:=startadd^;?这个我知道不对。真的想不起来了,还有就是pointer加一怎么加的啊?我近两年都没写过关于指针的了,都是做数据库开发,涉及到这个都是用inline assemble写的,以前觉得动态数据结构没用,现在知道错了。
就是,
var
startadd:pointer;
len:integer;
begin
getmem(startadd^,100);
socket.receivebuf(startadd^,len);
end;我现在要写个decode把内存里的这一堆东西转到一个
type
receivepack = record
cmdtype:int;
sjhm:string;
textlength:short;
text:string;
end;
里面去,我知道从这个记录怎么转到buffer,可是怎么变回来?
cmdtype:=startadd^;?这个我知道不对。真的想不起来了,还有就是pointer加一怎么加的啊?我近两年都没写过关于指针的了,都是做数据库开发,涉及到这个都是用inline assemble写的,以前觉得动态数据结构没用,现在知道错了。
解决方案 »
- 新手简单问题:如何象在PowerBuilder中一样,很简单就实现边框、3D、阴影等界面显示(如staticText、label控件)?
- 怎樣取得Windows的前帳戶的登錄名
- 软件公司面试试题,好难,紧急求助!!!
- 请(Eastunfail(龙子龙孙)==(恶鱼杀手))来看看(HOOK)
- 最近发现ehlib数据控件有个问题
- 非常急手的问题
- Delphi有没有悾件数组的概念,象VB那样。若有,怎么用?若您第一个回答正确,奉送50分
- try..except..end;各位老大,请说一下你们通常的用法,
- 关于热键和活动窗口的问题?高手们帮帮吧!
- 请教各位大侠:在哪能找到好的delphi报表制作控件?请指点几个。。
- 为何注册表里有些键能读出来,有些键读不出来???
- 菜鸟问题,高分!!!在线等待
type
Treceivepack = record
cmdtype:int;
sjhm:string[11];
end;
preceivepack = ^Treceivepack;
var
startadd:preceivepack;
len:integer;
begin
new(startadd);
getmem(startadd^,socket.receivelength);
socket.receivebuf(startadd^,len);
end;
现在问题是这样,startadd^.cmdtype是对的,可是sjhm还是有错,另外如果不说明string长度的话?就是象我开始那样用一个变量表明字串长,那该怎么办啊?
:((
getmem(startadd^,socket.receivelength);//这样再分配没有必要
我觉得socket中若数据大小正好为 sizeof(Treceivepack),且内容正确那读出应该没有问题。
ok,那我说简单一点,我只有一点不记得了
var
p:pointer;
begin
getmem(p^,socket.receivelength);
socket.receivebuf(p^,len);
现在怎么把这些数据读出来?
str:=pchar(p)^;????
是这样吧?
可是
a:byte;
a:=byte(p^)怎么不对?