求助,函数GetPrivateProfileString()在winxp+Delphi7环境下出错!(100分)

  • 主题发起人 主题发起人 zenithyh
  • 开始时间 开始时间
Z

zenithyh

Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下:<br>var<br>&nbsp; xpass : Pchar;<br>begin<br>&nbsp; &nbsp;xpass :='123234';<br>&nbsp; &nbsp;GetPrivateProfileString(<br>&nbsp; &nbsp; &nbsp; 'UserDefine', &nbsp; &nbsp; &nbsp; &nbsp;// section name<br>&nbsp; &nbsp; &nbsp; 'password', &nbsp; &nbsp; &nbsp; &nbsp;// key name<br>&nbsp; &nbsp; &nbsp; '', &nbsp; &nbsp; &nbsp; &nbsp;// default string<br>&nbsp; &nbsp; &nbsp; xpass, &nbsp;// destination buffer<br>&nbsp; &nbsp; &nbsp; 20, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// size of destination buffer<br>&nbsp; &nbsp; &nbsp; 'E:/laser/Projects/Delphi7/test1/zenithlock.ini' &nbsp; &nbsp; &nbsp; &nbsp;// initialization file name<br>&nbsp; &nbsp; &nbsp; );<br>&nbsp; &nbsp;edit3.Text := xpass;<br>end;<br>程序运行至GetPrivateProfileString()时错误<br>错误信息:<br>http://www.topdelphi.com/UploadFile/200361174141.gif<br>希望大家帮忙解决,先谢谢!
 
你看看TIniFile.ReadSection这个函数吧。
 
用TIniFile这个对象解决了问题!<br>不过那个api函数不知道在winxp下为什么不行呢?
 
xpass你都没分配内存<br>改成 <br>var<br>&nbsp; xpass:array[0..19] of char
 
xpass你都没分配内存<br>改成 <br>var<br>&nbsp;xpass:array[0..19] of char &nbsp;<br><br>其实不是xp特别不同,在哪个操作系统都不对,只是可能某个操作系统恰好没报告错误
 
和winxp没有关系,确实是你没有给xpass分配内存。
 
问题已经解决!<br>代码如下:<br>var<br>&nbsp; xpass : string;<br>&nbsp; MyIniFile: TIniFile;<br>begin<br>&nbsp; MyIniFile := TIniFile.Create(getcurrentdir+'/zenithlock.ini');<br>&nbsp; with MyIniFile do<br>&nbsp; begin<br>&nbsp; &nbsp; &nbsp;xpass := ReadString('UserDefine', 'password', '888');<br>&nbsp; end;<br>&nbsp; MyIniFile.Free;<br>&nbsp; Form_baseset.edit3.Text := xpass;<br>end;<br>这里我也没有给xpass分配内存啊,可是怎么通过了?
 
GetMem(xpass,255);
 
string类型是自动内存管理的。
 
PChar只是一个指针,初始并没有指向什么有效的内存<br>string实际是一个记录,它是分配内存的
 
多谢各位,感谢!
 
后退
顶部