读取ini文件报错(50分)

  • 主题发起人 主题发起人 waterflow
  • 开始时间 开始时间
W

waterflow

Unregistered / Unconfirmed
GUEST, unregistred user!
我想从ini文件中读取信息,调用GetPrivateProfileString,但是好像有点问题
代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var Sectname,KeyName:LPCTSTR;
; ; CurrentDir,FileName,DefaultStr,ResultString:String;
; ; aa:DWord;
begin
; ;CurrentDir:=GetCurrentDir();
; ;FileName:=CurrentDir+'/'+'test.ini';
; ;Showmessage(FileName);
; ;DefaultStr:='nil'+'/0';
; ;Sectname:=PChar(trim(Edit4.Text));
; ;KeyName:=PChar(trim(Edit5.text));
; ;aa:=GetPrivateProfileString(SectName,KeyName,PChar(DefaultStr),
; ; ; ; ; ; ; ; ; ; ; ; ; ; PChar(ResultString),100,Pchar(filename)
; ;);
; ;if ResultString<>null then Edit6.text:=ResultString;
end;
在执行到GetPrivateProfileString时报错:
; ;accessviolation at address 77f87ffb in module 'ntdll.dll'
write of address d0404785
为何,我调用WritePrivateProfileString很正常,我的机器是nt 2000 server
谢谢
 
你可以用readln(...)
 
var IniFile: TIniFile;
begin
; IniFile := TIniFile.Create('/.../test.ini');
; try
; ; IniFile.ReadString(section, ident, default);
; finally
; ; IniFile.Free;
; end;
end;
 
上述问题好像可以通过将DefaultStr:='nil'+'/0';改为:
DefaultStr:=trim(Edit7.text); ;其中edit7中有文本,若没有的话也会报错
但是还碰到一个问题,好像如果sectname和keyname在员文件中没有也会报错,这是为何?
另外:虽然可以通过上述改变可以看到所希望的结果,但是关闭程序后会跳出包含一堆
汇编语句的报错框,为何?
估计这是字符串结束符的问题,我记得vc中好像是'/0'表示结束。
谁能够解释清楚如何处理,我的头有点大
3x


btw:
; 我觉得用readln不好,若如此,直接读写txt文件即可
 
接受答案了.
 
后退
顶部