大家帮小弟我看看这个程序有什么有关问题(关于listbox)

大家帮我看看这个程序有什么问题(关于listbox)
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdUDPServer, IdBaseComponent, IdComponent, IdUDPBase,
  IdSocketHandle,
  bsSkinCtrls, StdCtrls, ComCtrls, bsSkinBoxCtrls, IdUDPClient, Psock,
  NMDayTim;

type
  TForm1 = class(TForm)
  NMDayTime1: TNMDayTime;
  IdUDPClient1: TIdUDPClient;
  IdUDPServer1: TIdUDPServer;
  bsSkinRichEdit1: TbsSkinRichEdit;
  bsSkinRichEdit2: TbsSkinRichEdit;
  bsSkinLabel1: TbsSkinLabel;
  bsSkinButton1: TbsSkinButton;
  bsSkinButton2: TbsSkinButton;
  bsSkinButton3: TbsSkinButton;
  ListBox1: TListBox;
  Button1: TButton;
  procedure bsSkinButton2Click(Sender: TObject);
  procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
  procedure bsSkinButton3Click(Sender: TObject);
  procedure FormCreate(Sender: TObject);
  procedure ListBox1Click(Sender: TObject);

  private
  { Private declarations }
  procedure dealstr(str:string);
  public
  { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.dealstr(str:string); //处理数据函数
var
tempstr,user,IP,cmdstr:string;
len,i:integer;
begin
len:=length(str);
cmdstr:=copy(str,1,10);
tempstr:=copy(str,11,len-10);
if cmdstr='##online##' then
//如果为上线标志,则把上线计算机名和IP地址添加到listbox
  begin
  i:=pos(':',tempstr);
  user:=copy(tempstr,1,i-1); //取得用户名
  len:=length(tempstr);
  IP:=COPY(tempstr,i+1,len-i); //取得IP地址
  ListBox1.Items.AddObject(user,tobject(IP));//添加到listbox
  end;
end;

procedure TForm1.bsSkinButton2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
data:TStringStream;
begin
data:=TStringStream.Create('');
data.CopyFrom(adata,adata.Size);
dealstr(data.DataString);
data.Free;
end;

procedure TForm1.bsSkinButton3Click(Sender: TObject); //上线按钮单击事件
var
str:string;
begin
str:='##online##'+self.IdUDPClient1.LocalName+':'+self.NMDayTime1.LocalIP;
self.IdUDPServer1.Active:=true;
self.IdUDPClient1.Host:='255.255.255.255';
self.IdUDPClient1.Active:=true;
self.IdUDPClient1.Send(str); //如果上线则广播通知
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.Clear;
end;

procedure TForm1.ListBox1Click(Sender: TObject); //listbox的单击事件
//这儿光出问题,没法显示IP地址,帮忙看看
var
str:string;
begin
if ListBox1.ItemIndex<>-1 then
begin
str:=string(ListBox1.Items.Objects[ListBox1.itemindex]);
showmessage(str); //显示IP地址
end;
end;

end.
拜托了,编译是没有问题的,但就是当点击列表框时没法显示相应的IP地址,请帮忙看看

------解决方案--------------------
object实际就是指针 
写的时候你可以这样写 
var 
sIp:^string; 
begin 
new(sIP); 
sIP^:=IP; 
 ListBox1.Items.AddObject(user,tobject(sIP)); 


然后显示的时候 

var 
s:^string; 

s:=pointer(listbox.items.objects(listbox.itemindex)); 
showmessage(s^);