载入:
pBox.Items.AddObject(trim(pQuery.FieldValues[VIEWFIELD]),TObject(pQuery.FieldByName(TEXTFIELD).AsString));pQuery.FieldByName(TEXTFIELD)有可能是整数、小数和字符
读:
var strValue:string; if pBox.ItemIndex>=0 then
strValue:=string(pBox.Items.Objects[pBox.ItemIndex])
else
strValue:='';为什么 我读出来的值是乱码????????
pBox.Items.AddObject(trim(pQuery.FieldValues[VIEWFIELD]),TObject(pQuery.FieldByName(TEXTFIELD).AsString));pQuery.FieldByName(TEXTFIELD)有可能是整数、小数和字符
读:
var strValue:string; if pBox.ItemIndex>=0 then
strValue:=string(pBox.Items.Objects[pBox.ItemIndex])
else
strValue:='';为什么 我读出来的值是乱码????????
begin
close;
sql.clear;
sql.add('select * from department order by departmentid');
open;
end;
while not datamodule1.qdepartment.eof do
begin
combobox4.items.Add(datamodule1.qdepartment.fieldbyname('departmentname').Value,datamodule1.qdepartment.fieldbyname( 'departmentname ').Value);
datamodule1.qdepartment.Next; //数据后移
end;
读取时,使用:
如是整型integer(combobox4.items.Objects[Combobox4.ItemIndex])
其余类型类似...
AddObject 可以传一个指针进去,或一个对象.
string 的生存周期决定了你的用法是错误的.
而第2个参数是一个指针引用,即把过程中的string的首址传给list的FObject,这样肯定就受到string计数机制的影响。轻则乱码,重则内存错误。所以建议在使用Addobject时,第2个参数尽量用一个基本数据类型,如integer等。
pBox.Items.AddObject(trim(pQuery.FieldValues[VIEWFIELD]),Pointer(pQuery.FieldByName(TEXTFIELD).AsInteger));
Ttest=Class(TObject)
VIEWFIELD:String;
TEXTFIELD:String;
end;
....var
ob_Test:Ttest;
begin
....
while not pQuery.Eof do
begin
ob_Test:=Ttest.Create;
ob_Test.VIEWFIELD:=pQuery.FieldByName('VIEWFIELD').asString;
ob_Test.TEXTFIELD:=pQuery.FieldByName('TEXTFIELD').asString;
pBox.Items.AddObject(ob_Test.VIEWFIELD,ob_Test);
pQuery.next;
end;....
strValue:=string(pBox.Items.Objects[pBox.ItemIndex] as Ttest).VIEWFIELD; strValue:=string(pBox.Items.Objects[pBox.ItemIndex] as Ttest).TEXTFIELD;