gpt4 book ai didi

delphi - "LongMonthNames"变量无法识别?

转载 作者:行者123 更新时间:2023-12-02 15:54:59 25 4
gpt4 key购买 nike

我的单元中有这段代码:

unit clsDate_u;

interface
type
TDate = class(TObject)
private
fDay, fMonth, fYear : integer;
public
constructor Create(sDate: string);
function MonthName: string;
function DaysPassedInYear: integer;
function LongDate: string;
function GetDay: integer;
function GetMonth: integer;
function GetYear: integer;
end;
implementation

{ TDate }
uses
SysUtils, DateUtils;

constructor TDate.Create(sDate: string);
begin
fDay := StrToInt(copy(sDate,1,2));
fMonth := StrToInt(copy(sDate,4,2));
fYear := StrToInt(copy(sDate,7,2));
if fYear <= 29 then
fYear := fYear + 2000
else
fYear := fYear + 1900;
end;

function TDate.DaysPassedInYear: integer;
var
iTotal, iCount: integer;
begin
iTotal := 0;
iCount := 1;
while iCount < fMonth do
begin
iTotal := iTotal + DaysInAMonth(fYear, iCount);
Inc(iCount);
end;
iTotal := iTotal + fDay;
result := iTotal;
end;

function TDate.GetDay: integer;
begin
result := fDay;
end;

function TDate.GetMonth: integer;
begin
result := fMonth;
end;

function TDate.GetYear: integer;
begin
result := fYear;
end;

function TDate.MonthName: string;
begin
result := LongMonthNames[fMonth];
end;

function TDate.LongDate: string;
begin
result := IntToStr(fDay) + ' ' + MonthName + ' ' + IntToStr(fYear);
end;

end.

我想在我的函数中使用“LongMonthNames”变量,您可以在此处看到:

function TDate.MonthName: string;
begin
result := LongMonthNames[fMonth];
end;

Delphi 说这是一个未声明的标识符并将其视为错误,但实际上我确实在我的 uses 子句中添加了 SysUtils 和 DateUtils。

为什么它不能识别“LongMonthNames”?

我在一个单独的部门工作,但我怀疑这与问题有任何关系。

最佳答案

首先,TDate 是一个糟糕的名字,因为它与标准的 Delphi TDate 冲突。类型。

其次,您要查找的LongMonthNamesTFormatSettings 的成员。记录。因此,要访问此成员,您需要此类记录的实例。

例如,如果您想要本地化的月份名称,您可以使用 TFormatSettings.Create为当前语言环境创建格式设置记录。

另一方面,如果您想要非本地化(英语)月份名称,您可以使用 TFormatSettings.Invariant类函数。

例如,

var LMonthNames := TFormatSettings.Create.LongMonthNames;
for var LMonthName in LMonthNames do
ShowMessage(LMonthName);

为您提供本地化的月份名称,同时

var LMonthNames := TFormatSettings.Invariant.LongMonthNames;
for var LMonthName in LMonthNames do
ShowMessage(LMonthName);

为您提供非本地化的月份名称。

(显然,在实际代码中您不会每次都重新创建格式设置记录。)

关于delphi - "LongMonthNames"变量无法识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71675381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com