Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
lazarus/pascal写入当前日期的文件名_Pascal_Lazarus_Freepascal_Delphi - Fatal编程技术网

lazarus/pascal写入当前日期的文件名

lazarus/pascal写入当前日期的文件名,pascal,lazarus,freepascal,delphi,Pascal,Lazarus,Freepascal,Delphi,我需要用包含当前日期的文件名编写一个文件。。除了日期之外,其他一切都正常工作,它给出了一个类异常“运行错误(3)” (importo.text是TEdit的文本..但我想它是不相关的) DateToStr()将返回根据区域设置格式化的日期。在您的情况下,这几乎肯定会返回导致问题的文件夹/路径分隔符(/或\) 即使更改区域设置以避免使用此类字符,如果这些区域设置不“兼容”,则代码在其他系统上仍将失败。为了避免这种情况,您需要确保文件名中的日期编码对此类潜在问题不敏感 您可以在形成文件名后删除/替换

我需要用包含当前日期的文件名编写一个文件。。除了日期之外,其他一切都正常工作,它给出了一个类异常“运行错误(3)”

(importo.text是TEdit的文本..但我想它是不相关的)

DateToStr()将返回根据区域设置格式化的日期。在您的情况下,这几乎肯定会返回导致问题的文件夹/路径分隔符(
/
\

即使更改区域设置以避免使用此类字符,如果这些区域设置不“兼容”,则代码在其他系统上仍将失败。为了避免这种情况,您需要确保文件名中的日期编码对此类潜在问题不敏感

您可以在形成文件名后删除/替换任何此类字符,也可以以不引入此类字符的方式显式编码日期,类似于:

var
  y, m, d: Word;

..

  DecodeDate(Date, y, m, d);
  dateStr := Format('%4d-%2d-%2d', [y, m, d]);

  // e.g. dateStr value for 31st Dec 2016 would be:  '2016-12-31'
然后,您可以根据需要通过串联或直接在单个格式语句中将日期组件值合并到文件名中:

 filename := Format('fattura minimi n.%s %4d-%2d-%2d.txt [n.text, y, m, d]);
 assignfile(f, filename);

做一些调试。用作文件名的字符串的值是多少。未找到RTE 3路径。文本或日期中的反斜杠?正如David建议的那样,检查最终文件名是否正确。您可以使用
FormatDateTime()
而不是分别使用
DecodeDate()
Format()
:=FormatDateTime('yyyy“-”mm“-”dd',Date)甚至类似这样的内容:
文件名:=FormatDateTime('fattura minimi n.+n.text+'yyyy-'mm-'dd.txt',Date)
@David-如果任何人不想学习,你就不能教他们任何东西,而你在浪费时间去尝试。请注意,这个答案不仅仅是为手头的问题提供解决方案。它解释了为什么会出现问题以及得出解决方案背后的原因。一个Q+A网站是关于提供帮助人们学习的有用答案,而不是仅仅因为人们还不具备我们其他人喜欢的技能就把他们打发走。帮助一个人学习钓鱼并不意味着同时拒绝帮助他们解决眼前的饥饿。@Remy-我说的是“类似于”[下文]而不是暗示我有一种真正的方法。确实有很多种方法可以给猫科动物剥皮,我个人觉得你的选择不太受欢迎。我是唯一需要提醒自己Delphi是否使用nn而不是MM来区分分和月的人吗?由于其目的是在字符串中编码日期组件,与“将日期/时间格式化为字符串”相比,FormatDateTime显然是不合适的,甚至是“不正确的”。在这种情况下。当然,就解决OP的问题而言,它不再是“正确的”。像这样帮忙也没关系。我经常这样做。我有时想知道是否有更好的办法。可能询问者仍然不知道如何调试这样的问题。那一定是在阻碍他。现在这里绝大多数的问题都是这种形式的。由不知道如何调试的人询问。我不知道如果他们没有得到答案会发生什么。询问者将被迫学习调试。我刚开始的时候就是这样。“不管怎样,我只是在沉思。”托马斯马蒂亚补充了大卫的话。如果您已经调试到“FileName=
abc.txt
可以工作,但是
abc20/01/2017.txt
不能工作”的程度,并且在您的问题中提到了这一点:那么这将建议进行有效的调试,但在理解文件名规范方面存在差距。这可能是一个更好的问题,更容易搜索。在这一点上,“糟糕”的问题往往更难搜索,因为它们对个别问题过于具体。有效的调试应该会产生更多信息,以帮助编写更好的问题和更有效地搜索。
 filename := Format('fattura minimi n.%s %4d-%2d-%2d.txt [n.text, y, m, d]);
 assignfile(f, filename);