listbox的问题
两个listbox1,listbox2.
listbox1中有 内容 1 2 3 4 5
listbox2中有 内容 5 2 4 3 1
我想将listbox2中和box1中相同内容的在box1中的索引项写入无类型文件,老是抱错!写入INI却一切正常,请高人指点。
INI的如下:
var
i:integer;
begin
ini:=Tinifile.Create( 'c:\test.ini ');
for i:=0 to ListBox2.Items.Count-1 do
if listbox1.Items.IndexOf(listbox2.Items.Strings[i]) <> -1 then
begin
ini.WriteString( 'test ',inttostr(listbox1.Items.IndexOf (listbox2.Items.Strings[i])) ,ListBox2.Items.Strings[i]);
end;
ini.Free;
end;
无类型文件的如下:
var i,j:integer;
f:file;
begin
assignfile(f, 'c:\test.dat ');
rewrite(f,1);
try
for i:=0 to ListBox2.Items.Count-1 do
if listbox1.Items.IndexOf(listbox2.Items.Strings[i]) <> -1 then
blockwrite(f,listbox1.Items.IndexOf(listbox2.Items.Strings[i]),sizeof(i));
finally
closefile(f);
end;
end;
就是这句listbox1.Items.IndexOf(listbox2.Items.Strings[i])问题,如果这样写
j:=listbox1.Items.IndexOf(listbox2.Items.Strings[i]);
blockwrite(f,j,sizeof(i)); 编译正常,却只能得到最后一个值。??????
[解决办法]
var i,j:integer;
f:file;
begin
assignfile(f, 'c:\test.dat ');
rewrite(f,1);
try
for i:=0 to ListBox2.Items.Count-1 do
if listbox1.Items.IndexOf(listbox2.Items.Strings[i]) <> -1 then
begin
j:=listbox1.Items.IndexOf(listbox2.Items.Strings[i]);
blockwrite(f,j,sizeof(i));
end;
finally
closefile(f);
end;
end;