亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dataconv.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
字號:
{*******************************************************}
{                                                       }
{         Delphi VCL Extensions (RX)                    }
{                                                       }
{         Copyright (c) 1995 AO ROSNO                   }
{                                                       }
{*******************************************************}

unit DataConv;

interface

{$I RX.INC}

uses SysUtils, {$IFDEF WIN32} Windows, {$ELSE} WinTypes, WinProcs, {$ENDIF}
  Messages, Classes, Graphics, Controls, Forms, Dialogs, DateUtil;

type

  TDataType = (dtString, dtInteger, dtFloat, dtDateTime, dtDate,
    dtTime, dtBoolean);

  TTimeFormat = (tfHHMMSS, tfHMMSS, tfHHMM, tfHMM);

{ TDateTimeFormat }

  TDateTimeFormat = class(TPersistent)
  private
    FAMString: string[7];
    FPMString: string[7];
    FDateOrder: TDateOrder;
    FTimeFormat: TTimeFormat;
    FTimeSeparator: Char;
    FDateSeparator: Char;
    FLongDate: Boolean;
    FFourDigitYear: Boolean;
    FLeadingZero: Boolean;
    function GetAMString: string;
    procedure SetAMString(const Value: string);
    function GetPMString: string;
    procedure SetPMString(const Value: string);
  protected
    function GetDateMask: string; virtual;
    function GetTimeMask: string; virtual;
    function GetMask: string; virtual;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    procedure ResetDefault; virtual;
    property DateMask: string read GetDateMask;
    property TimeMask: string read GetTimeMask;
    property Mask: string read GetMask;
  published
    property AMString: string read GetAMString write SetAMString;
    property PMString: string read GetPMString write SetPMString;
    property DateOrder: TDateOrder read FDateOrder write FDateOrder;
    property TimeFormat: TTimeFormat read FTimeFormat write FTimeFormat;
    property TimeSeparator: Char read FTimeSeparator write FTimeSeparator;
    property DateSeparator: Char read FDateSeparator write FDateSeparator;
    property LongDate: Boolean read FLongDate write FLongDate default False;
    property FourDigitYear: Boolean read FFourDigitYear write FFourDigitYear default True;
    property LeadingZero: Boolean read FLeadingZero write FLeadingZero default False;
  end;

{ TConverter }

  TConverter = class(TComponent)
  private
    { Private declarations }
    FData: String;
    FTextValues: array[Boolean] of string[15];
    FDataType: TDataType;
    FDateTimeFormat: TDateTimeFormat;
    FFloatFormat: TFloatFormat;
    FPrecision, FDigits: Integer;
    FRaiseOnError: Boolean;
    FOnChange: TNotifyEvent;
    procedure SetDataType(Value: TDataType);
    procedure SetDateTimeFormat(Value: TDateTimeFormat);
    function GetDateTimeFormat: TDateTimeFormat;
    function GetString: string;
    procedure SetString(const Value: string);
    function GetDateTime: TDateTime;
    function GetBoolValues(Index: Integer): string;
    procedure SetBoolValues(Index: Integer; const Value: string);
    procedure CheckDataType;
    function BoolToStr(Value: Boolean): string;
    function FloatToString(Value: Double): string;
    function DateTimeToString(Value: TDateTime): string;
  protected
    { Protected declarations }
    procedure Change; dynamic;
    function GetAsBoolean: Boolean; virtual;
    function GetAsDateTime: TDateTime; virtual;
    function GetAsDate: TDateTime; virtual;
    function GetAsTime: TDateTime; virtual;
    function GetAsFloat: Double; virtual;
    function GetAsInteger: Longint; virtual;
    function GetAsString: string; virtual;
    procedure SetAsBoolean(Value: Boolean); virtual;
    procedure SetAsDateTime(Value: TDateTime); virtual;
    procedure SetAsDate(Value: TDateTime); virtual;
    procedure SetAsTime(Value: TDateTime); virtual;
    procedure SetAsFloat(Value: Double); virtual;
    procedure SetAsInteger(Value: Longint); virtual;
    procedure SetAsString(const Value: string); virtual;
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Clear;
    function IsValidChar(Ch: Char): Boolean; virtual;
    property AsBoolean: Boolean read GetAsBoolean write SetAsBoolean;
    property AsDateTime: TDateTime read GetAsDateTime write SetAsDateTime;
    property AsDate: TDateTime read GetAsDate write SetAsDate;
    property AsTime: TDateTime read GetAsTime write SetAsTime;
    property AsFloat: Double read GetAsFloat write SetAsFloat;
    property AsInteger: Longint read GetAsInteger write SetAsInteger;
    property AsString: string read GetAsString write SetAsString;
  published
    { Published declarations }
    property DataType: TDataType read FDataType write SetDataType default dtString;
    property DateTimeFormat: TDateTimeFormat read GetDateTimeFormat write SetDateTimeFormat;
    property Digits: Integer read FDigits write FDigits default 2;
    property DisplayFalse: string index 0 read GetBoolValues write SetBoolValues;
    property DisplayTrue: string index 1 read GetBoolValues write SetBoolValues;
    property FloatFormat: TFloatFormat read FFloatFormat write FFloatFormat default ffGeneral;
    property Precision: Integer read FPrecision write FPrecision default 15;
    property RaiseOnError: Boolean read FRaiseOnError write FRaiseOnError default False;
    property Text: string read GetString write SetAsString;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

implementation

{ TDateTimeFormat }

constructor TDateTimeFormat.Create;
begin
  inherited Create;
  ResetDefault;
end;

destructor TDateTimeFormat.Destroy;
begin
  inherited Destroy;
end;

procedure TDateTimeFormat.ResetDefault;
begin
  FAMString := TimeAMString;
  FPMString := TimePMString;
  FTimeSeparator := SysUtils.TimeSeparator;
  FDateSeparator := SysUtils.DateSeparator;
  FDateOrder := doDMY;
  FTimeFormat := tfHHMMSS;
  FLongDate := False;
  FFourDigitYear := True;
  FLeadingZero := False;
end;

procedure TDateTimeFormat.Assign(Source: TPersistent);
begin
  if Source is TDateTimeFormat then begin
    FAMString := TDateTimeFormat(Source).AMString;
    FPMString := TDateTimeFormat(Source).PMString;
    FDateOrder := TDateTimeFormat(Source).DateOrder;
    FTimeFormat := TDateTimeFormat(Source).TimeFormat;
    FTimeSeparator := TDateTimeFormat(Source).TimeSeparator;
    FDateSeparator := TDateTimeFormat(Source).DateSeparator;
    FLongDate := TDateTimeFormat(Source).LongDate;
    FFourDigitYear := TDateTimeFormat(Source).FourDigitYear;
    FLeadingZero := TDateTimeFormat(Source).LeadingZero;
    Exit;
  end;
  inherited Assign(Source);
end;

function TDateTimeFormat.GetAMString: string;
begin
  Result := FAMString;
end;

procedure TDateTimeFormat.SetAMString(const Value: string);
begin
  if Value = '' then FAMString := TimeAMString
  else FAMString := Value;
end;

function TDateTimeFormat.GetPMString: string;
begin
  Result := FPMString;
end;

procedure TDateTimeFormat.SetPMString(const Value: string);
begin
  if Value = '' then FPMString := TimePMString
  else FPMString := Value;
end;

function TDateTimeFormat.GetDateMask: string;
var
  S: array[1..3] of string[7];
  Separator: string[3];
begin
  Result := '';
  if LeadingZero then begin
    S[1] := 'dd';
    S[2] := 'mm';
  end
  else begin
    S[1] := 'd';
    S[2] := 'm';
  end;
  if LongDate then begin
    S[2] := 'mmmm';
    Separator := ' ';
  end
  else Separator := '"' + DateSeparator + '"';
  if FourDigitYear then S[3] := 'yyyy'
  else S[3] := 'yy';
  case DateOrder of
    doDMY: Result := S[1] + Separator + S[2] + Separator + S[3];
    doMDY: Result := S[2] + Separator + S[1] + Separator + S[3];
    doYMD: Result := S[3] + Separator + S[2] + Separator + S[1];
  end;
end;

function TDateTimeFormat.GetTimeMask: string;
var
  S: array[1..3] of string[7];
  Separator: string[3];
  AMPM: string[16];
begin
  Separator := '"' + TimeSeparator + '"';
  AMPM := ' ' + AMString + '/' + PMString;
  if LeadingZero then begin
    S[1] := 'hh';
    S[2] := 'nn';
    S[3] := 'ss';
  end
  else begin
    S[1] := 'h';
    S[2] := 'n';
    S[3] := 's';
  end;
  case TimeFormat of
    tfHHMMSS: Result := S[1] + Separator + S[2] + Separator + S[3];
    tfHMMSS: Result := S[1] + Separator + S[2] + Separator + S[3] + AMPM;
    tfHHMM: Result := S[1] + Separator + S[2];
    tfHMM: Result := S[1] + Separator + S[2] + AMPM;
  end;
end;

function TDateTimeFormat.GetMask: string;
begin
  Result := GetDateMask + ' ' + GetTimeMask;
end;

{ TConverter }

constructor TConverter.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FData := EmptyStr;
  FDataType := dtString;
  FPrecision := 15;
  FDigits := 2;
  FDateTimeFormat := TDateTimeFormat.Create;
  FTextValues[False] := 'False';
  FTextValues[True] := 'True';
  FRaiseOnError := False;
end;

destructor TConverter.Destroy;
begin
  FDataType := dtString;
  //if (FData <> nil) and (FData^ <> '') then Dispose(FData);
  FDateTimeFormat.Free;
  inherited Destroy;
end;

procedure TConverter.Clear;
begin
  //if (FData <> nil) and (FData^ <> '') then Dispose(FData);
  FData := EmptyStr;
  Change;
end;

procedure TConverter.Change;
begin
  if Assigned(FOnChange) then FOnChange(Self);
end;

function TConverter.GetString: string;
begin
  Result := FData;
end;

procedure TConverter.SetString(const Value: string);
begin
  FData := Value;
end;

function TConverter.GetDateTimeFormat: TDateTimeFormat;
begin
  Result := FDateTimeFormat;
end;

procedure TConverter.SetDateTimeFormat(Value: TDateTimeFormat);
begin
  FDateTimeFormat.Assign(Value);
end;

function TConverter.GetBoolValues(Index: Integer): string;
begin
  Result := FTextValues[Boolean(Index)];
end;

procedure TConverter.SetBoolValues(Index: Integer; const Value: string);
begin
  FTextValues[Boolean(Index)] := Value;
end;

function TConverter.BoolToStr(Value: Boolean): string;
begin
  Result := GetBoolValues(Integer(Value));
end;

function TConverter.FloatToString(Value: Double): string;
begin
  Result := FloatToStrF(Value, FloatFormat, Precision, Digits);
end;

function TConverter.DateTimeToString(Value: TDateTime): string;
begin
  case FDataType of
    dtDate: Result := FormatDateTime(DateTimeFormat.DateMask, Value);
    dtTime: Result := FormatDateTime(DateTimeFormat.TimeMask, Value);
    else Result := FormatDateTime(DateTimeFormat.Mask, Value);
  end;
end;

procedure TConverter.SetDataType(Value: TDataType);
begin
  if Value <> FDataType then begin
    FDataType := Value;
    try
      CheckDataType;
      Change;
    except
      Clear;
      if RaiseOnError then raise;
    end;
  end;
end;

function TConverter.IsValidChar(Ch: Char): Boolean;
begin
  case FDataType of
    dtString: Result := True;
    dtInteger: Result := Ch in ['+', '-', '0'..'9'];
    dtFloat: Result := Ch in [DecimalSeparator, '+', '-', '0'..'9', 'E', 'e'];
    dtDateTime, dtDate, dtTime: Result := True;
    dtBoolean: Result := True;
    else Result := False;
  end;
end;

procedure TConverter.CheckDataType;
begin
  case FDataType of
    dtInteger, dtFloat: StrToFloat(GetString);
    dtDateTime, dtDate, dtTime: GetDateTime;
  end;
end;

function TConverter.GetAsBoolean: Boolean;
var
  S: string[15];
begin
  S := GetString;
  Result := (Length(S) > 0) and ((S[1] in ['T', 't', 'Y', 'y']) or
    (S = FTextValues[True]));
end;

function TConverter.GetDateTime: TDateTime;
var
  S: string;
  I: Integer;
  DateS, TimeS: set of Char;
begin
  S := GetString;
  DateS := ['/', '.'] + [DateTimeFormat.DateSeparator] - 
    [DateTimeFormat.TimeSeparator];
  TimeS := [':', '-'] - [DateTimeFormat.DateSeparator] + 
    [DateTimeFormat.TimeSeparator];
  for I := 1 to Length(S) do begin
    if S[I] in DateS then S[I] := DateSeparator
    else if S[I] in TimeS then S[I] := TimeSeparator;
  end;
  Result := StrToDateTime(S);
end;

function TConverter.GetAsDateTime: TDateTime;
begin
  try
    Result := GetDateTime;
  except
    Result := NullDate;
  end;
end;

function TConverter.GetAsDate: TDateTime;
var
  Year, Month, Day: Word;
begin
  try
    Result := GetAsDateTime;
    DecodeDate(Result, Year, Month, Day);
    Result := EncodeDate(Year, Month, Day);
  except
    Result := NullDate;
  end;
end;

function TConverter.GetAsTime: TDateTime;
var
  Hour, Min, Sec, MSec: Word;
begin
  try
    Result := GetAsDateTime;
    DecodeTime(Result, Hour, Min, Sec, MSec);
    Result := EncodeTime(Hour, Min, Sec, MSec);
  except
    Result := NullDate;
  end;
end;

function TConverter.GetAsFloat: Double;
begin
  try
    case FDataType of
      dtDateTime: Result := GetAsDateTime;
      dtDate: Result := GetAsDate;
      dtTime: Result := GetAsTime;
      else Result := StrToFloat(GetString);
    end;
  except
    Result := 0.0;
  end;
end;

function TConverter.GetAsInteger: Longint;
begin
  Result := Round(GetAsFloat);
end;

function TConverter.GetAsString: string;
begin
  case FDataType of
    dtString: Result := GetString;
    dtInteger: Result := IntToStr(GetAsInteger);
    dtFloat: Result := FloatToString(GetAsFloat);
    dtDateTime: Result := DateTimeToString(GetAsDateTime);
    dtDate: Result := DateTimeToString(GetAsDate);
    dtTime: Result := DateTimeToString(GetAsTime);
    dtBoolean: Result := BoolToStr(GetAsBoolean);
  end;
end;

procedure TConverter.SetAsBoolean(Value: Boolean);
begin
  SetAsString(BoolToStr(Value));
end;

procedure TConverter.SetAsDateTime(Value: TDateTime);
begin
  SetAsString(DateTimeToStr(Value));
end;

procedure TConverter.SetAsDate(Value: TDateTime);
begin
  SetAsDateTime(Value);
end;

procedure TConverter.SetAsTime(Value: TDateTime);
begin
  SetAsDateTime(Value);
end;

procedure TConverter.SetAsFloat(Value: Double);
begin
  if FDataType in [dtDateTime, dtDate, dtTime] then
    SetAsDateTime(Value)
  else SetAsString(FloatToStr(Value));
end;

procedure TConverter.SetAsInteger(Value: Longint);
begin
  if FDataType = dtInteger then SetAsString(IntToStr(Value))
  else SetAsFloat(Value);
end;

procedure TConverter.SetAsString(const Value: string);
var
  S: string;
begin
  S := GetString;
  SetString(Value);
  try
    CheckDataType;
    Change;
  except
    SetString(S);
    if RaiseOnError then raise;
  end;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影免费在线看| 亚洲欧洲www| 天天av天天翘天天综合网色鬼国产| 不卡区在线中文字幕| 欧美激情综合网| www.日本不卡| 亚洲在线一区二区三区| 欧美日韩一卡二卡三卡| 午夜精品久久久久久久久久久| 欧美日韩免费观看一区三区| 亚洲成av人片在www色猫咪| 日韩一区二区中文字幕| 精品亚洲免费视频| 中文字幕av不卡| 日本乱码高清不卡字幕| 日日骚欧美日韩| 精品入口麻豆88视频| 北岛玲一区二区三区四区| 亚洲一区二区中文在线| 欧美变态tickle挠乳网站| 粉嫩高潮美女一区二区三区 | 亚洲va韩国va欧美va精品| 欧美一级精品在线| 成人综合婷婷国产精品久久蜜臀 | 精品国一区二区三区| 成人在线一区二区三区| 亚洲综合999| 欧美不卡一二三| 日本电影亚洲天堂一区| 精品一区二区av| 亚洲欧美二区三区| 亚洲精品在线网站| 色94色欧美sute亚洲线路一ni| 蜜臀久久99精品久久久画质超高清| 国产日本欧洲亚洲| 51精品久久久久久久蜜臀| 高清久久久久久| 日本亚洲一区二区| 综合分类小说区另类春色亚洲小说欧美| 欧美日韩精品三区| 不卡av在线网| 国产尤物一区二区在线| 亚洲一二三区视频在线观看| 久久精品水蜜桃av综合天堂| 精品视频1区2区| 不卡的看片网站| 国产一区欧美二区| 日韩电影在线一区二区| 亚洲视频免费观看| 国产日韩视频一区二区三区| 69久久夜色精品国产69蝌蚪网| 成人午夜伦理影院| 国产一区二区美女诱惑| 午夜精品视频一区| 亚洲黄色小视频| 国产精品网站在线| 精品久久久影院| 欧美一区二区私人影院日本| 色猫猫国产区一区二在线视频| 国产精品一区在线观看你懂的| 天天影视涩香欲综合网| 亚洲乱码国产乱码精品精可以看| 337p粉嫩大胆噜噜噜噜噜91av| 欧美男人的天堂一二区| 91精彩视频在线| 91啪亚洲精品| 成人aa视频在线观看| 国产suv精品一区二区三区| 久久精品国产精品亚洲精品| 亚洲sss视频在线视频| 一区二区在线看| 一区二区三区日韩欧美精品| 成人免费一区二区三区在线观看| 久久久久久亚洲综合影院红桃| 日韩欧美精品在线| 日韩欧美一区在线| 欧美成人性战久久| 精品少妇一区二区三区视频免付费 | 欧美午夜一区二区三区| 色先锋资源久久综合| 色综合久久久久久久久久久| 99久久精品国产导航| 91蝌蚪porny成人天涯| 91亚洲永久精品| 色网站国产精品| 欧美亚洲一区二区在线| 欧美在线一区二区三区| 欧美日韩在线播| 91精品国产91久久久久久最新毛片| 欧美日韩国产中文| 日韩欧美成人一区| 久久久久免费观看| 亚洲视频小说图片| 亚洲成人精品在线观看| 美女尤物国产一区| 国产精品一二三区在线| www.亚洲精品| 欧美日高清视频| 精品免费一区二区三区| 国产亚洲综合av| 亚洲欧美日韩国产综合在线 | 精品视频在线看| 欧美大片日本大片免费观看| 久久久亚洲国产美女国产盗摄| 中文字幕av资源一区| 亚洲综合色噜噜狠狠| 日本少妇一区二区| 国产高清亚洲一区| 色综合天天性综合| 91精品国产综合久久蜜臀 | 欧美色综合网站| 日韩欧美一区电影| 国产精品国产三级国产普通话99| 亚洲国产综合人成综合网站| 天天射综合影视| 高清久久久久久| 欧美精品在线观看播放| 久久精品人人做| 亚洲线精品一区二区三区八戒| 国产一区高清在线| 日本久久一区二区三区| 精品久久久三级丝袜| 亚洲日穴在线视频| 精品一区二区三区在线观看| 99久久婷婷国产综合精品| 欧美一卡2卡三卡4卡5免费| 国产精品国产a| 经典一区二区三区| 欧美午夜理伦三级在线观看| 久久天天做天天爱综合色| 亚洲最大色网站| 成人丝袜视频网| 5月丁香婷婷综合| 亚洲色欲色欲www| 国产成人在线影院| 9191精品国产综合久久久久久| 国产精品乱人伦| 麻豆免费看一区二区三区| 91国产精品成人| 国产精品麻豆网站| 国产精品亚洲专一区二区三区| 欧美日韩一级二级三级| 国产精品欧美经典| 国产一二精品视频| 欧美一区二区三区在线电影| 亚洲女同女同女同女同女同69| 国内精品国产成人国产三级粉色 | 国产精品青草久久| 韩国女主播成人在线| 欧美精品第一页| 亚洲一区在线看| 91蜜桃在线观看| 1024国产精品| 不卡一区二区三区四区| 国产欧美日韩不卡免费| 韩日av一区二区| 久久久噜噜噜久久中文字幕色伊伊| 日韩av中文字幕一区二区| 欧美另类高清zo欧美| 亚洲免费av高清| 色婷婷精品大视频在线蜜桃视频 | 99re6这里只有精品视频在线观看| 久久综合久久综合亚洲| 久久精品国产99久久6| 日韩亚洲欧美成人一区| 午夜欧美视频在线观看| 在线日韩av片| 亚洲综合999| 欧美日韩精品欧美日韩精品一 | 亚洲国产三级在线| 欧美在线观看视频一区二区三区| 亚洲乱码国产乱码精品精98午夜 | 亚洲乱码国产乱码精品精的特点 | 一区二区高清免费观看影视大全| 波多野结衣中文一区| 国产精品欧美一级免费| 97久久精品人人爽人人爽蜜臀| 国产精品久久久久天堂| 99精品国产热久久91蜜凸| 亚洲精品乱码久久久久久黑人 | 欧美色男人天堂| 日韩av成人高清| 2021久久国产精品不只是精品| 精品无码三级在线观看视频| 久久综合九色综合欧美98| 丁香亚洲综合激情啪啪综合| 国产日韩欧美一区二区三区乱码| 成人一区在线观看| 亚洲乱码国产乱码精品精可以看 | 5月丁香婷婷综合| 国模大尺度一区二区三区| 亚洲国产成人自拍| 色婷婷国产精品| 奇米888四色在线精品| 久久久蜜桃精品| 91精彩视频在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产喷白浆一区二区三区| 色综合久久综合网欧美综合网| 丝袜美腿成人在线|