Delphi读INI文件小节到TListBox的问题
Delphi读INI文件小节到TListBox的问题有一个INI文件,小节数有2000左右,我想将其读入一ListBox中,发现只能读640个小节,是不是INI读取有限制...
Delphi读INI文件小节到TListBox的问题
有一个INI文件,小节数有2000左右,我想将其读入一ListBox中,发现只能读640个小节,是不是INI读取有限制,还是其它原因?
如下程序:
var sSelTxt,sNow:string;
MyIniFile: TIniFile;
sStrList:TStrings;
i:integer;
begin
try
sStrList := TStringList.Create;
MyIniFile:= TIniFile.Create(sDir+'\'+'Info.ini');
MyIniFile.ReadSections(sStrList);
//MyIniFile.ReadSections(ListBox2.Items); 也可这样直接取数
with ListBox2 do begin
Items.Assign(sStrList);
ItemIndex := 0;
end;
finally
sStrList.free;
MyIniFile.Free;
end; //end try
end;
试了 TheFiend 的方法,不行;
我看应该是TStrings的问题,“sStrList”读出来就只有640小节,请问有解决方法吗?谢谢! 展开
有一个INI文件,小节数有2000左右,我想将其读入一ListBox中,发现只能读640个小节,是不是INI读取有限制,还是其它原因?
如下程序:
var sSelTxt,sNow:string;
MyIniFile: TIniFile;
sStrList:TStrings;
i:integer;
begin
try
sStrList := TStringList.Create;
MyIniFile:= TIniFile.Create(sDir+'\'+'Info.ini');
MyIniFile.ReadSections(sStrList);
//MyIniFile.ReadSections(ListBox2.Items); 也可这样直接取数
with ListBox2 do begin
Items.Assign(sStrList);
ItemIndex := 0;
end;
finally
sStrList.free;
MyIniFile.Free;
end; //end try
end;
试了 TheFiend 的方法,不行;
我看应该是TStrings的问题,“sStrList”读出来就只有640小节,请问有解决方法吗?谢谢! 展开
2个回答
展开全部
读取时你这样读的.
但是一直没有遇到这么大的ini,所以没有遇到你这个问题.
通过查看delphi源代码.发现
procedure TIniFile.ReadSections(Strings: TStrings);
const
BufSize = 16384;
var
Buffer, P: PChar;
begin
GetMem(Buffer, BufSize);
try
Strings.BeginUpdate;
try
Strings.Clear;
if GetPrivateProfileString(nil, nil, nil, Buffer, BufSize,
PChar(FFileName)) <> 0
then
begin
P := Buffer;
while P^ <> #0 do
begin
Strings.Add(P);
Inc(P, StrLen(P) + 1);
end;
end;
finally
Strings.EndUpdate;
end;
finally
FreeMem(Buffer, BufSize);
end;
end;
它只读取了 16384 个字节.所以存在限制.楼主可以自己手动改一下.
但是一直没有遇到这么大的ini,所以没有遇到你这个问题.
通过查看delphi源代码.发现
procedure TIniFile.ReadSections(Strings: TStrings);
const
BufSize = 16384;
var
Buffer, P: PChar;
begin
GetMem(Buffer, BufSize);
try
Strings.BeginUpdate;
try
Strings.Clear;
if GetPrivateProfileString(nil, nil, nil, Buffer, BufSize,
PChar(FFileName)) <> 0
then
begin
P := Buffer;
while P^ <> #0 do
begin
Strings.Add(P);
Inc(P, StrLen(P) + 1);
end;
end;
finally
Strings.EndUpdate;
end;
finally
FreeMem(Buffer, BufSize);
end;
end;
它只读取了 16384 个字节.所以存在限制.楼主可以自己手动改一下.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询