Delphi中如何将RichEdit内容保存为RTF文件?解决文件占用问题
问题解决:RichEdit内容保存RTF文件时提示被占用
问题根源
你调用FileCreate创建文件后,没有手动关闭返回的文件句柄,导致系统认为文件仍被当前进程占用,SaveToFile无法访问该文件。实际上SaveToFile方法本身已经封装了完整的文件创建、写入、关闭流程,完全不需要提前调用FileCreate。
正确实现方式
方式一:直接使用SaveToFile(推荐)
直接调用SaveToFile即可,它会自动处理文件的创建与写入,无需额外操作:
var sFileName: string; begin sFileName := funcCreateQuestionID; // 生成目标文件名 // 保存RichEdit内容到RTF文件,RTF格式建议使用默认编码 redOut.Lines.SaveToFile(sFileName, TEncoding.Default); end;
方式二:若需提前创建文件(不推荐)
如果一定要提前用FileCreate创建文件,必须在创建后立即关闭文件句柄,释放文件占用:
var sFileName: string; iFileHandle: Integer; begin sFileName := funcCreateQuestionID; iFileHandle := FileCreate(sFileName); // 检查文件是否创建成功,成功则关闭句柄 if iFileHandle <> -1 then FileClose(iFileHandle); // 此时文件已释放,可正常调用SaveToFile redOut.Lines.SaveToFile(sFileName); end;
内容的提问来源于stack exchange,提问作者SlothsDontSleep
相关产品推荐
相关产品推荐

