关于用ComboBox保存代码的有关问题,ing

关于用ComboBox保存代码的问题,急ing
请问以下代码有没有问题呢?其中ad是一个数据集,cb是一个combobox。目前的现象是,show出来的不是对应项的id。

procedure   TForm1.RzButton1Click(Sender:   TObject);
begin
    cb.Clear;
    ad.First;
    while   not   ad.Eof   do
    begin
        cb.Items.AddObject(ad.fieldbyname( 'name ').AsString,
            tobject(integer(pchar(ad.FieldByName( 'id ').AsString))));
        ad.Next;
    end;
    cb.ItemIndex   :=   0;
end;

procedure   TForm1.RzButton2Click(Sender:   TObject);
begin
    showmessage(pchar(cb.items.objects[cb.itemindex]));
end;

------解决方案--------------------
procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
s:^string;
begin
for i:=0 to 10 do
begin
new( s );
s^:=InttoStr( i );
cb.Items.AddObject(s^,tobject(s));
end;
end;

procedure TForm1.cbChange(Sender: TObject);
var
s:^string;
begin
s:=Pointer(cb.items.objects[cb.itemindex]);
showmessage(s^);
end;
------解决方案--------------------
你那个不知道是不是,showmessage参数要传string类型的问题,我试了三种方法都可以的
S: String;
begin
s:= 'object ';
ComboBox1.AddItem( 'sdfsdf ', Tobject(integer(Pchar(s))));
showmessage(String(Pchar(Integer(ComboBox1.Items.Objects[0]))));
end;

s:= 'object ';
ComboBox1.AddItem( 'sdfsdf ', Tobject(Pchar(s)));
showmessage(String(Pchar(ComboBox1.Items.Objects[0])));


s:= 'object ';
ComboBox1.AddItem( 'sdfsdf ', Tobject(integer(Pchar(s))));
showmessage(Pchar(integer(ComboBox1.Items.Objects[0])));