当前位置:主页>delphi盒子/delphi园地/编程技巧> 文章内容

指针的赋值问题

发布时间:2010-05-01 | QQ免费站
1楼: 我在写一个能实现简单的socket通信的程序,有自己定义的数据类型
type
Tdata=record//程序消息传送数据类型
fromhost:string;
tohost:string;
xiaoxi:string;
mingling:integer;
end;
PPTdata=^Tdata;
type
Thost=record //服务端记录登陆的客户端
addr:string;//socket的地址
hdle:Thandle;//socket的句柄
hostname:string;//客户端主机名
end;
问题出现在我在给PPTdata=^Tdata;的指针对象赋值的时候,只要一进行那步操作就报错
就象
pdata^.mingling:=serversend;
pdata^.xiaoxi:='服务器公告:'+sEdit1.Text;
只要一进行这步操作就出现问题,我都不知道问题出现在什么地方,请个问路过的大侠指点一下。
我也看过delphi5的开发人员指南,应该赋值是没错的,但是。。。。。。。。。。
本人都是自学的,基本功不是很好,请大家见量。。。。。。

2楼: 比较以下两行:
PPTdata=^Tdata;
pdata^.mingling:=serversend;
pdata是什么?

3楼: 把
Tdata=record//程序消息传送数据类型
fromhost:string;
tohost:string;
xiaoxi:string;
mingling:integer;
end;

PPTdata=^Tdata; 字串4

这两段位置换一下。

4楼: pdata是指针,要先申请内存!
如果这样:Data: TData;则不需要申请内存,直接这样赋值:
Data.mingling:=serversend;

5楼: pdata:=new(PPTdata)后再操作

6楼: PPTdata=^Tdata;
Tdata=PACKED record//程序消息传送数据类型
fromhost:string[20];
tohost:string[30];
xiaoxi:string[120];
mingling:integer;
end;
string只是一个指向字符串的指针
var a:pdata
begin
now(a);
a.fromhost:='';
end;如管家婆未能找到存储过程

7楼: 不懂指针的去死!!

8楼: 楼上的懂指针么?表示怀疑中...

9楼: unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;



type
Tdata=record//程序消息传送数据类型
fromhost:string;

字串6


tohost:string;
xiaoxi:string;
mingling:integer;
end;
PPTdata=^Tdata;
type
Thost=record //服务端记录登陆的客户端
addr:string;//socket的地址
hdle:Thandle;//socket的句柄
hostname:string;//客户端主机名
end;



var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
pdata:PPTdata;
begin
pdata^.xiaoxi:='服务器公告:';
showmessage(pdata^.xiaoxi);
end;

end.

10楼: 各位不好意思了,连这么简单的问题都来麻烦大家真是不好意思,正如上面的wolaixue、P_lilac、xmcccc说的一样,我没有在使用指针之前申请内存,这是在c中的不扎实功底遗传下来的,非常不好意思,麻烦大家这么久
借此机会,也奉劝大家一句:一定要把基础打好。。。。。。。。。

11楼: 多人接受答案了。