getData method

void getData(
  1. TValueBuffer buffer
)

Implementation

void getData(TValueBuffer buffer) {
  switch (_dataType) {
    case TFieldType.ftUnknown:
      databaseErrorFmt(SUnknownParamFieldType, [name], dataSet);
    case TFieldType.ftSmallint:
      buffer.value = asSmallInt;
      break;
    case TFieldType.ftWord:
      buffer.value = asWord;
      break;
    case TFieldType.ftInteger:
    case TFieldType.ftAutoInc:
      buffer.value = asInteger;
      break;
    case TFieldType.ftCurrency:
      buffer.value = asCurrency;
      break;
    case TFieldType.ftFloat:
      buffer.value = asFloat;
      break;
    case TFieldType.ftBoolean:
      buffer.value = asBoolean;
      break;
    case TFieldType.ftString:
    case TFieldType.ftMemo:
    case TFieldType.ftADT:
    case TFieldType.ftFixedChar:
    case TFieldType.ftWideString:
    case TFieldType.ftWideMemo:
      buffer.value = asString;
      break;
    case TFieldType.ftTime:
      buffer.value = dateTimeToTimeStamp(asTime).time;
      break;
    case TFieldType.ftDate:
      // ??? the original source at L1098 has DateTimeToTimeStamp(AsTime).Date ——
      // using AsTime rather than AsDate (both go through the same GetAsDateTime, behaving identically,
      // but the original source literally writes AsTime), carried over as-is with this note.
      buffer.value = dateTimeToTimeStamp(asTime).date;
      break;
    case TFieldType.ftDateTime:
      buffer.value =
          timeStampToMSecs(dateTimeToTimeStamp(asDateTime)).toDouble();
      break;
    case TFieldType.ftBlob:
    case TFieldType.ftGraphic:
    case TFieldType.ftFmtMemo:
    case TFieldType.ftParadoxOle:
    case TFieldType.ftDBaseOle:
    case TFieldType.ftTypedBinary:
    case TFieldType.ftOraBlob:
    case TFieldType.ftOraClob:
      buffer.value = asString;
      break;
    case TFieldType.ftBytes:
    case TFieldType.ftVarBytes:
      if (_value is List) {
        buffer.value = asBytes;
      }
      break;
    case TFieldType.ftFMTBcd:
      buffer.value = asFMTBCD;
      break;
    default:
      if (_dataType != TFieldType.ftCursor &&
          _dataType != TFieldType.ftArray &&
          _dataType != TFieldType.ftDataSet &&
          _dataType != TFieldType.ftReference) {
        databaseErrorFmt(SBadParamFieldType, [name], dataSet);
      }
  }
}