0

我是 Pascal 编程的新手,我花了一整天时间尝试将字符串转换为有效日期,以后我可以用它来减去另一个日期,以发现两个日期之间的天数。你能帮我吗?

我从这段代码开始尝试将以字符串格式输入的第一个日期转换为可用于计算的日期:

program TryDate;

Var
date1: TDateTime;
thedate:string;

Begin
Writeln ('Enter date');
Readln (thedate);
date1:=StrToDate (thedate);
Writeln ('The date is ',date1);
end.


The program's basic structure can be seen here:

Begin
Writeln ('Enter customer last name');
readln (clname);
Writeln ('Enter customer first name');
readln (cfname);
Writeln ('Enter Dvd Title');
readln (dvdtit);
Writeln ('Enter Due Date');
readln (dued);
Writeln ('Enter Actual Date Returned');
readln (adret);
daysover:=adret-dued;
readln;
end. 

我预计会进一步扩展该程序,但在尝试其他组件之前试图让这个小部分工作。

简单的说明和示例或可能的解决方案将不胜感激。

4

2 回答 2

2

除了 Andriy,您也不提供操作系统信息或输入日期的格式。

这很重要,因为在 *nix 上,您必须将 clocale 添加到您的USES 子句中以初始化还包括首选日期格式的语言环境系统。

对于真正可怕的东西,有可以解析大多数自定义创建日期的函数 scandatetime:http ://www.freepascal.org/docs-html/rtl/dateutils/scandatetime.html

于 2013-02-10T14:41:52.860 回答
2

您尚未指定到目前为止所获得的代码存在什么问题。如果您的实际代码与您发布的完全一样,我可以看到的唯一问题是您没有指定uses sysutils;,如下所示:

program TryDate;

uses
  sysutils;

Var
  date1: TDateTime;
  thedate: string;

Begin
  Writeln ('Enter date');
  Readln (thedate);
  date1 := StrToDate (thedate);
  Writeln ('The date is ',date1);
end.

StrToDate函数是sysutils单元的一部分,您需要将其包含在程序uses中才能使用其过程、函数、类型等。

于 2013-02-10T13:00:51.137 回答