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

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

?? memtableeh.pas

?? 一個功能強大的DBGRID控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
        if NativeFormat then
        begin
          TimeStamp := DateTimeToTimeStamp(TDateTime(Value));
          case Field.DataType of
            ftDate:
              Marshal.WriteInt32(Buffer, TimeStamp.Date);
           ftTime:
             Marshal.WriteInt32(Buffer, TimeStamp.Time);
           ftDateTime:
             begin
               D := TimeStampToMSecs(TimeStamp);
               Marshal.WriteInt64(Buffer, BitConverter.DoubleToInt64Bits(D));
             end;
          end;
        end
        else
          Marshal.WriteInt64(Buffer, BitConverter.DoubleToInt64Bits(Double(Value)));
      ftBytes:
        Marshal.Copy(TBytes(TObject(Value)), 0, Buffer,
          Length(TBytes(TObject(Value))));
      ftVarBytes:
        begin
          Len := Length(TBytes(TObject(Value)));
          if NativeFormat then
          begin
            Marshal.WriteInt16(Buffer, Len);
            Marshal.Copy(TBytes(TObject(Value)), 0, IntPtr(Integer(Buffer.ToInt32 + 2)), Len);
          end else
            Marshal.Copy(TBytes(TObject(Value)), 0, Buffer, Len);
        end;
      ftTimeStamp:
        Marshal.StructureToPtr(TObject(Value), Buffer, False);
      ftFMTBCD:
        Marshal.Copy(TBcd.ToBytes(Value), 0, Buffer, SizeOfTBCD);
      else
        DatabaseErrorFmt('SUsupportedFieldType', [FieldTypeNames[Field.DataType], Field.DisplayName]);
    end;
  end;
{$ELSE}
  procedure VarToBuffer(var Value: Variant);
  begin
    case Field.DataType of
      ftGuid, ftFixedChar, ftString:
        begin
          PChar(Buffer)[Field.Size] := #0;
          StrLCopy(PChar(Buffer), PChar(VarToStr(Value)), Field.Size);
        end;
      ftWideString:
{$IFDEF EH_LIB_10}
        WStrCopy(PWideChar(Buffer), PWideChar(VarToWideStr(Value)));
{$ELSE}
        WideString(Buffer^) := Value;
{$ENDIF}
      ftSmallint:
          SmallInt(Buffer^) := Value;
      ftWord:
          Word(Buffer^) := Value;
      ftAutoInc, ftInteger:
        Integer(Buffer^) := Value;
      ftFloat, ftCurrency:
          Double(Buffer^) := Value;
      ftBCD:
        if NativeFormat
          then DataConvert(Field, @Value, Buffer, True)
          else Currency(Buffer^) := Value;
      ftBoolean:
        WordBool(Buffer^) := Value;
      ftDate, ftTime, ftDateTime:
        if NativeFormat
          then DataConvert(Field, @TVarData(Value).VDate, Buffer, True)
          else TDateTime(Buffer^) := Value;
      ftBytes, ftVarBytes:
        if NativeFormat
          then DataConvert(Field, @Value, Buffer, True)
          else Variant(Buffer^) := Value;
      ftInterface: IUnknown(Buffer^) := Value;
      ftIDispatch: IDispatch(Buffer^) := Value;
{$IFDEF EH_LIB_6}
      ftLargeInt: LargeInt(Buffer^) := Value;
      ftTimeStamp:
        if NativeFormat
          then DataConvert(Field, @Value, Buffer, True)
          else TSQLTimeStamp(Buffer^) := VarToSQLTimeStamp(Value);
      ftFMTBcd:
        if NativeFormat
          then DataConvert(Field, @Value, Buffer, True)
          else TBcd(Buffer^) := VarToBcd(Value);
{$ENDIF}
      ftBlob..ftTypedBinary, ftVariant: Variant(Buffer^) := Value;
{$IFDEF EH_LIB_10}
      ftWideMemo: Variant(Buffer^) := Value;
{$ENDIF}
    else
      DatabaseErrorFmt('SUsupportedFieldType', [FieldTypeNames[Field.DataType],
        Field.DisplayName]);
    end;
  end;
{$ENDIF}

var
  OutValue: Variant;
begin
  Result := GetActiveRecBuf(RecBuf);
  if not Result then Exit;
//  if Field.FieldNo > 0
//    then FieldBufNo := Field.Index //???Field.FieldNo - 1
//    else FieldBufNo := {Field.Offset}FCalcFieldIndexes[Field.Index] + DataFieldsCount;

  if Field.FieldKind = fkAggregate then
    OutValue := GetAggregateValue(Field)
  else
  begin
//    FieldBufNo := Field.Index;
//    OutValue := RecBuf.Values[FieldBufNo];
    OutValue := RecBuf.Value[Field];
    if Assigned(FOnGetFieldValue) then
      FOnGetFieldValue(Self, Field, OutValue);
  end;

  if VarIsNull(OutValue) then
    Result := False
  else if Buffer <> nil then
    VarToBuffer(OutValue);
end;

function TCustomMemTableEh.GetFieldData(Field: TField; Buffer: {$IFDEF CIL}TRecordBuffer{$ELSE}Pointer{$ENDIF}): Boolean;
begin
  Result := GetFieldData(Field, Buffer, True);
end;

function TCustomMemTableEh.GetFieldData(FieldNo: Integer; Buffer: {$IFDEF CIL}TRecordBuffer{$ELSE}Pointer{$ENDIF}): Boolean;
begin
  Result := GetFieldData(FieldByNumber(FieldNo), Buffer);
end;

function TCustomMemTableEh.GetFieldDataAsObject(Field: TField; var Value: TObject): Boolean;
var
  RecBuf: TRecBuf;
//  FieldBufNo: Integer;
  OutValue: Variant;
begin
  Value := nil;
  Result := GetActiveRecBuf(RecBuf);
  if not Result then Exit;
//  FieldBufNo := Field.Index;

//  OutValue := RecBuf.Values[FieldBufNo];
  OutValue := RecBuf.Value[Field];
  if Assigned(FOnGetFieldValue) then
    FOnGetFieldValue(Self, Field, OutValue);

  if VarIsNull(OutValue)
    then Result := False
    else Value := VariantToRefObject(OutValue);
end;

procedure TCustomMemTableEh.SetFieldData(Field: TField;
  Buffer: {$IFDEF CIL}TValueBuffer{$ELSE}Pointer{$ENDIF}; NativeFormat: Boolean);
var
  RecBuf: TRecBuf;
//  FieldBufNo: Integer;
  v: Variant;

{$IFDEF CIL}
  procedure BufferToVar(var Data: Variant);
  var
    B: TBytes;
    Len: Smallint;
  begin
    case Field.DataType of
      ftWideString:
        Data := Variant(Marshal.PtrToStringUni(Buffer));
      ftString, ftGuid, ftFixedChar:
        Data := Variant(Marshal.PtrToStringAnsi(Buffer));
      ftSmallint, ftWord:
        Data := Variant(Marshal.ReadInt16(Buffer));
      ftAutoInc, ftInteger:
        Data := Variant(Marshal.ReadInt32(Buffer));
      ftLargeInt:
        Data := Variant(Marshal.ReadInt64(Buffer));
      ftBoolean:
        if Marshal.ReadInt16(Buffer) <> 0 then
          Data := Variant(True)
        else
          Data := Variant(False);
      ftFloat, ftCurrency:
        Data := Variant(BitConverter.Int64BitsToDouble(Marshal.ReadInt64(Buffer)));
      ftBCD:
        if NativeFormat then
        begin
          SetLength(B, SizeOfTBCD);
          Marshal.Copy(Buffer, B, 0, SizeOfTBCD);
          Data := Variant(TBcd.FromBytes(B));
        end
        else
          Data := System.Decimal.FromOACurrency(Marshal.ReadInt64(Buffer));
      ftDate, ftTime, ftDateTime:
        if NativeFormat then
        begin
          case Field.DataType of
            ftDate:
              Data := System.DateTime.Create(0).AddDays(Marshal.ReadInt32(Buffer));
            ftTime:
              Data := System.DateTime.Create(0).AddMilliseconds(
                Marshal.ReadInt32(Buffer));
            ftDateTime:
              Data := System.DateTime.Create(0).AddMilliseconds(
                BitConverter.Int64BitsToDouble(Marshal.ReadInt64(Buffer)));
          end;
        end
        else // data is TDateTime
          Data := System.DateTime.FromOADate(BitConverter.Int64BitsToDouble(
            Marshal.ReadInt64(Buffer)));
      ftBytes:
      begin
        SetLength(B, Field.Size);
        Marshal.Copy(Buffer, B, 0, Field.Size);
        Data := Variant(B);
      end;
      ftTimeStamp:
        Data := Variant(Marshal.PtrToStructure(Buffer, TypeOf(TSQLTimeStamp)));
      ftFMTBCD:
      begin
        SetLength(B, SizeOfTBCD);
        Marshal.Copy(Buffer, B, 0, SizeOfTBCD);
        Data := Variant(TBcd.FromBytes(B));
      end;
      ftVarBytes:
        if NativeFormat then
        begin
          Len := Marshal.ReadInt16(Buffer);
          SetLength(B, Len);
          Marshal.Copy(IntPtr(Integer(Buffer.ToInt32 + 2)), B, 0, Len);
          Data := Variant(B);
        end else
        begin
          {note, we cant support VarBytes if not length prefixed}
          DatabaseErrorFmt('SUsupportedFieldType', [FieldTypeNames[ftVarBytes],
              Field.DisplayName]);
          Data := nil; // never gets called but this makes the compiler happy
        end
      else
      begin
        {note, we cant support blob types in this way}
        DatabaseErrorFmt('SUsupportedFieldType', [FieldTypeNames[Field.DataType],
            Field.DisplayName]);
        Data := nil; // never gets called but this makes the compiler happy
      end;
    end;
  end;
{$ELSE}
  procedure BufferToVar(var Data: Variant);
  begin
    case Field.DataType of
      ftString, ftFixedChar, ftGuid:
        Data := String(PChar(Buffer));
//        SetString(Data, PChar(Buffer), StrLen(PChar(Buffer)));
      ftWideString:
{$IFDEF EH_LIB_10}
        Data := WideString(PWideChar(Buffer));
{$ELSE}
        Data := WideString(Buffer^);
{$ENDIF}
//        WStrCopy(PWideChar(Data), PWideChar(VarToWideStr(Buffer)));
      ftAutoInc, ftInteger:
        Data := LongInt(Buffer^);
      ftSmallInt:
        Data := SmallInt(Buffer^);
      ftWord:
        Data := Word(Buffer^);
      ftBoolean:
        Data := WordBool(Buffer^);
      ftFloat, ftCurrency:
        Data := Double(Buffer^);
      ftBlob, ftMemo, ftGraphic, ftVariant:
        Data := Variant(Buffer^);
      ftInterface:
        Data := IUnknown(Buffer^);
      ftIDispatch:
        Data := IDispatch(Buffer^);
      ftDate, ftTime, ftDateTime:
        if NativeFormat
          then DataConvert(Field, Buffer, @TVarData(Data).VDate, False)
          else Data := TDateTime(Buffer^);
      ftBCD:
        if NativeFormat
          then DataConvert(Field, Buffer, @TVarData(Data).VCurrency, False)
          else Data := Currency(Buffer^);
      ftBytes, ftVarBytes:
        if NativeFormat
          then DataConvert(Field, Buffer, @Data, False)
          else Data := Variant(Buffer^);
{$IFDEF EH_LIB_10}
      ftWideMemo: Data := Variant(Buffer^);
{$ENDIF}
{$IFDEF EH_LIB_6}
      ftLargeInt:
          Data := Int64(Buffer^);
      ftTimeStamp:
        if NativeFormat
          then DataConvert(Field, Buffer, @Data, True)
          else Data :=  VarSQLTimeStampCreate(TSQLTimeStamp(Buffer^));
      ftFMTBcd:
        if NativeFormat
          then DataConvert(Field, Buffer, @Data, True)
          else Data := VarFMTBcdCreate(TBcd(Buffer^));
{$ENDIF}
      else
        DatabaseErrorFmt('SUsupportedFieldType', [FieldTypeNames[Field.DataType],
          Field.DisplayName]);
    end;
  end;
{$ENDIF}

begin
  if not (State in dsWriteModes) then DatabaseError(SNotEditing, Self);
  if not GetActiveRecBuf(RecBuf, True) then Exit;

//  if Field.FieldNo > 0
//    then FieldBufNo := Field.FieldNo - 1
//    else FieldBufNo := FCalcFieldIndexes[Field.Index] + DataFieldsCount;
//  FieldBufNo := Field.Index;

  Field.Validate(Buffer);

  if Buffer = nil
    then v := Null
    else BufferToVar(v);

  if Assigned(FOnSetFieldValue) then
    FOnSetFieldValue(Self, Field, v);

  RecBuf.Value[Field] := v;

  if not (State in [dsCalcFields, dsInternalCalc, dsFilter, dsNewValue]) then
{$IFDEF CIL}
    DataEvent(deFieldChange, Field);
{$ELSE}
    DataEvent(deFieldChange, Longint(Field));
{$ENDIF}
end;

procedure TCustomMemTableEh.SetFieldData(Field: TField;
  Buffer: {$IFDEF CIL}TValueBuffer{$ELSE}Pointer{$ENDIF});
begin
  SetFieldData(Field, Buffer, True);
end;

procedure TCustomMemTableEh.SetFieldDataAsObject(Field: TField; Value: TObject);
var
  RecBuf: TRecBuf;
//  FieldBufNo: Integer;
  v: Variant;
begin
  if not (State in dsWriteModes) then DatabaseError(SNotEditing, Self);
  if not GetActiveRecBuf(RecBuf, True) then Exit;

//  FieldBufNo := Field.Index;

  if Value = nil
    then v := Null
//    else BufferToVar(RecBuf.Values[FieldBufNo]);
    else v := RefObjectToVariant(Value);

  if Assigned(FOnSetFieldValue) then
    FOnSetFieldValue(Self, Field, v);

  RecBuf.Value[Fiel

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区视频在线观看| 国产sm精品调教视频网站| 国内精品久久久久影院薰衣草| 成人av午夜影院| 91精品国产色综合久久| 国产精品传媒视频| 美女视频网站黄色亚洲| 色综合久久久久综合| 久久久国际精品| 美女www一区二区| 日韩一区二区三区三四区视频在线观看 | 精品一区中文字幕| 色成人在线视频| 国产精品午夜春色av| 国产九九视频一区二区三区| 日韩午夜在线影院| 免费精品视频最新在线| 欧美老肥妇做.爰bbww视频| 亚洲综合色丁香婷婷六月图片| 成人av网站在线观看免费| 久久精品视频免费| 极品美女销魂一区二区三区免费| 欧美精品在线视频| 婷婷综合在线观看| 欧美日韩免费观看一区二区三区| 日韩美女精品在线| 99热精品一区二区| 自拍偷拍国产精品| 91丨九色丨国产丨porny| 国产精品国产精品国产专区不片| 国产91综合网| 国产精品毛片久久久久久久| a亚洲天堂av| 亚洲欧美在线视频观看| 日本道色综合久久| 亚洲一区二区在线免费看| 欧美性生活大片视频| 亚洲成av人片在www色猫咪| 欧美精品乱人伦久久久久久| 丝袜亚洲另类丝袜在线| 欧美成人官网二区| 国产精品一区二区久久精品爱涩| 欧美激情一区不卡| 99久久精品国产一区二区三区| 樱花影视一区二区| 欧美情侣在线播放| 美女免费视频一区| 久久精品夜色噜噜亚洲aⅴ| www.日韩av| 亚洲福利一区二区| 精品免费99久久| 粉嫩aⅴ一区二区三区四区| 一二三四社区欧美黄| 欧美精品日韩一区| 高清不卡一区二区| 亚洲亚洲人成综合网络| 日韩欧美三级在线| 99riav久久精品riav| 亚洲成人av福利| 久久久久久久国产精品影院| 91福利在线看| 久久99国产精品麻豆| 国产精品拍天天在线| 欧美少妇性性性| 精品一区在线看| 一区二区三区四区中文字幕| 亚洲精品一区二区在线观看| 一本大道久久a久久综合婷婷| 日韩1区2区3区| 国产精品女主播在线观看| 欧美日韩的一区二区| 国产盗摄一区二区| 天天操天天干天天综合网| 国产精品沙发午睡系列990531| 欧美区一区二区三区| 欧美精品电影在线播放| 成人小视频免费观看| 日本成人中文字幕在线视频| 最好看的中文字幕久久| 2023国产精品| 欧美久久一二三四区| 成人黄色大片在线观看| 麻豆国产精品官网| 亚洲成人资源网| 国产精品美女一区二区在线观看| 日韩免费在线观看| 欧美日韩一区 二区 三区 久久精品| 国产成人亚洲综合a∨猫咪| 日韩av高清在线观看| 亚洲精品中文在线影院| 欧美激情一区二区三区在线| 日韩欧美国产午夜精品| 欧美性色欧美a在线播放| av亚洲精华国产精华| 国产精一区二区三区| 狠狠色丁香婷婷综合| 奇米色一区二区三区四区| 亚洲一区二区黄色| 一区二区三区中文字幕精品精品| 欧美激情在线一区二区| 久久美女艺术照精彩视频福利播放| 制服丝袜中文字幕一区| 欧美日韩二区三区| 色婷婷av一区二区三区软件 | 亚洲精选视频免费看| 国产精品久久影院| 国产午夜久久久久| 国产欧美日产一区| 久久久精品蜜桃| 国产日韩av一区二区| 久久久国产午夜精品| 国产亚洲精品福利| 久久精品这里都是精品| 欧美经典一区二区| 亚洲国产精品成人综合色在线婷婷 | 日韩欧美一区电影| 日韩欧美在线综合网| 亚洲精品在线免费播放| 久久综合久久99| 亚洲国产精品av| 亚洲人123区| 亚洲va韩国va欧美va| 婷婷中文字幕综合| 久久国产精品第一页| 激情小说亚洲一区| 成人精品国产一区二区4080| 成a人片国产精品| 日本精品一区二区三区高清| 欧美三级三级三级| 日韩一级视频免费观看在线| 久久久久久久久久电影| 亚洲欧洲精品一区二区精品久久久| 日韩一区在线免费观看| 自拍偷拍国产精品| 丝瓜av网站精品一区二区| 精品一区二区久久久| 成人app网站| 欧美特级限制片免费在线观看| 日韩视频中午一区| 中文字幕精品三区| 亚洲成av人综合在线观看| 国产在线精品免费| 99re66热这里只有精品3直播| 久久一二三国产| 亚洲欧美中日韩| 视频一区视频二区在线观看| 国产精品一品二品| 在线影视一区二区三区| 精品国产91乱码一区二区三区| 中文字幕 久热精品 视频在线| 亚洲一区二区三区不卡国产欧美| 久99久精品视频免费观看| 97精品国产露脸对白| 日韩一区二区精品| 亚洲精品亚洲人成人网在线播放| 日韩福利视频导航| zzijzzij亚洲日本少妇熟睡| 欧美一区二区人人喊爽| 1024成人网色www| 美女视频网站黄色亚洲| 色哟哟日韩精品| 久久久久久久久久电影| 全部av―极品视觉盛宴亚洲| 成人免费黄色大片| 欧美v国产在线一区二区三区| 亚洲综合丁香婷婷六月香| 国产白丝网站精品污在线入口| 欧美一区三区二区| 一区二区在线观看不卡| 国产成人午夜精品5599| 制服视频三区第一页精品| 亚洲欧美国产三级| 成人激情综合网站| 2023国产一二三区日本精品2022| 亚洲大片在线观看| 精品国产乱码91久久久久久网站| 亚洲在线观看免费视频| 91麻豆国产在线观看| 国产午夜久久久久| 精品一区二区三区免费毛片爱| 欧美日韩一级二级| 亚洲激情中文1区| 99热精品一区二区| 中文字幕制服丝袜一区二区三区| 国产伦精一区二区三区| 日韩免费观看2025年上映的电影| 午夜精品成人在线视频| 国产亚洲欧美激情| 国产麻豆视频精品| 欧洲亚洲国产日韩| 日韩一区国产二区欧美三区| 玉米视频成人免费看| 91丨porny丨在线| 亚洲欧美日韩电影| 一本一道波多野结衣一区二区| ...av二区三区久久精品| 成人午夜伦理影院| 中文字幕中文字幕一区| 成人av第一页| 亚洲天堂a在线|