亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

我對DELPHI寫的幾個基類型

2019-11-18 18:05:35
字體:
來源:轉載
供稿:網友
 

//用慣java或C#的人可能對DELPHI非常生氣,連基本的類型都沒有,我平時工作中,經常會曾試著把一些函數集合在一起,也經常做一些屬于自己的基礎類型的函數,此處把它們弄出來,有不當之處,請大家點評.
unit BaseClass;

interface

uses
  SysUtils, Classes, StrUtils, IdGlobal, Math;

type
  TCharSet = set of char;
var
  TNormalCharSet: TCharSet = [#13, #10, #32, '.', ',', ';'];
type

  TString = class
  PRivate
    FText: string;
  public
    function CharAt(APosition: Integer): Char;
      //指定位置的字母
    function toLowerCase: string; overload;
    class function toLowerCase(AString: string): string; overload;
      //小寫

    function toUpperCase: string; overload;
    class function toUpperCase(AString: string): string; overload;
      //大寫

    class function ValueOf(AValue: string): Boolean; overload;
    class function ValueOf(AValue: Boolean): string; overload;

    class function StringIn(AValue: string; AValues: array of string): Boolean;

    class function Left(AValue: string; ALength: Integer): string;
    class function Right(AValue: string; ALength: Integer): string;

    class function DeletePrefix(AValue: string; FixedString: TCharSet = [#32]): string; //刪除前綴
    class function DeleteSuffix(AValue: string; FixedString: TCharSet = [#32]): string; //刪除后綴
    //
    class function CompareString(AValue1: string; AValue2: string): Boolean;

    class function HashCode(AValue: string): Integer;

    class function LastChar(AValue: string): Char;

    class function StringReplace(const S, OldPattern, NewPattern: string;
                   Flags: TReplaceFlags): string;
    class function StringOfChar(Ch: Char; Count: Integer): string;

    class function SetString(var s: string; buffer: PChar; len: Integer): string;

    class function GetPy(AStr: string): string;
          //得到對應的拼音.
    class function IsAllChinese(AStr: string): Boolean;
    class function IsAllEnglish(AStr: string): Boolean;

    class function GetFirstWord(AValue: string; var AWord: string; ASeparator: TCharSet): Integer; overload;

    class function GetFirstWord(AValue: string; var AWord: string; ASeparator: string): Integer; overload;
                   //返回值為從開始到該單據的長度。

    class function GetAllWord(AValue: string; ASeparator: string): TStringList; overload;
                   //返回所有的關鍵字。使用完后,請將結果集Free;
                   //注:在以后的使用中,請不要使用該函數。請使用它的重載版
                   //GetAllWord(AValue: string; ASeparator: string; AStringList: TStringList);
    class procedure GetAllWord(AValue: string; ASeparator: string; AStringList: TStrings); overload;
                   //把所有的結果集裝入AStringList;

    class procedure GetAllWordWithAll(AValue: string; ASeparator: string; AStringList: TStrings);
    class function StringToCharSet(AValue: string): TCharSet;
    class function CharSetToString(AValue: TCharSet): string;

    class function UpdateSentence(AOldString: string; //被操作字符串
                                  AUpdateSource: string; //查找的單詞。
                                  AUpdateString: string; //替換的單據。
                                  ASentenceSeparator: string; //句子分隔符。
                                  AWordSeparator: string  //單據分隔符;
                                  ): string; //返回結果。
       //如 ' dbarcode ASC, dname DESC', 'dbarcode', '', ',', ' '的返回值為
            //' dname DESC';

    class function DeleteRepeat(AOldString: string;          //要處理字符
                                ADeleteString: Char;         //要刪除的字符
                                ARepeat: Char): string;      //重復字符

    class function IfThen(AExpression: Boolean; ATrue: string; AFalse: string): string;
                   //根據表達式的值,返回相應的字符串。
    class function AbsoluteToRelate(AAbsolute: string; ACurrent: string): string;
                   //給定兩個文件,將絕對路徑轉換成相對路徑。
    class function RelateToAbsolute(ARelate: string; ACurrent: string): string;
    class function SimilarPosition(AOne, ATwo: string): Integer;

    class function GetCharNum(AString: string; AChar: Char): Integer;

    class function IndexOf(AString, ASubString: string): Integer;

    class function ZeroToInt(AString: string): Integer;
    class function ZeroToFloat(AString: string): Double;

    class function ZeroToStr(AString: string): string;

    class function SameText(AString, AString1: string): Boolean;

    class function Reverse(AString: string): string;

    class function IsValidip(const S: String): Boolean;

    class function FillString(AChar: Char; ALength: Integer): string;

    class function StuffString(const AText: string; AStart, ALength: Cardinal;
       const ASubText: string): string;

    class function GetNextString(var SourceString: string; asplitChar: string): string;
  end;

  //整型類。
  TInteger = class
    class function IntToStr(AInteger: Integer): string; overload;
    class function IntToStr(AInteger: Int64): string; overload;

    class function IsValidInt(AString: string): Boolean;
    class function IsValidInt64(AString: string): Boolean;

    class function MaxInt: Integer;
    class function MaxLongInt: Integer;
    class function HashCode(AInteger: Integer): Integer;

    class function IntToBin(AInteger: Cardinal): string;
    class function IntToHex(AInteger: Integer): string;

    class function HexToInt(AString: string): Integer;
    class function MakeSerialNo(AInteger: Integer; ADigit: Integer): string;
  end;

  TFloat = class
    class function IsValidFloat(AString: string): Boolean;
    class function MaxDouble: Double;
    class function MinDouble: Double;
    class function MaxExtended: Extended;
    class function MinExtended: Extended;

    class function SameValue(const A, B: Single; Epsilon: Single = 0): Boolean; overload;
    class function SameValue(const A, B: Double; Epsilon: Double = 0): Boolean; overload;
    class function SameValue(const A, B: Extended; Epsilon: Extended = 0): Boolean; overload;

    class function FloatToMoney(const Value: Double; Round: Boolean = True): string;
  end;

  TBoolean = class
    class function BoolToStr(ABoolean: Boolean): string;
    class function StrToBool(AString: string): Boolean;  //如果不為'true'則為false;
  end;
implementation

{ TString }
function GetPYIndexChar(AChar: string): Char;
begin
  case WORD(AChar[1]) shl 8 + WORD(AChar[2]) of
    $B0A1..$B0C4: Result := 'A';
    $B0C5..$B2C0: Result := 'B';
    $B2C1..$B4ED: Result := 'C';
    $B4EE..$B6E9: Result := 'D';
    $B6EA..$B7A1: Result := 'E';
    $B7A2..$B8C0: Result := 'F';
    $B8C1..$B9FD: Result := 'G';
    $B9FE..$BBF6: Result := 'H';
    $BBF7..$BFA5: Result := 'J';
    $BFA6..$C0AB: Result := 'K';
    $C0AC..$C2E7: Result := 'L';
    $C2E8..$C4C2: Result := 'M';
    $C4C3..$C5B5: Result := 'N';
    $C5B6..$C5BD: Result := 'O';
    $C5BE..$C6D9: Result := 'P';
    $C6DA..$C8BA: Result := 'Q';
    $C8BB..$C8F5: Result := 'R';
    $C8F6..$CBF9: Result := 'S';
    $CBFA..$CDD9: Result := 'T';
    $CDDA..$CEF3: Result := 'W';
    $CEF4..$D188: Result := 'X';
    $D1B9..$D4D0: Result := 'Y';
    $D4D1..$D7F9: Result := 'Z';
  else
    Result := Char(0);
  end;
end;

class function TString.GetPy(AStr: string): string;
var
  I: Integer;
begin
  Result := '';
  for I := 1 to Length(AStr) do
  begin

    if ByteType(AStr, i) = mbTrailByte then
      Result := Result + GetPYIndexChar(AStr[i - 1] + AStr[i])
    else
      if ByteType(AStr, i) = mbSingleByte then
        Result := Result + AStr[i];
  end;

end;

function TString.CharAt(APosition: Integer): Char;
begin
  Result := FText[APosition];
end;

class function TString.CharSetToString(AValue: TCharSet): string;
begin

end;

class function TString.CompareString(AValue1, AValue2: string): Boolean;
begin
  Result := UpperCase(AValue1) = UpperCase(AValue2);
end;

class function TString.DeletePrefix(AValue: string;
  FixedString: TCharSet): string;
begin
  while System.Length(AValue) > 0 do
  begin
    if AValue[1] in FixedString then
      Delete(AValue, 1, 1)
    else
      Break;
  end;
  Result := AValue;
end;

class function TString.GetFirstWord(AValue: string; var AWord: string; ASeparator: TCharSet
  ): Integer;
var
  tmpStr: string;
  tmpPos: Integer;
begin
  tmpStr := DeleteSuffix(AValue, ASeparator);
  tmpStr := DeletePrefix(AValue, ASeparator);

  Result := Length(AValue) - Length(tmpStr);
{  if Length(tmpStr) = 0 then Exit;

  if (tmpStr[1] = '''') and (tmpStr[2] = '''')then
  begin
    for tmpPos := 3 to Length(tmpStr) do
    begin
      if tmpStr[tmpPos] in [''''] then
        Break;
    end;
  end;

  if tmpPos > 3 then tmpPos :=tmpPos + 2;
}
  for tmpPos := 1 to Length(tmpStr) do
  begin
    if tmpStr[tmpPos] in ASeparator then
      Break;
  end;

  tmpPos := tmpPos -1;

//  {TODO : -oghs 修復最后一個參數解析不正確}
  if (tmpPos = 0) and (AValue <> '') then
    tmpPos := Length(AValue);

  AWord := Copy(AValue, Result + 1, tmpPos);

  Result := Result + tmpPos;
end;

class function TString.HashCode(AValue: string): Integer;
var
  i: Integer;
  tmpValue: Integer;
begin
  tmpValue := 0;
  for I := 1 to System.Length(AValue) do
  begin
    tmpValue := 3 * tmpValue + Ord(AValue[I]);
  end;
  Result := tmpValue;
end;

class function TString.IsAllChinese(AStr: string): Boolean;
var
  I: Integer;
begin
  Result := True;
  for I := 1 to Length(AStr) do
  begin
    if ByteType(AStr, I) = mbSingleByte then
    begin
      Result := False;
      Break;
    end;
  end;
end;

class function TString.IsAllEnglish(AStr: string): Boolean;
var
  I: Integer;
begin
  Result := True;
  for I := 1 to Length(AStr) do
  begin
    if ByteType(AStr, I) <> mbSingleByte then
    begin
      Result := False;
      Break;
    end;
  end;
end;

class function TString.LastChar(AValue: string): Char;
begin
  Result := AValue[System.Length(AValue)];
end;

class function TString.Left(AValue: string; ALength: Integer): string;
begin
  Result := Copy(AValue, 1, ALength);
end;

class function TString.Right(AValue: string; ALength: Integer): string;
begin
  Result := StrUtils.RightStr(AValue, ALength);
end;

class function TString.SetString(var s: string; buffer: PChar;
  len: Integer): string;
begin
  System.SetString(s, buffer, len);
  Result := s;
end;

class function TString.StringIn(AValue: string;
   AValues: array of string): Boolean;
var
  I: Integer;
begin
  Result := False;
  for I := Low(AValues) to High(AValues) do
  begin
    if UpperCase(AValue) = UpperCase(AValues[I]) then
    begin
      Result := True;
      Break;
    end;
  end;
end;

class function TString.StringOfChar(Ch: Char; Count: Integer): string;
begin
  Result := System.StringOfChar(Ch, Count);
end;

class function TString.StringReplace(const S, OldPattern,
  NewPattern: string; Flags: TReplaceFlags): string;
begin
  Result := Sysutils.StringReplace(S, OldPattern, NewPattern, Flags);
end;

class function TString.StringToCharSet(AValue: string): TCharSet;
var
  I: Integer;
begin
  Result := [];
  for I := 1 to Length(AValue) do
  begin
    Result := Result + [AValue[I]];
  end;   
end;

function TString.toLowerCase: string;
begin
  Result := LowerCase(FText);
end;

function TString.toUpperCase: string;
begin
  Result := Uppercase(FText);
end;

class function TString.ValueOf(AValue: Boolean): string;
begin
  if AValue then
    Result := '是'
  else
    Result := '否';
end;

class function TString.ValueOf(AValue: string): Boolean;
begin
  Result := StringIn(AValue, ['是', 'yes', 'ok']);
end;

class function TString.GetFirstWord(AValue: string; var AWord: string;
  ASeparator: string): Integer;
begin
  Result := GetFirstWord(AValue, AWord, StringToCharSet(ASeparator));
end;

class function TString.GetAllWord(AValue, ASeparator: string): TStringList;
var
  tmpList: TStringList;
  tmpWord: string;
begin
  tmpList := TStringList.Create;
  while Length(AValue) > 0 do
  begin
    tmpWord := '';
    Delete(AValue, 1, GetFirstWord(AValue, tmpWord, ASeparator));
    if tmpWord <> '' then
      tmpList.Add(tmpWord)
    else
      Break;
  end;
  Result := tmpList;
end;

class function TString.UpdateSentence(AOldString, AUpdateSource,
  AUpdateString, ASentenceSeparator, AWordSeparator: string): string;
var
  tmpSentence: string;
  tmpWord: string;
  tmpWord1: string;
  i: Integer;
  tmpResult: string;
begin
  //得到第一個句子
  tmpSentence := AOldString;
  tmpResult := '';
  while Length(tmpSentence) > 0 do
  begin
    i := GetFirstWord(tmpSentence, tmpWord, ASentenceSeparator);
    tmpResult := tmpResult + Left(tmpSentence, i - Length(tmpWord));
    Delete(tmpSentence, 1, I);
    if tmpWord <> '' then
    begin
      i := GetFirstWord(tmpWord, tmpWord1, AWordSeparator);
      tmpResult := tmpResult + Left(tmpWord, i - Length(tmpWord1));
      if CompareString(tmpWord1, AUpdateSource) then
      begin
        tmpResult := tmpResult + AUpdateString;
      end
      else
      begin
        tmpResult := tmpResult + tmpWord;
      end;
    end;
  end;
  tmpResult := DeletePrefix(tmpResult, [' ', ',']);
  tmpResult := DeleteSuffix(tmpResult, [' ', ',']);
  tmpResult := DeleteRepeat(tmpResult, ',', ' ');
  tmpResult := DeleteRepeat(tmpResult, ' ', ' ');
  Result := tmpResult;

end;

class function TString.DeleteRepeat(AOldString: string; ADeleteString,
  ARepeat: Char): string;
var
  I: Integer;
  tmpfind1: Boolean;
begin
  tmpfind1 := False;
  for I := Length(AOldString) downto 1 do
  begin
    if tmpfind1 then
    begin
      if AOldString[I] = ADeleteString then
        Delete(AOldString, I, 1)
      else
      begin
        if AOldString[I] = ARepeat then
        Continue;
        tmpfind1 := AOldString[I] = ADeleteString;
      end;
    end
    else
    begin
      if ADeleteString <> ARepeat then
        if AOldString[I] = ARepeat then
          Continue;
       
      tmpfind1 := AOldString[I] = ADeleteString
    end;
  end;
  Result := AOldString;
end;

class function TString.DeleteSuffix(AValue: string;
  FixedString: TCharSet): string;
begin
  while System.Length(AValue) > 0 do
  begin
    if AValue[System.Length(AValue)] in FixedString then
      Delete(AValue, System.Length(AValue), 1)
    else
      Break;
  end;
  Result := AValue;
end;

class procedure TString.GetAllWord(AValue, ASeparator: string;
  AStringList: TStrings);
var
  tmpWord: string;
begin
  if AStringList = nil then
    AStringList := TStringList.Create;

  while Length(AValue) > 0 do
  begin
    tmpWord := '';
    Delete(AValue, 1, GetFirstWord(AValue, tmpWord, ASeparator));
    if tmpWord <> '' then
      AStringList.Add(tmpWord)
    else
      Break;
  end;

end;

class function TString.IfThen(AExpression: Boolean; ATrue,
  AFalse: string): string;
begin
  if AExpression then
    Result := ATrue
  else
    Result := AFalse;   
end;

class function TString.AbsoluteToRelate(AAbsolute,
  ACurrent: string): string;
var
  tmpSimilarString: string;
  AOldFile: string;
  i: Integer;
  tmpPos: Integer;
begin
  //轉換后形成 ../../a.ini;
//如果不在同一個驅動器上,則直接返回絕對路徑.
  if ExtractFileDrive(AAbsolute) <> ExtractFileDrive(ACurrent) then
    Result := AAbsolute
  else
  begin
    tmpSimilarString := '';
    AOldFile := AAbsolute;
    AAbsolute := ExtractFilePath(AAbsolute);
    tmpPos := SimilarPosition(AAbsolute, ACurrent);
    Delete(AOldFile, 1, tmpPos - 1);
    Delete(ACurrent, 1, tmpPos - 1);
    for i := 0 to GetCharNum(ACurrent, '/') -1 do
    begin
      tmpSimilarString := tmpSimilarString + '../';
    end;
    Result := tmpSimilarString + AOldFile;
  end;
end;

class function TString.RelateToAbsolute(ARelate, ACurrent: string): string;
var
  tmpSimilarString: string;
  tmpRootCount: Integer;
  i: Integer;
begin
  if Length(ARelate) > 2 then
  begin
    if ARelate[2] = ':' then
    begin
      Result := ARelate;
      Exit;
    end;
  end;

  tmpSimilarString := '';
  tmpRootCount := 0;
  while True do
  begin
    if LeftStr(ARelate, 3) = '../' then
    begin
      Inc(tmpRootCount);
      Delete(ARelate, 1, 3);
    end
    else
      break;
  end;

  tmpSimilarString := ReverseString(ExtractFilePath(ACurrent));
  for i := 0 to tmpRootCount do
  begin
    Delete(tmpSimilarString, 1, Pos('/', tmpSimilarString));
  end;

  Result := ReverseString(tmpSimilarString) + ARelate;
end;

class function TString.SimilarPosition(AOne, ATwo: string): Integer;
var
  i: Integer;
  Max: Integer;
begin
  if Length(AOne) < Length(ATwo) then
    Max := Length(AOne)
  else
    Max := Length(ATwo);
  for i := 1 to Max do
  begin
    if AOne[i] <> ATwo[i] then
      Break;
  end;
  Result := i;
end;

class function TString.GetCharNum(AString: string; AChar: Char): Integer;
var
  i: Integer;
begin
  Result := 0;
  for i := 1 to Length(AString) do
  begin
    if AString[i] = AChar then
      Inc(Result);
  end;
end;

class procedure TString.GetAllWordWithAll(AValue, ASeparator: string;
  AStringList: TStrings);
var
  tmpI: Integer;
  tmpPos: Integer;
begin
  if AStringList = nil then
    AStringList := TStringList.Create;

  tmpPos := 0;
  while Length(AValue) > 0 do
  begin
    for tmpI := 1 to Length(AValue) do
    begin
      tmpPos := Pos(AValue[tmpPos], ASeparator);
      if tmpPos > 0 then
      begin
        AStringList.Add(Copy(AValue, 1, tmpPos - 1));
        AStringList.Add(Copy(AValue, tmpPos, 1));
        Delete(AValue, 1, tmpPos);
        Break;
      end
    end;

  end;    // while
 
end;

class function TString.toLowerCase(AString: string): string;
begin
  Result := LowerCase(AString);
end;

class function TString.toUpperCase(AString: string): string;
begin
  Result := Uppercase(AString);
end;

class function TString.IndexOf(AString, ASubString: string): Integer;
begin
  Result := Pos(ASubstring, AString);
end;

class function TString.ZeroToInt(AString: string): Integer;
begin
  if Trim(AString) = '' then
    AString := '0';

  Result := StrToInt(AString);
end;

class function TString.ZeroToFloat(AString: string): Double;
begin
  if Trim(AString) = '' then
    AString := '0.0';
  Result := StrToFloat(AString);   
end;

class function TString.SameText(AString, AString1: string): Boolean;
begin
  Result := SysUtils.SameText(AString, AString1);
end;

class function TString.Reverse(AString: string): string;
begin
  Result := ReverseString(AString);
end;

class function TString.IsValidIP(const S: String): Boolean;
var
  j, i: Integer;
  LTmp: String;
begin
  Result := True;
  LTmp := Trim(S);
  for i := 1 to 4 do begin
    j := StrToIntDef(Fetch(LTmp, '.'), -1);   
    Result := Result and (j > -1) and (j < 256);
    if NOT Result then begin
      Break;
    end;
  end;
end;

class function TString.ZeroToStr(AString: string): string;
begin
  if Trim(AString) = '' then
    Result := '0'
  else
    Result := AString;
end;

class function TString.FillString(AChar: Char; ALength: Integer): string;
var
  i: Integer;
begin
  Result := '';
  for I := 1 to ALength do    // Iterate
  begin
    Result := Result + AChar;
  end;    // for
end;

class function TString.StuffString(const AText: string; AStart,
  ALength: Cardinal; const ASubText: string): string;
begin
  Result := StrUtils.StuffString(AText, AStart, ALength, ASubText);
end;

class function TString.GetNextString(var SourceString: string;
  ASplitChar: string): string;
var
  tmpPos: Integer;
begin
  tmpPos := Pos(ASplitChar, SourceString);
  if tmpPos = 0 then
  begin
    Result := SourceString;
    SourceString := ''
  end
  else
  begin
    Result := TString.Left(SourceString, tmpPos -1);
    Delete(SourceString, 1, tmpPos);
  end;
end;

{ TInteger }

class function TInteger.IntToStr(AInteger: Integer): string;
begin
  Result := Sysutils.IntToStr(AInteger);
end;

class function TInteger.HashCode(AInteger: Integer): Integer;
begin
  Result := AInteger;
end;

class function TInteger.IntToStr(AInteger: Int64): string;
begin
  Result := Sysutils.IntToStr(AInteger);
end;

class function TInteger.IsValidInt(AString: string): Boolean;
begin
  Result := True;
  try
    StrToInt(AString);
  except
    Result := False;
  end;
end;

class function TInteger.IsValidInt64(AString: string): Boolean;
begin
  Result := True;
  try
    StrToInt(AString);
  except
    Result := False;
  end;
end;

class function TInteger.MaxInt: Integer;
begin
  Result := System.MaxInt;
end;

class function TInteger.MaxLongInt: Integer;
begin
  Result := System.MaxLongint;
end;

class function TInteger.IntToBin(AInteger: Cardinal): string;
var
  i: Integer;
begin
  SetLength(Result, 32);
  for i := 1 to 32 do
  begin
    if ((AInteger shl (i-1)) shr 31) = 0 then
      Result[i] := '0'
    else
      Result[i] := '1';
  end;

end;

class function TInteger.IntToHex(AInteger: Integer): string;
begin
  Result := SysUtils.IntToHex(AInteger, 0);
end;

class function TInteger.HexToInt(AString: string): Integer;
begin
  if TString.Left(AString, 1) = '$' then
    Result := StrToInt(AString)
  else
    Result := StrToInt('$' + AString);   
end;

class function TInteger.MakeSerialNo(AInteger, ADigit: Integer): string;
var
  tmpStr: string;
  i: Integer;
begin
  tmpStr := '';
  for I := 0 to ADigit - 1 do    // Iterate
  begin
    tmpStr := tmpStr + '0';
  end;    // for

  Result := FormatFloat(tmpStr, AInteger);

end;

{ TFloat }

class function TFloat.FloatToMoney(const Value: Double; Round: Boolean): string;
begin
  //金額默認采用四舍五入
 
end;

class function TFloat.IsValidFloat(AString: string): Boolean;
begin
  Result := True;
  try
    StrToFloat(AString);
  except
    Result := False;
  end;
end;

class function TFloat.MaxDouble: Double;
begin
  Result := 1.7e+308;
end;

class function TFloat.MaxExtended: Extended;
begin
  Result := 1.1e+4932;
end;

class function TFloat.MinDouble: Double;
begin
  Result := 5.0e-324;
end;

class function TFloat.MinExtended: Extended;
begin
  Result := 3.4e-4932;
end;

class function TFloat.SameValue(const A, B: Single;
  Epsilon: Single): Boolean;
begin
  Result := Math.SameValue(A, B, Epsilon);
end;

class function TFloat.SameValue(const A, B: Double;
  Epsilon: Double): Boolean;
begin
  Result := Math.SameValue(A, B, Epsilon);
end;

class function TFloat.SameValue(const A, B: Extended;
  Epsilon: Extended): Boolean;
begin
  Result := Math.SameValue(A, B, Epsilon);
end;

{ TBoolean }

class function TBoolean.BoolToStr(ABoolean: Boolean): string;
begin
  if ABoolean then
    Result := 'True'
  else
    Result := 'False';         
end;

class function TBoolean.StrToBool(AString: string): Boolean;
begin
  if UpperCase(AString) = 'TRUE' then
    Result := True
  else
    Result := False;
   
end;

end.


上一篇:delphi中宏小用

下一篇:delphi8里在VCL.net使用Ado.net

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线亚洲欧美视频| 亚洲国产欧美自拍| 国产精品久久久久不卡| 91日本在线观看| 大伊人狠狠躁夜夜躁av一区| 日韩一级黄色av| 91精品国产自产91精品| 久久久成人av| 国产精品稀缺呦系列在线| 亚洲精品影视在线观看| 精品视频www| 国产精品久久久久一区二区| 久久深夜福利免费观看| 欧美综合在线观看| 亚洲一区二区日本| 麻豆精品精华液| 国产在线a不卡| 亚洲最大av在线| 黄色一区二区三区| 国产91精品最新在线播放| 国产欧美日韩精品丝袜高跟鞋| 日韩欧美大尺度| 亚洲国产精品成人精品| 亚洲区一区二区| 不卡在线观看电视剧完整版| 最新国产精品亚洲| 国产999精品视频| 国产精品福利观看| 欧美高跟鞋交xxxxhd| 亚洲在线www| 午夜精品在线观看| 国产精品都在这里| 亚洲香蕉av在线一区二区三区| 中文字幕在线观看日韩| 亚洲一区二区免费在线| 国内精品久久久久| 韩剧1988在线观看免费完整版| 亚洲电影免费观看高清完整版在线观看| 欧美成人小视频| 国产精品女主播| 欧美午夜丰满在线18影院| 亚洲在线www| 亚洲福利视频在线| 91av在线免费观看视频| 精品日韩中文字幕| 日韩av网站大全| 国产精品久久一区主播| 欧美最猛性xxxxx免费| 免费91在线视频| 日韩av三级在线观看| 黄色一区二区三区| 日韩毛片在线观看| 91日本视频在线| 亚洲 日韩 国产第一| 超碰精品一区二区三区乱码| 国产欧美一区二区| 欧美视频在线免费看| 国产视频精品va久久久久久| 热久久视久久精品18亚洲精品| 亚洲区一区二区| 欧美性少妇18aaaa视频| 国产日韩在线一区| 亚洲性视频网站| 亚洲黄色片网站| 亚洲女人天堂av| 日韩av观看网址| 91亚洲一区精品| 欧美自拍视频在线| 自拍偷拍亚洲一区| 日韩美女免费视频| 91精品久久久久久久久久另类| 国产精品免费小视频| 精品成人国产在线观看男人呻吟| 精品国产欧美一区二区三区成人| 一区二区三区无码高清视频| 欧美高清在线观看| 久久久久北条麻妃免费看| 色妞久久福利网| 欧美激情va永久在线播放| 欧美www视频在线观看| 国产日本欧美在线观看| 欧美激情精品久久久久久| 午夜精品在线观看| 国产精品丝袜视频| 亚洲欧美综合精品久久成人| 在线视频欧美日韩精品| 欧美精品在线观看| 国产成人鲁鲁免费视频a| 国产精品视频内| 久久视频在线观看免费| 亚洲另类图片色| 欧美成人小视频| 国产精品夜色7777狼人| 国产精品网红福利| 国产精品久久久久久久av大片| 国产成人精品电影久久久| 少妇久久久久久| 亚洲欧美国产精品专区久久| 精品久久久久久久久国产字幕| 亚洲国产婷婷香蕉久久久久久| 国产精品久久久久久婷婷天堂| 精品人伦一区二区三区蜜桃网站| 91免费高清视频| 亚洲自拍偷拍视频| 国产精品爽爽ⅴa在线观看| 国产欧美日韩专区发布| 亚洲美女又黄又爽在线观看| 国产91对白在线播放| 国产精品女人久久久久久| 亚洲成人av中文字幕| 成人欧美一区二区三区黑人| 91夜夜揉人人捏人人添红杏| 九九热在线精品视频| 久久69精品久久久久久久电影好| 国产精品扒开腿做爽爽爽男男| 色婷婷综合久久久久| 久久久久九九九九| 亚洲电影av在线| 欧美一级大片在线免费观看| 亚洲第一区第一页| 这里只有精品视频| 久久九九全国免费精品观看| 久久综合伊人77777| 日韩视频亚洲视频| 国产亚洲aⅴaaaaaa毛片| 日韩亚洲精品电影| 欧美极品欧美精品欧美视频| 欧美制服第一页| 亚洲精品国产精品国自产在线| 亚洲精品综合精品自拍| 亚洲一区中文字幕在线观看| 久久精品视频在线播放| 亚洲国产精品福利| 欧美重口另类videos人妖| 亚洲天堂av高清| 国产日韩欧美在线播放| 久久影院在线观看| 在线一区二区日韩| 性色av香蕉一区二区| 日韩一区二区三区国产| 国产精品福利网| 98视频在线噜噜噜国产| www.午夜精品| 精品国产一区av| 不卡在线观看电视剧完整版| 久久久精品在线观看| 国产精品女主播| 欧美成人网在线| 中文字幕亚洲情99在线| 亚洲欧美日韩久久久久久| 亚洲va电影大全| 清纯唯美日韩制服另类| 欧美性感美女h网站在线观看免费| 欧美噜噜久久久xxx| 国a精品视频大全| 国产精品亚洲激情| 欧美性生活大片免费观看网址| 国产中文欧美精品| 欧美日韩免费在线| 91欧美精品成人综合在线观看| 日韩精品亚洲元码| 91精品视频免费看| 亚洲国产精品大全| 国产亚洲精品久久久久久777|