请问老师:FileDelete无法删除文件,但函数执行后返回”true“。是否该函数已失效?
测试码:
Events
OnInit()
{
String filePath = D:\\\\abc.csv;
Array<Array<String>> rvalue;
Bool ret = ReadCSVFile(filePath, rvalue);
Print(ReadCSVFile: + IIFString(ret, True, False) + , + TextArray(rvalue));
ret = FileDelete(filePath);
Print(FileDelete: + IIFString(ret, True, False));
ArrayClear(rvalue);
ret = ReadCSVFile(filePath, rvalue);
Print(ReadCSVFile: + IIFString(ret, True, False) + , + TextArray(rvalue));
}
第三个print不应该有输出。

在 开拓者量化平台(TradeBlazer) 中,FileDelete 函数返回 true 但实际未删除文件的问题,可能与平台的特定机制或文件锁定策略有关。以下是针对开拓者平台的解决方案:
在调用 FileDelete 前,清空读取的数据并重置变量,以触发开拓者内部资源释放:
cpp
复制
ArrayClear(rvalue);  // 清空数组,可能帮助释放文件句柄
ret = FileDelete(filePath);开拓者可能异步处理文件操作,添加短暂延迟确保删除完成:
cpp
复制
ret = ReadCSVFile(filePath, rvalue);
Sleep(1000);  // 等待1秒(单位:毫秒)
ret = FileDelete(filePath);绕过平台 API,直接调用操作系统命令(适用于 Windows):
cpp
复制
// 替换 FileDelete 为系统命令
ret = System("cmd /c del /F /Q " + filePath);
Print("强制删除结果: " + IIFString(ret == 0, "成功", "失败"));使用开拓者的 FileExists 函数(如有)或系统命令检查文件状态:
cpp
复制
Bool exists = FileExists(filePath);
Print("删除后文件是否存在: " + IIFString(exists, "是", "否"));cpp
复制
Events
OnInit()
{
    String filePath = "D:/abc.csv";  // 使用正斜杠避免转义问题
    Array<Array<String>> rvalue;
    // 第一次读取文件
    Bool ret = ReadCSVFile(filePath, rvalue);
    Print("首次读取结果: " + IIFString(ret, "成功", "失败"));
    // 释放资源并尝试删除
    ArrayClear(rvalue);  // 清空数据触发句柄释放
    Sleep(500);          // 等待500毫秒
    ret = FileDelete(filePath);
    Print("删除操作结果: " + IIFString(ret, "报告成功", "报告失败"));
    // 通过系统命令强制删除(备用方案)
    if (FileExists(filePath)) {
        ret = System("cmd /c del /F /Q \"" + filePath + "\"");  // 处理含空格路径
        Print("系统命令删除结果: " + IIFString(ret == 0, "成功", "失败"));
    }
    // 二次验证
    Bool exists = FileExists(filePath);
    Print("最终文件是否存在: " + IIFString(exists, "是", "否"));
}通过上述方法,应能有效定位并解决 FileDelete 失效问题。若仍有异常,建议提供开拓者版本号和操作系统环境以进一步分析。
感谢答复!另外,Sleep是tbq3专有函数吗?在tbq中提示该函数没有被声明。有办法在tbq中实现“Sleep(1000); // 等待1秒(单位:毫秒)”的功能?
他是用ai直接生成的代码
😄这样啊,ai这么长的回复确实认真看了一下。发现这个sleep有点意思😄。在公式运行过程中,某点上能延迟一会儿执行,靠一个函数能实现的确很诱惑。tbq有这样的方法吗?管理员老师可以指点个方向吗
目前没有直接的sleep函数可供试用
以前其他帖子回复中
给过代码
谢谢,等待回复。
s收到了转发给研发人员看看
请问有结果了吗?
只是因为文件没有释放,所以无法删除