读INI文件出错,急需(50分)

  • 主题发起人 主题发起人 liyijincom
  • 开始时间 开始时间
L

liyijincom

Unregistered / Unconfirmed
GUEST, unregistred user!
如下代码有什么问题?直接读值是可以的,但是却读节点有问题,执行的时候报错
会不会是Str的初始化问题?由于时间比较急,没办法去试,请高手指点一二
function GetSectionFromIni(const FileName:String):TStrings;
var
IniFile: TIniFile;
Str:TStrings;
begin
Str:=nil;
if FileExists(FileName) then
begin
IniFile:=TIniFile.Create(FileName);
IniFile.ReadSections(Str);
IniFile.Free;
end;
result:=Str;
Str.Free;
end;
 
错误是出在 IniFile.ReadSections(Str);这一句
 
function GetSectionFromIni(const FileName:String):TStrings;
var
IniFile: TIniFile;
Str:TStrings;
begin
Str:=TStringList.Create;
if FileExists(FileName) then
begin
IniFile:=TIniFile.Create(FileName);
IniFile.ReadSections(Str);
IniFile.Free;
end;
result:=Str;
Str.Free;
end;
 
Str:=TStringList.Create;
这一句运行的时候会报错:
access violation at address 0000316D read of address 744581E5
 
Str.Free
//这一句必须去掉
 
procedure GetSectionFromIni(const FileName:String
var Str: TStrings)
var
IniFile: TIniFile;
begin
if FileExists(FileName) then
begin
IniFile:=TIniFile.Create(FileName);
IniFile.ReadSections(Str);
IniFile.Free;
end;
end;

 
with TIniFile.Create(FileName) do begin
ReadSections(str);
result : str;
end;
 
错误是出在Str,你可把函数改成
function GetSectionFromIni(const FileName:String;Str:TStrings):Boolean;
var
IniFile: TIniFile;
begin
try
if FileExists(FileName) then
begin
IniFile:=TIniFile.Create(FileName);
IniFile.ReadSections(Str);
IniFile.Free;
end;
result:=True;
except
Result:=False;
endl
end;
 
都没能解决问题,各位再想想,有什么高招?谢了
 
我的测试程序,可以的。
function GetSectionFromIni(const FileName:String;Str:TStrings):Boolean;
var
IniFile: TIniFile;
begin
try
if FileExists(FileName) then
begin
IniFile:=TIniFile.Create(FileName);
IniFile.ReadSections(Str);
IniFile.Free;
end;
result:=True;
except
Result:=False;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
GetSectionFromIni('F:/PWIN98/win.ini',Memo1.Lines);
end;
 
好象有点进展,正在改程序,如果通过即该送分
 
已问题解决了,多谢zhanggm
 
后退
顶部