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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? asgrout3.pas

?? 定時器for timer for ic chip
?? PAS
字號:
{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Author:       Albert Drent
Description:  ASGRout parser routines
Creation:     Januari 1998
Version:      1.2.B
EMail:        a.drent@aducom.com (www.aducom.com)
Support:      support@aducom.com (www.aducom.com)
Legal issues: Copyright (C) 2003 by Aducom Software

              Aducom Software
              Eckhartstr 61
              9746 BN  Groningen
              Netherlands

              This software is provided 'as-is', without any express or
              implied warranty.  In no event will the author be held liable
              for any damages arising from the use of this software.

              Permission is granted to anyone to use this software for any
              purpose, including commercial applications, and to alter it
              and redistribute it freely, subject to the following
              restrictions:

              1. The origin of this software must not be misrepresented,
                 you must not claim that you wrote the original software.
                 If you use this software in a product, an acknowledgment
                 in the product documentation would be appreciated but is
                 not required.

              2. Altered source versions must be plainly marked as such, and
                 must not be misrepresented as being the original software.

              3. If you make changes which improves the component you must
                 mail these to aducom as the moderator of the components
                 complete with documentation for the benefits of the community.

              4. You are not allowed to create commercial available components
                 using this software. If you use this source in any way to create
                 your own components, your source should be free of charge,
                 available to anyone. It's a far better idea to distribute your
                 changes through Aducom Software.

              5. This notice may not be removed or altered from any source
                 distribution.

              6. You must register this software by entering the support forum.
                 I like to keep track about where the components are used, so
                 sending a picture postcard to the author would be appreciated.
                 Use a nice stamp and mention your name, street
                 address, EMail address and any comment you like to say.

Modifications
              26/5/2004 Function YYYYMMDDParser by JPierce, necessary for
              locale independent datehandling in SQLite components.
              1/9/2005 Changes to the StrToFloatX routine, now depending on
              decimalseparator.

*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * }

unit ASGRout3;

interface

uses SysUtils;

const
  vtcIdentifier = 1;
  vtcNumber = 2;
  vtcAssignment = 3;
  vtcQString = 4;
  vtcDString = 5;
  vtcRelOp = 6;
  vtcFloat = 7;
  vtcDelimiter = 8;
  vtcEof = 9;

procedure FindErrorPos(InString: string; ErrPos: integer;
  var TheLine, TheCol: integer);
function GetWord(var InString: string; var StartPos: integer;
  var VarType: integer): string;
function GetWordByDelim(var InString: string; var StartPos: integer;
  var Delim: string): string;
function PeekWord(var InString: string; StartPos: integer;
  var VarType: integer): string;
function Recover(var InString: string; var StartPos: integer): boolean;
function StrToIntX(StrIn: string): integer;
function StrToFloatX(StrIn : string) : extended;
function StrToDateX(TheDate: string): TDateTime;
function StrToDateTimeX(const S: string): TDateTime;
function YYYYMMDDParser(Str: PChar): TDateTime;
function FloatParser(Str: string): string;// jordi march

implementation

function FloatParser(Str: string): string;// jordi march
var
  Point: Byte;
begin
  if  DecimalSeparator <> '.'  then  begin
    Point := Pos ('.', Str);
    if  Point <> 0
    then  Str[Point] := DecimalSeparator;
  end;
  Result := Str;
end;

 //==============================================================================
 // Convert dates to a correct datetime notation. Try several notations,
 // starting with the system defaults                           
 //==============================================================================

function StrToDateTimeX(const S: string): TDateTime;
begin
  if S = '' then
     StrToDateTimeX := 0
  else begin
     try
        StrToDateTimeX := StrToDateTime(S);
     except
        StrToDateTimeX := StrToDateX(s);
     end;
  end;
end;

function StrToDateX(TheDate: string): TDateTime;
var
  DateFormat: string;
  DateSep:    char;
begin
  DateFormat := ShortDateFormat; // save current settings
  DateSep    := DateSeparator;
  try
    try
      StrToDateX      := StrToDate(TheDate)
    except
      DateSeparator   := '-';
      ShortDateFormat := 'dd-mm-yyyy';
      try
        StrToDateX      := StrToDate(TheDate)
      except
        ShortDateFormat := 'yyyy-mm-dd';
        try
          StrToDateX := StrToDate(TheDate)
        except
          StrToDateX := StrToDateX('01-01-1900');
          raise;
        end;
      end;
    end;
  finally
    ShortDateFormat := DateFormat;
    DateSeparator   := DateSep;
  end;
end;

// Routine submitted by jpierce, modified to accept more types
// It requires that the date be in strict yyyy-mm-dd [hh:nn:[ss[:mmm]]]

function YYYYMMDDParser(Str: PChar): TDateTime;
var
  Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
  Result := 0;

  try
    if Length(Str) >= 10 then // 10 = Length of YYYY-MM-DD
    begin
      Year := StrToInt(Copy(Str, 1, 4));
      Month := StrToInt(Copy(Str, 6, 2));
      Day := StrToInt(Copy(Str, 9, 2));

      Result := EncodeDate(Year, Month, Day);
    end;

    if Length(Str) > 10 then // it has a time
    begin
      Hour := StrToInt(Copy(Str, 12, 2));
      Min := StrToInt(Copy(Str, 15, 2));
      Sec := 0;
      MSec := 0;
      if Length(Str) > 16 then Sec := StrToInt(Copy(Str, 18, 2));
      if Length(Str) > 19 then Msec := StrToInt(Copy(Str, 21, 3));
      Result := Result + EncodeTime(Hour, Min, Sec, MSec);
    end;
  except
    Result := 0;
  end;
end;

function StrToIntX(StrIn: string): integer;
var
E: Integer;
begin
 Val(StrIn, Result, E);
 if E <> 0 then Result := 0;
end;

function StrToFloatX(StrIn : string) : extended;
begin
  if not TextToFloat(PChar(StrIn), Result, fvExtended) then
  Result := 0;
end;

procedure FindErrorPos(InString: string; ErrPos: integer;
  var TheLine, TheCol: integer);
var
  i: integer;
begin
  TheLine := 1;
  TheCol := 1;
  i := 1;
  while i < ErrPos do
  begin
    if InString[i] in [ #10, #13] then
    begin
      Inc(TheLine);
      TheCol := 1;
      Inc(i);
      Inc(i);
    end
    else
    begin
      Inc(TheCol);
      Inc(i);
    end;
  end;
end;

function Recover(var InString: string;
  var StartPos: integer): boolean;
begin
  if (StartPos > Length(InString)) then
  begin
    Recover := false;
    exit;
  end;

  while (Startpos < Length(InString)) and
    ( not (InString[StartPos] in [ #10, #13])) do
    Inc(StartPos);
  Recover := true;
end;

function PeekWord(var InString: string; StartPos: integer;
  var VarType: integer): string;
begin
  PeekWord := GetWord(InString, StartPos, VarType);
end;

function GetWordByDelim(var InString: string;
  var StartPos: integer;
  var Delim: string): string;
var
  Ret: string;
begin
  Ret := '';
  while (StartPos <= Length(InString)) and (InString[StartPos] = ' ') do
    Inc(StartPos);
  while (StartPos <= Length(InString)) and (Pos(InString[StartPos], Delim) = 0) do
  begin
    Ret := Ret + InString[StartPos];
    Inc(StartPos);
  end;
  GetWordByDelim := Trim(Ret);
end;

function GetWord(var InString: string; var StartPos: integer;
  var VarType: integer): string;
var
  TheChar: char;
  Rv:      string;
begin
  if (StartPos > Length(InString)) then
  begin
    GetWord := '';
    VarType := vtcEof;
    exit;
  end;

  while (StartPos <= Length(InString)) and (InString[StartPos] <= #32) do
    Inc(StartPos);

  TheChar := InString[StartPos];
  Rv      := '';

  if TheChar in ['a'..'z', 'A'..'Z'] then
    VarType := vtcIdentifier
  else if TheChar in ['0'..'9', '-'] then
    VarType := vtcNumber
  else if TheChar = ':' then
    VarType := vtcAssignment
  else if TheChar = '"' then
    VarType := vtcDString
  else if TheChar = '''' then
    VarType := vtcQString
  else if TheChar in ['>', '=', '<'] then
    VarType := vtcRelOp
  else
  begin
    Inc(StartPos);
    if TheChar = '!' then
    begin
      Recover(InString, StartPos);
      Rv      := GetWord(InString, StartPos, VarType);
      GetWord := Rv;
    end
    else
    begin
      GetWord := TheChar;
    end;
    exit;
  end;

  case VarType of
    vtcIdentifier:
    begin
      while InString[StartPos] in ['a'..'z', 'A'..'Z', '_','0'..'9'] do
      begin
        Rv := Rv + InString[StartPos];
        Inc(StartPos);
      end;
    end;
    vtcNumber:
    begin
      while InString[StartPos] in ['-', '0'..'9', '.'] do
      begin
        if InString[StartPos] = '.' then
          VarType := vtcFloat;
        Rv := Rv + InString[StartPos];
        Inc(StartPos);
      end;
      if VarType = vtcFloat then
        Rv := FloatToStr(StrToFloat(Rv))
      else
        Rv := IntToStr(StrToInt(Rv));
    end;
    vtcAssignment:
    begin
      Rv := InString[StartPos];
      Inc(StartPos);
      if InString[StartPos] = '=' then
      begin
        Inc(StartPos);
        Rv := ':=';
      end
      else
      begin
        VarType := vtcDelimiter;
        Rv      := ':';
      end;
    end;
    vtcQString:
    begin
      Inc(StartPos);
      while InString[StartPos] <> '''' do
      begin
        Rv := Rv + InString[StartPos];
        Inc(StartPos);
      end;
      Inc(StartPos);
    end;
    vtcDString:
    begin
      Inc(StartPos);
      while InString[StartPos] <> '"' do
      begin
        Rv := Rv + InString[StartPos];
        Inc(StartPos);
      end;
      Inc(StartPos);
    end;
    vtcRelOp:
    begin
      Rv := InString[StartPos];
      if Rv = '<' then
      begin
        if InString[StartPos + 1] in ['=', '>'] then
        begin
          Rv := Rv + InString[StartPos + 1];
          StartPos := StartPos + 2;
        end
        else
        begin
          Inc(StartPos);
        end;
      end
      else if Rv = '>' then
      begin
        if InString[StartPos + 1] in ['=', '<'] then
        begin
          Rv := Rv + InString[StartPos + 1];
          StartPos := StartPos + 2;
        end
        else
        begin
          Inc(StartPos);
        end;
      end
      else
      begin
        Inc(StartPos);
      end;
    end;
  end;
  GetWord := Rv;
end;

{$IFDEF SQLite_Static} 
Var 
  TZInfo  :_TIME_ZONE_INFORMATION; 
  TZRes   :Integer; 

initialization 
  PInteger(@__timezone)^:=0; 
  PInteger(@__daylight)^:=0; 
  TZRes:=GetTimezoneInformation(TZInfo); 
  if TZRes>=0 Then 
    PInteger(@__timezone)^:=TZInfo.Bias*60; 
  if TZRes=TIME_ZONE_ID_DAYLIGHT Then 
    PInteger(@__daylight)^:=1; 
{$ENDIF} 

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日产亚洲精品系列| 欧美成人激情免费网| 国产成人一级电影| 国产高清精品网站| 国产精品一色哟哟哟| 国产一区二区三区免费在线观看| 国产露脸91国语对白| 成人免费视频视频在线观看免费 | 黄网站免费久久| 国产一区二区久久| 国产精品一区二区久激情瑜伽| 国产一区二区三区四区五区入口| 国产成人在线电影| 色欧美片视频在线观看在线视频| 色哟哟精品一区| 欧美日韩国产首页在线观看| 777xxx欧美| 国产视频不卡一区| 亚洲免费三区一区二区| 丝瓜av网站精品一区二区 | 久久老女人爱爱| 国产精品蜜臀在线观看| 亚洲一区二区视频在线观看| 毛片一区二区三区| 不卡的电影网站| 欧美日韩国产区一| 久久精品人人做人人综合| 亚洲成人福利片| 午夜精品视频一区| 国产综合色视频| 色综合天天视频在线观看| 日韩女优毛片在线| 中文字幕制服丝袜成人av| 午夜视频一区二区| 国产91精品精华液一区二区三区 | 偷拍与自拍一区| 国产麻豆精品在线| 欧美日韩一区在线观看| 精品国产伦一区二区三区观看体验 | 国内精品伊人久久久久av一坑| 粉嫩13p一区二区三区| 欧美性大战久久久久久久蜜臀| 精品免费国产一区二区三区四区| 中文字幕一区二区三区蜜月| 蜜臂av日日欢夜夜爽一区| 91在线观看下载| 亚洲精品一区二区精华| 亚洲一区二区三区国产| 成人国产免费视频| 日韩精品一区二区三区蜜臀 | 亚洲国产精品欧美一二99| 国产成人免费视频一区| 欧美一级免费大片| 亚洲五月六月丁香激情| 成人黄色在线网站| 国产亚洲欧美日韩在线一区| 麻豆传媒一区二区三区| 欧美日韩不卡一区| 久久奇米777| 国产精品久久久久影院| 美女精品自拍一二三四| 欧美日韩视频第一区| 亚洲欧美另类久久久精品2019| 国产成人免费在线观看| 欧美精品一区二区三区很污很色的 | 国产精品午夜春色av| 精品一区二区在线视频| 欧美一区二区视频在线观看| 亚洲第一在线综合网站| 欧洲人成人精品| 亚洲色图视频网| 色综合一区二区三区| 亚洲天堂精品视频| 93久久精品日日躁夜夜躁欧美| 国产精品国产自产拍高清av | 青青国产91久久久久久 | 国产夫妻精品视频| 国产日韩av一区| 国产aⅴ精品一区二区三区色成熟| 久久久不卡影院| 国产91精品在线观看| 国产精品护士白丝一区av| 91美女在线视频| 亚洲国产精品嫩草影院| 日韩一区二区中文字幕| 精品一区二区免费在线观看| 26uuu另类欧美亚洲曰本| 国产成人午夜视频| 国产精品国产三级国产| 欧美性欧美巨大黑白大战| 视频一区视频二区在线观看| 欧美一区二区精品久久911| 蜜臀va亚洲va欧美va天堂| 久久综合色综合88| www.日韩在线| 亚洲va中文字幕| 精品久久人人做人人爰| 国产超碰在线一区| 亚洲免费观看在线观看| 欧美一区二区精品久久911| 国产麻豆精品95视频| 亚洲精品乱码久久久久久久久| 欧美三级一区二区| 国产精品一色哟哟哟| 一区二区三区四区乱视频| 欧美一区二区三区成人| 成人中文字幕电影| 水野朝阳av一区二区三区| 国产日韩欧美一区二区三区乱码| 一本一道久久a久久精品综合蜜臀| 午夜久久久久久| 国产精品另类一区| 337p亚洲精品色噜噜| www.亚洲免费av| 奇米777欧美一区二区| 国产精品二区一区二区aⅴ污介绍| 欧美猛男男办公室激情| 成人免费av网站| 免费观看一级特黄欧美大片| 亚洲欧美韩国综合色| 精品三级在线观看| 欧美午夜寂寞影院| 99久久精品国产精品久久| 久久精品国产久精国产| 亚洲精品欧美综合四区| 国产精品女同互慰在线看| 日韩一区二区免费在线观看| 91浏览器在线视频| 国产激情视频一区二区在线观看| 婷婷夜色潮精品综合在线| 中文字幕一区二区在线播放| 久久久99久久精品欧美| 欧美电影在线免费观看| 在线一区二区观看| 99re热视频精品| 成人一区在线观看| 国产高清在线精品| 经典三级视频一区| 久久福利视频一区二区| 青椒成人免费视频| 日韩中文字幕亚洲一区二区va在线| 国产精品久久夜| 久久久久九九视频| 久久久噜噜噜久久中文字幕色伊伊| 欧美精品久久天天躁| 欧美日韩和欧美的一区二区| 在线精品视频免费观看| 欧洲av在线精品| 欧美三级午夜理伦三级中视频| 在线观看国产日韩| 欧美伊人久久大香线蕉综合69 | 亚洲午夜精品在线| 亚洲图片欧美色图| 亚洲成人av在线电影| 亚洲成人免费av| 蜜臀av性久久久久蜜臀av麻豆 | 悠悠色在线精品| 一区二区三国产精华液| 一区二区日韩电影| 午夜久久久久久久久久一区二区| 五月天国产精品| 精品一区二区成人精品| 国产精品一区一区| 99久久精品免费精品国产| 欧洲一区在线电影| 欧美男女性生活在线直播观看| 日韩三级.com| 91福利小视频| 亚洲精品国久久99热| 国产精品久久久久久久久快鸭| 一色屋精品亚洲香蕉网站| 亚洲激情图片qvod| 日韩av一区二区三区四区| 奇米精品一区二区三区四区 | 欧美在线啊v一区| 3d成人h动漫网站入口| 久久久精品中文字幕麻豆发布| 国产精品你懂的| 亚洲一二三区不卡| 国产乱码一区二区三区| 91丨porny丨中文| 制服丝袜av成人在线看| 国产色产综合产在线视频| 亚洲久草在线视频| 麻豆精品视频在线| 成人永久免费视频| 欧美精品一区二区三区蜜桃| 国产精品久久久久永久免费观看| 亚洲精品免费在线| 精品亚洲免费视频| 欧美午夜一区二区三区| 欧美不卡一区二区三区| 亚洲日本护士毛茸茸| 久久成人综合网| 欧洲av一区二区嗯嗯嗯啊| 久久中文娱乐网| 日韩中文字幕亚洲一区二区va在线 | 91毛片在线观看| 久久品道一品道久久精品| 亚洲成人资源网|