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

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

?? myldbd4routines.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數據庫控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
        {       EDX     Pointer to Indices      }
        {       ECX     High bound of Indices   }
        {       [EBP+8] Pointer to result       }

        PUSH    EBX

        MOV     EBX,ECX
        INC     EBX
        JLE     @@endLoop
@@loop:
        PUSH    [EDX+ECX*4].Integer
        DEC     ECX
        JNS     @@loop
@@endLoop:
        PUSH    EBX
        PUSH    EAX
        MOV     EAX,[EBP+8]
        PUSH    EAX
        CALL    MYLDB_VarArrayGet
        LEA     ESP,[ESP+EBX*4+3*4]

        POP     EBX
end; //VarArrayGet

procedure GetMemoryManager(var MemMgr: TMemoryManager);
begin
  MemMgr := MemoryManager;
end;

procedure SetMemoryManager(const MemMgr: TMemoryManager);
begin
  MemoryManager := MemMgr;
end;

function IsMemoryManagerSet: Boolean;
begin
  with MemoryManager do
    Result := (@GetMem <> @SysGetMem) or (@FreeMem <> @SysFreeMem) or
      (@ReallocMem <> @SysReallocMem);
end;

(*
function StrToFloat(const S: string): Extended;
begin
  if not TextToFloat(PChar(S), Result, fvExtended) then
    raise EMYLDBException.Create(10441,ErrorLInvalidFloat,[S]);
end;

function StrToFloat(const S: string;
  const FormatSettings: TFormatSettings): Extended;
begin
  if not TextToFloat(PChar(S), Result, fvExtended, FormatSettings) then
    raise EMYLDBException.Create(10442,ErrorLInvalidFloat,[S]);
end;

function StrToFloatDef(const S: string; const Default: Extended): Extended;
begin
  if not TextToFloat(PChar(S), Result, fvExtended) then
    Result := Default;
end;

function StrToFloatDef(const S: string; const Default: Extended;
  const FormatSettings: TFormatSettings): Extended;
begin
  if not TextToFloat(PChar(S), Result, fvExtended, FormatSettings) then
    Result := Default;
end;



function FloatToStr(Value: Extended): string;
var
  Buffer: array[0..63] of Char;
begin
  SetString(Result, Buffer, FloatToText(Buffer, Value, fvExtended,
    ffGeneral, 15, 0));
end;

function FloatToStr(Value: Extended;
  const FormatSettings: TFormatSettings): string;
var
  Buffer: array[0..63] of Char;
begin
  SetString(Result, Buffer, FloatToText(Buffer, Value, fvExtended,
    ffGeneral, 15, 0, FormatSettings));
end;

*)

function TryFloatToCurr(const Value: Extended; out AResult: Currency): Boolean;
begin
  Result := (Value >= MinCurrency) and (Value <= MaxCurrency);
  if Result then
    AResult := Value;
end;

function FloatToCurr(const Value: Extended): Currency;
begin
  if not TryFloatToCurr(Value, Result) then
    raise EMYLDBException.Create(10439,ErrorLInvalidCurrency,[FloatToStr(Value)]);
end;

procedure VerifyBoolStrArray;
begin
  if Length(TrueBoolStrs) = 0 then
  begin
    SetLength(TrueBoolStrs, 1);
    TrueBoolStrs[0] := DefaultTrueBoolStr;
  end;
  if Length(FalseBoolStrs) = 0 then
  begin
    SetLength(FalseBoolStrs, 1);
    FalseBoolStrs[0] := DefaultFalseBoolStr;
  end;
end;

function StrToBool(const S: string): Boolean;
begin
  if not TryStrToBool(S, Result) then
    raise EMYLDBException.Create(10440,ErrorLInvalidBoolean,[s]);
end;

function StrToBoolDef(const S: string; const Default: Boolean): Boolean;
begin
  if not TryStrToBool(S, Result) then
    Result := Default;
end;


function TryStrToBool(const S: string; out Value: Boolean): Boolean;
  function CompareWith(const aArray: array of string): Boolean;
  var
    I: Integer;
  begin
    Result := False;
    for I := Low(aArray) to High(aArray) do
      if AnsiSameText(S, aArray[I]) then
      begin
        Result := True;
        Break;
      end;
  end;
var
  LResult: Extended;
begin
  Result := TryStrToFloat(S, LResult);
  if Result then
    Value := LResult <> 0
  else
  begin
    VerifyBoolStrArray;
    Result := CompareWith(TrueBoolStrs);
    if Result then
      Value := True
    else
    begin
      Result := CompareWith(FalseBoolStrs);
      if Result then
        Value := False;
    end;
  end;
end;

function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;
const
  cSimpleBoolStrs: array [boolean] of String = ('0', '-1');
begin
  if UseBoolStrs then
  begin
    VerifyBoolStrArray;
    if B then
      Result := TrueBoolStrs[0]
    else
      Result := FalseBoolStrs[0];
  end
  else
    Result := cSimpleBoolStrs[B];
end;


function TryStrToFloat(const S: string; out Value: Extended): Boolean;
begin
  Result := TextToFloat(PChar(S), Value, fvExtended);
end;

function TryStrToFloat(const S: string; out Value: Double): Boolean;
var
  LValue: Extended;
begin
  Result := TextToFloat(PChar(S), LValue, fvExtended);
  if Result then
    Value := LValue;
end;


function TryStrToFloat(const S: string; out Value: Single): Boolean;
var
  LValue: Extended;
begin
  Result := TextToFloat(PChar(S), LValue, fvExtended);
  if Result then
    Value := LValue;
end;

{$IFNDEF D5H}
{ AnsiSameText compares S1 to S2, without case-sensitivity. The compare
  operation is controlled by the current Windows locale. The return value
  is True if AnsiCompareText would have returned 0. }

function AnsiSameText(const S1, S2: string): Boolean;
begin
  Result := CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, PChar(S1),
    Length(S1), PChar(S2), Length(S2)) = 2;
end;
{$ENDIF}

{$IFNDEF D5H}
{ TMasterDataLink }

constructor TMasterDataLink.Create(DataSet: TDataSet);
begin
  inherited Create;
  FDataSet := DataSet;
  FFields := TList.Create;
end;

destructor TMasterDataLink.Destroy;
begin
  FFields.Free;
  inherited Destroy;
end;

procedure TMasterDataLink.ActiveChanged;
begin
  FFields.Clear;
  if Active then
    try
      DataSet.GetFieldList(FFields, FFieldNames);
    except
      FFields.Clear;
      raise;
    end;
  if FDataSet.Active and not (csDestroying in FDataSet.ComponentState) then
    if Active and (FFields.Count > 0) then
    begin
      if Assigned(FOnMasterChange) then FOnMasterChange(Self);
    end else
      if Assigned(FOnMasterDisable) then FOnMasterDisable(Self);
end;

procedure TMasterDataLink.CheckBrowseMode;
begin
  if FDataSet.Active then FDataSet.CheckBrowseMode;
end;

function TMasterDataLink.GetDetailDataSet: TDataSet;
begin
  Result := FDataSet;
end;

procedure TMasterDataLink.LayoutChanged;
begin
  ActiveChanged;
end;

procedure TMasterDataLink.RecordChanged(Field: TField);
begin
  if (DataSource.State <> dsSetKey) and FDataSet.Active and
    (FFields.Count > 0) and ((Field = nil) or
    (FFields.IndexOf(Field) >= 0)) and
     Assigned(FOnMasterChange) then
    FOnMasterChange(Self);
end;

procedure TMasterDataLink.SetFieldNames(const Value: string);
begin
  if FFieldNames <> Value then
  begin
    FFieldNames := Value;
    ActiveChanged;
  end;
end;
{$ENDIF}

procedure FreeAndNil(var Obj);
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;


function Sign(const AValue: Integer): TValueSign;
begin
  Result := ZeroValue;
  if AValue < 0 then
    Result := NegativeValue
  else if AValue > 0 then
    Result := PositiveValue;
end;

function Sign(const AValue: Int64): TValueSign;
begin
  Result := ZeroValue;
  if AValue < 0 then
    Result := NegativeValue
  else if AValue > 0 then
    Result := PositiveValue;
end;

function Sign(const AValue: Double): TValueSign;
begin
  if ((PInt64(@AValue)^ and $7FFFFFFFFFFFFFFF) = $0000000000000000) then
    Result := ZeroValue
  else if ((PInt64(@AValue)^ and $8000000000000000) = $8000000000000000) then
    Result := NegativeValue
  else
    Result := PositiveValue;
end;

function EncodeDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond,
  AMilliSecond: Word): TDateTime;
begin
  if not TryEncodeDateTime(AYear, AMonth, ADay,
                           AHour, AMinute, ASecond, AMilliSecond, Result) then
    InvalidDateTimeError(AYear, AMonth, ADay,
                         AHour, AMinute, ASecond, AMilliSecond);
end;

function TryEncodeDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond,
  AMilliSecond: Word; out AValue: TDateTime): Boolean;
var
  LTime: TDateTime;
begin
  Result := TryEncodeDate(AYear, AMonth, ADay, AValue);
  if Result then
  begin
    Result := TryEncodeTime(AHour, AMinute, ASecond, AMilliSecond, LTime);
    if Result then
      AValue := AValue + LTime;
  end;
end;

function TryEncodeDate(Year, Month, Day: Word; out Date: TDateTime): Boolean;
var
  I: Integer;
  DayTable: PDayTable;
begin
  Result := False;
  DayTable := @MonthDays[IsLeapYear(Year)];
  if (Year >= 1) and (Year <= 9999) and (Month >= 1) and (Month <= 12) and
    (Day >= 1) and (Day <= DayTable^[Month]) then
  begin
    for I := 1 to Month - 1 do Inc(Day, DayTable^[I]);
    I := Year - 1;
    Date := I * 365 + I div 4 - I div 100 + I div 400 + Day - DateDelta;
    Result := True;
  end;
end;

function TryEncodeTime(Hour, Min, Sec, MSec: Word; out Time: TDateTime): Boolean;
begin
  Result := False;
  if (Hour < HoursPerDay) and (Min < MinsPerHour) and (Sec < SecsPerMin) and (MSec < MSecsPerSec) then
  begin
    Time := (Hour * (MinsPerHour * SecsPerMin * MSecsPerSec) +
             Min * (SecsPerMin * MSecsPerSec) +
             Sec * MSecsPerSec +
             MSec) / MSecsPerDay;
    Result := True;
  end;
end;

procedure InvalidDateTimeError(const AYear, AMonth, ADay, AHour, AMinute,
  ASecond, AMilliSecond: Word; const ABaseDate: TDateTime);
  function Translate(AOrig, AValue: Word): string;
  begin
    if AValue = RecodeLeaveFieldAsIs then
      if ABaseDate = 0 then
        Result := SMissingDateTimeField
      else
        Result := IntToStr(AOrig)
    else
      Result := IntToStr(AValue);
  end;
var
  LYear, LMonth, LDay, LHour, LMinute, LSecond, LMilliSecond: Word;
begin
  DecodeDate(ABaseDate, LYear, LMonth, LDay);
  DecodeTime(ABaseDate, LHour, LMinute, LSecond, LMilliSecond);
  raise EConvertError.CreateFmt(SInvalidDateTime,
                                [Translate(LYear, AYear) + DateSeparator +
                                 Translate(LMonth, AMonth) + DateSeparator +
                                 Translate(LDay, ADay) + ' ' +
                                 Translate(LHour, AHour) + TimeSeparator +
                                 Translate(LMinute, AMinute) + TimeSeparator +
                                 Translate(LSecond, ASecond) + DecimalSeparator +
                                 Translate(LMilliSecond, AMilliSecond)]);
end;


initialization

  ClearAnyProc := @VarInvalidOp;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二| 国产精品私房写真福利视频| 国产精品一区不卡| 一区二区三区资源| 国产无遮挡一区二区三区毛片日本| 欧美亚洲自拍偷拍| 99久久婷婷国产综合精品| 久久er精品视频| 亚洲h精品动漫在线观看| 1区2区3区欧美| 国产日产欧产精品推荐色| 欧美一级欧美三级| 欧美亚洲国产bt| 99在线精品观看| 国产91露脸合集magnet| 精品一区二区三区视频在线观看 | 麻豆精品国产传媒mv男同| 亚洲免费电影在线| 中文字幕乱码久久午夜不卡 | 久久综合综合久久综合| 亚洲国产一区视频| 亚洲精品视频在线观看免费| 国产欧美一区二区精品性色 | 国产成人精品三级麻豆| 久久99国内精品| 亚洲大片免费看| 亚洲午夜一区二区| 亚洲激情六月丁香| 亚洲欧美偷拍卡通变态| 国产精品成人免费在线| 国产精品你懂的在线欣赏| 国产日韩欧美一区二区三区乱码| 精品国产亚洲一区二区三区在线观看| 欧美日韩成人激情| 欧美精品免费视频| 欧美精品 国产精品| 欧美二区三区91| 欧美日韩国产另类不卡| 7777精品伊人久久久大香线蕉的| 欧美吻胸吃奶大尺度电影| 91久久人澡人人添人人爽欧美| 91福利在线导航| 欧美日韩二区三区| 欧美一区二区在线不卡| 日韩一区二区三区电影在线观看| 欧美一级精品在线| 久久新电视剧免费观看| 国产日韩欧美综合一区| 中文字幕在线一区免费| 亚洲男女毛片无遮挡| 韩国欧美国产一区| 国产一区二区三区av电影 | 91在线视频网址| 一本色道久久综合精品竹菊| 欧日韩精品视频| 91精品国产综合久久福利软件| 日韩欧美第一区| 国产偷国产偷亚洲高清人白洁 | 日韩一区欧美小说| 亚洲国产一区二区在线播放| 青草av.久久免费一区| 久久成人免费电影| 北条麻妃一区二区三区| 欧美日韩在线一区二区| 精品国内二区三区| 国产精品久久久久天堂| 亚洲电影一级黄| 国产一区二区三区观看| 一本大道久久a久久综合婷婷| 欧美日韩黄色一区二区| 久久夜色精品国产噜噜av| 自拍偷拍亚洲综合| 奇米影视在线99精品| 高清不卡一区二区在线| 欧美在线不卡一区| 久久美女高清视频| 亚洲综合精品久久| 国产一区二区导航在线播放| 91久久精品日日躁夜夜躁欧美| 日韩视频不卡中文| 综合久久久久久久| 久久成人18免费观看| 91麻豆精品一区二区三区| 欧美成人精品3d动漫h| 18欧美亚洲精品| 精品亚洲国内自在自线福利| 色综合久久久久综合体| 久久综合九色综合97婷婷女人 | 激情五月激情综合网| 91猫先生在线| 久久久激情视频| 天涯成人国产亚洲精品一区av| 处破女av一区二区| 日韩欧美一区电影| 亚洲国产成人av| 成人av网站在线观看| 日韩欧美色电影| 亚洲宅男天堂在线观看无病毒| 国产成人免费视| 欧美zozozo| 免费在线观看日韩欧美| 欧美在线高清视频| 自拍偷拍亚洲激情| 国产成人免费在线观看不卡| 8x福利精品第一导航| 亚洲最大的成人av| av午夜精品一区二区三区| 久久综合五月天婷婷伊人| 日本不卡视频在线| 欧美系列一区二区| 一区二区激情小说| 91社区在线播放| 国产精品乱码一区二区三区软件| 久久99精品国产.久久久久| 88在线观看91蜜桃国自产| 亚洲一区二区三区影院| www.欧美日韩国产在线| 国产喂奶挤奶一区二区三区| 91在线观看成人| 国产欧美日韩三区| 九九国产精品视频| 日韩欧美不卡一区| 免费亚洲电影在线| 欧美一级理论性理论a| 婷婷丁香激情综合| 欧美日本在线视频| 午夜精品久久久| 91精品国产福利在线观看| 亚洲国产精品天堂| 欧美三级资源在线| 亚洲6080在线| 91精品国产综合久久婷婷香蕉 | 成人动漫在线一区| 国产欧美视频在线观看| 国产乱子伦一区二区三区国色天香 | 亚洲精品高清在线| av在线一区二区| 亚洲乱码国产乱码精品精98午夜| 99re这里只有精品视频首页| 亚洲另类春色国产| 91豆麻精品91久久久久久| 亚洲国产wwwccc36天堂| 欧美精品自拍偷拍| 久久99久久精品| 久久精品视频免费观看| jvid福利写真一区二区三区| 亚洲色图第一区| 欧美日韩一级二级三级| 日产国产高清一区二区三区| 欧美一级精品在线| 久久99国产乱子伦精品免费| 26uuu国产电影一区二区| 成人一区二区三区| 亚洲激情综合网| 日韩一区二区免费电影| 国产精品亚洲午夜一区二区三区| 欧美国产成人精品| 欧美制服丝袜第一页| 日本视频一区二区| 久久精品亚洲精品国产欧美 | 亚洲卡通欧美制服中文| 欧美福利一区二区| 国产伦精品一区二区三区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 91网站在线观看视频| 奇米精品一区二区三区四区| 久久免费视频色| 欧洲色大大久久| 国产一区二区毛片| 一区二区三区日韩在线观看| 欧美一区二区三区视频在线观看| 国产一区不卡在线| 一区二区三区四区在线免费观看| 欧美一级夜夜爽| 91在线porny国产在线看| 热久久免费视频| 国产精品美女久久久久久2018| 欧美日韩精品福利| 成人性色生活片| 男男gaygay亚洲| 亚洲免费在线看| 欧美不卡一区二区| 色欧美乱欧美15图片| 国产精品综合在线视频| 亚洲国产精品一区二区久久| 国产亚洲一本大道中文在线| 欧美性猛片xxxx免费看久爱| 国产一区二区美女诱惑| 首页国产欧美久久| 中文字幕亚洲一区二区va在线| 日韩一区二区三区精品视频| 99久久精品免费观看| 激情综合五月婷婷| 五月激情六月综合| 亚洲丝袜美腿综合| 国产拍揄自揄精品视频麻豆| 欧美一区二区三区四区久久| 91精品1区2区| 99免费精品在线观看| 色94色欧美sute亚洲线路一ni|