getData method
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);
}
}
}