void COpenDBDlg::OnOK() { UpdateData(); OgdcString strAlias = m_strAlias; if(strAlias.IsEmpty() || (m_pDataSources != NULL && m_pDataSources->Lookup(strAlias) != NULL)) { AfxMessageBox(IDS_ALIAS_ISEXISTED); return; } OgdcInt n_Class = m_Provider.GetEngineClass(); if(n_Class == 2) { OgdcString strTmpServer = OgdcString(m_strServer); char cTmp = '\\'; if (strTmpServer.Find(cTmp,0)==-1) { AfxMessageBox("请输入正确的路径!"); return; } } CDialog::OnOK(); }
OgdcBool OgdcFeatureMdb::GetValue( OgdcInt nIndex, OgdcVariant& varValue ) { OgdcByte* pByte = m_fieldValues.GetAt(nIndex); if (pByte == NULL) { varValue.Clear(); return TRUE; } OgdcInt nSize = m_fieldDefines.ElementAt(nIndex).m_nSize; OgdcByte* pData /*= new OgdcByte[nSize]*/; pData = m_fieldValues.GetAt(nIndex); OgdcByte* pDataMirror = pData; switch (m_fieldDefines.GetAt(nIndex).m_nType) { case OgdcFieldInfo::Boolean: case OgdcFieldInfo::Byte: { OgdcByte* nValue = new OgdcByte[nSize]; memcpy(nValue, pDataMirror, nSize); varValue = *nValue; nValue = NULL; } break; case OgdcFieldInfo::INT16: { OgdcShort* nValue = new OgdcShort; memcpy(nValue, pDataMirror, nSize); varValue = *nValue; delete nValue; nValue = NULL; } break; case OgdcFieldInfo::INT32: { OgdcInt* nValue = new OgdcInt; memcpy(nValue, pDataMirror, nSize); varValue = *nValue; delete nValue; nValue = NULL; } break; case OgdcFieldInfo::INT64: { OgdcLong* nValue = new OgdcLong; memcpy(nValue, pDataMirror, nSize); varValue = *nValue; delete nValue; nValue = NULL; } break; case OgdcFieldInfo::Double: { OgdcDouble* dValue = new OgdcDouble; memcpy(dValue, pDataMirror, nSize); varValue = *dValue; delete dValue; dValue = NULL; } break; case OgdcFieldInfo::Float: { OgdcFloat* dValue = new OgdcFloat; memcpy(dValue, pDataMirror, nSize); varValue = *dValue; delete dValue; dValue = NULL; } break; case OgdcFieldInfo::Text: case OgdcFieldInfo::Char: case OgdcFieldInfo::NText: { OgdcString strTemp = OgdcString((OgdcChar*)pByte); strTemp.SetCharset(GetCharset()); varValue = strTemp; } break; case OgdcFieldInfo::Date: case OgdcFieldInfo::Time: case OgdcFieldInfo::TimeStamp: { OgdcDouble* dValue = new OgdcDouble[nSize]; memcpy(dValue, pDataMirror, nSize); OgdcTime dateTime = *dValue; varValue = dateTime; dValue = NULL; } break; case OgdcFieldInfo::LongBinary: { OgdcByte* pValues = new OgdcByte[nSize]; memcpy(pValues, pDataMirror, nSize); varValue.Clear(); varValue.Set(pValues, nSize); pValues = NULL; } break; case OgdcFieldInfo::Geometry: default: { varValue.Clear(); return FALSE; } break; } pData = NULL; pDataMirror = NULL; return TRUE; }