首页 > 代码库 > 【温故Delphi】Win32API之GetTempFileName
【温故Delphi】Win32API之GetTempFileName
所遇问题
新建的算量工程文件暂时保存到临时文件中,代码中调用了Win32 API——GetTempFileName
但在一台笔记本上,函数返回了一个空字符串!
为了查明原因想到了好用的GetLastError——返回错误信息。
结果错误信息为“拒绝访问”,这让我很快想到了传入文件夹用户权限问题。
经过检验,果然当前用户没有传入文件夹的写权限。
1 function GetTempFileA(const APrefix: string; const APath: string): string; 2 var 3 sPath: string; 4 nErrCode: UINT; 5 begin 6 SetLength(Result, MAX_PATH); 7 sPath := Trim(APath); 8 if sPath = ‘‘ then 9 sPath := GetCurrentDir;10 11 SetLastError(ERROR_SUCCESS);12 if GetTempFileName(PChar(sPath), PChar(APrefix), 0, PChar(Result)) = 0 then13 begin14 Result := ‘‘;15 raise Exception.Create(SysErrorMessage(GetLastError));16 end17 else18 SetLength(Result, StrLen(PChar(Result)));19 end;
API说明
反思
茁壮的程序代码一定要有好的容错方法,一定要将错误信息发布出去。
不怕出错,就怕不知道错在哪!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。