两个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)); 编译正常,却只能得到最后一个值。??????

解决方案 »

  1.   

    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;
      

  2.   

    感谢Keyz兄,但是上面的写法不对,只写入了最后一个值。???
      

  3.   

    begin
    j:=listbox1.Items.IndexOf(listbox2.Items.Strings[i]);
    blockwrite(f,j,sizeof(i));
    end
    原来是这样的---begin/end;哈哈哈!!!!!!!