![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
[Delphi]ini保存Listbox的问题。
怎么保存Listbox中的所有Items,比如1111122222333334444455555我保存的时候写fori:=0toRzListBox_Test.Items....
怎么保存Listbox中的所有Items,比如
11111
22222
33333
44444
55555
我保存的时候写
for i:=0 to RzListBox_Test.Items.Count-1 do
begin
myinifile.WriteString('ListBox','CeShi',RzListBox_Test.Items.Strings[i]);
end;
读取的时候写
RzListBox_Zj.Items.Add(myinifile.ReadString('ListBox','PickGoods',''));
这样只能读出来一个,我改了两下,有的时候第一行还是 '' 空的
哪位给个实例,能够全部保存下来,而且读取的时候第一行不为空?
已经解决,但是如果用户是第一次打开软件的话,Listbox的第一行是空的,不知道有没有解决方案。。
count:=myinifile.readinteger('ListBox','count',1);
with myinifile do
begin
for i:=0 to Count do
begin
RzListBox_Text.Items.Add(myinifile.ReadString('ListBox','CeShi'+IntToStr(i),''));
end;
end;
读取那里,默认第三个参数为空,除了我不让他默认为空外,还有没有其他方法,让第一行看着是空的,“实际”上也是空的,现在的情况是,看着是空的,但是鼠标能点到。 展开
11111
22222
33333
44444
55555
我保存的时候写
for i:=0 to RzListBox_Test.Items.Count-1 do
begin
myinifile.WriteString('ListBox','CeShi',RzListBox_Test.Items.Strings[i]);
end;
读取的时候写
RzListBox_Zj.Items.Add(myinifile.ReadString('ListBox','PickGoods',''));
这样只能读出来一个,我改了两下,有的时候第一行还是 '' 空的
哪位给个实例,能够全部保存下来,而且读取的时候第一行不为空?
已经解决,但是如果用户是第一次打开软件的话,Listbox的第一行是空的,不知道有没有解决方案。。
count:=myinifile.readinteger('ListBox','count',1);
with myinifile do
begin
for i:=0 to Count do
begin
RzListBox_Text.Items.Add(myinifile.ReadString('ListBox','CeShi'+IntToStr(i),''));
end;
end;
读取那里,默认第三个参数为空,除了我不让他默认为空外,还有没有其他方法,让第一行看着是空的,“实际”上也是空的,现在的情况是,看着是空的,但是鼠标能点到。 展开
2个回答
展开全部
你上面的for i:=0 to Count do改成for i:=1 to Count do就行。
如果ReadString('ListBox','CeShi'+IntToStr(i),''));CeShi这个子项名不变的话,你只能得到最后一项的值,前面的就都覆盖掉了
这样,你不要用INI,直接读TXT
//保存listbox里面的项到'ListText.txt'文件
ListBox1.Items.SaveToFile(ExtractFilePath(Application.ExeName)+'ListText.txt');
//将'ListText.txt'文件里面的内容读入listbox
ListBox1.Clear;
ListBox1.Items.LoadFromFile(ExtractFilePath(Application.ExeName)+'ListText.txt')
这样很简便的
如果按照ini方法,你必须建立一个项,保存listbox的项目数量,然后再一条一条的读进来
这样
uses inifiles
//写出文件
var
system:TIniFile;
i:integer;
begin
system:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'ListText.ini'); //创建ini文件
system.writeinteger('系统配置','项目总数',ListBox1.count);
for i:=0 to ListBox1.count-1 do
begin
system.writestring('系统配置',Pchar('项目'+IntToStr(i)),ListBox1.Items.Strings[i]); //循环写入listbox里面的值
end;
system.Free;
end;
//读入文件
var
system:TIniFile;
a,i:integer;
begin
system:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'ListText.ini');
i:=system.Readinteger('系统配置','项目总数',0);
ListBox1.Clear;
for a:=0 to i-1 do
begin
ListBox1.Items.Add(system.ReadString('系统配置',Pchar('项目'+IntToStr(a)),''));
end;
system.Free;
end;
如果ReadString('ListBox','CeShi'+IntToStr(i),''));CeShi这个子项名不变的话,你只能得到最后一项的值,前面的就都覆盖掉了
这样,你不要用INI,直接读TXT
//保存listbox里面的项到'ListText.txt'文件
ListBox1.Items.SaveToFile(ExtractFilePath(Application.ExeName)+'ListText.txt');
//将'ListText.txt'文件里面的内容读入listbox
ListBox1.Clear;
ListBox1.Items.LoadFromFile(ExtractFilePath(Application.ExeName)+'ListText.txt')
这样很简便的
如果按照ini方法,你必须建立一个项,保存listbox的项目数量,然后再一条一条的读进来
这样
uses inifiles
//写出文件
var
system:TIniFile;
i:integer;
begin
system:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'ListText.ini'); //创建ini文件
system.writeinteger('系统配置','项目总数',ListBox1.count);
for i:=0 to ListBox1.count-1 do
begin
system.writestring('系统配置',Pchar('项目'+IntToStr(i)),ListBox1.Items.Strings[i]); //循环写入listbox里面的值
end;
system.Free;
end;
//读入文件
var
system:TIniFile;
a,i:integer;
begin
system:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'ListText.ini');
i:=system.Readinteger('系统配置','项目总数',0);
ListBox1.Clear;
for a:=0 to i-1 do
begin
ListBox1.Items.Add(system.ReadString('系统配置',Pchar('项目'+IntToStr(a)),''));
end;
system.Free;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询