我的單位中有這段代碼:
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 says it is an undeclared identifier and sees it as an error, but I did in fact add SysUtils and DateUtils in my uses clause.
Why does it not recognize "LongMonthNames"?
I am working in a seperate unit, but I doubt that has anything to do with the issue.
uj5u.com熱心網友回復:
首先,TDate這是一個糟糕的名字,因為它與標準的 DelphiTDate型別相沖突。
其次,LongMonthNames您正在尋找的東西是TFormatSettings記錄的成員。因此,要訪問此成員,您需要此類記錄的實體。
例如,如果您想要本地化月份名稱,您可以使用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);
給你非本地化的月份名稱。
(顯然,在實際代碼中,您不會每次都重新創建格式設定記錄。)
uj5u.com熱心網友回復:
我所要做的就是添加“FormatSettings”。在“LongMonthNames”之前,像這樣:
function TDate.MonthName: string;
begin
result := FormatSettings.LongMonthNames[fMonth];
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453966.html
標籤:delphi
下一篇:處理錯誤請求的自定義錯誤訊息
