关于函数出错 ( 积分: 100 )

  • 主题发起人 主题发起人 kwmxw
  • 开始时间 开始时间
K

kwmxw

Unregistered / Unconfirmed
GUEST, unregistred user!
在 myfun中定义函数
function readinistr(ininame,secname,ident,mystr:pchar):pchar
var
myini:Tinifile;
begin
try
try
myini:=tinifile.create(ininame)
result:=myini.readstring(secname,ident,mystr);
except
on e:exception do
showmessage(e.messages);
end;
finally
myini.destroy;
end;
end;

然后在datamodule中调用
uses myfun;

readinistr('boot.ini','database','server','');
不能出现正常结果,调试出现stock overflow 请问该如何解决?
 
function ReadIniStr(IniName,SecName,Ident:string):String
var
MyIni:TiniFile;
begin
try
try
MyIni:=TIniFile.create(ExtractPath(ParamStr(0))+IniName);
Result:=MyIni.ReadString(SecName,Ident,'');
except
on E:Exception do
ShowMessage(E.messages);
end;
finally
MyIni.free;
end;
end;
 
明天回到班上我给你回个读写INI文件的函数,我写的.
 
尽量不要用string谢谢
 
Function ReadIniStr(ininame, secname, ident, mystr: PChar): PChar;
Var
myini: Tinifile;
Begin
myini := TIniFile.Create(ininame);
Result := PChar(myini.ReadString(secname, ident, mystr));
myini.Free;
End;

procedure TForm1.Button5Click(Sender: TObject);
begin // 测试正常
ShowMessage(PChar(ReadIniStr('C:/MyDBGridEh1.ini','MyDBGridEh1','FieldName.List','')));
end;
 
文件名必须是full qualified path,不能使用相对路径。另外,销毁对象不要调用Destroy,应该调用Free,Free会自动调用Destroy,另外还做一些其它的处理。
 
难道与使用delphi2007 update3 有关系?
将函数改为
function readinistr(inifile,secname,ident,istr:pchar):string;
就正常,请高手指点
 
后退
顶部