好像是轉換問題? |
答題得分者是:dllee
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
請問各位大大: 這是什麼樣問題~望大大們指導!!
我要把那些資料存入 SQL Server
我用到轉換的地方,,都由char[]轉,但可無null
struct _GPS_Info { char ID[MAX_ID]; char Date[MAX_Date]; char Time[MAX_Time]; char WGS_LON[MAX_WGS_LON]; char WGS_LAT[MAX_WGS_LAT]; char Heading[MAX_Heading]; char Speed[MAX_Speed]; char Sat[MAX_Sat]; }; typedef struct _GPS_Info GPS_Info; Command_Str = "Insert Into "; TableName_Str = edtTable->Text; TableItem_Str = "(Plate_no,DateTime,WGS_LON,WGS_LAT,Heading,Speed,Sat#,IO1,IO2,IO3) "; Value_Str = "Values(:Plate,:DateTime,:WGS_LON,:WGS_LAT,:Heading,:Speed,:Sat,:IO1,:IO2,:IO3)"; Day = AnsiString(GPS.Date+4,2)+"/"+AnsiString(GPS.Date+2,2)+"/"+AnsiString(GPS.Date,2); Clock = AnsiString(GPS.Time,2)+":"+AnsiString(GPS.Time+2,2)+":"+AnsiString(GPS.Time+4,2); Calendar = Day+" "+Clock; Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add(Command_Str+TableName_Str+TableItem_Str+Value_Str); Query1->ParamByName("Plate")->AsString = AnsiString(ID,MAX_ID); Query1->ParamByName("DateTime")->AsDateTime = StrToDateTime(Calendar); Query1->ParamByName("WGS_LON")->AsFloat = StrToFloat(AnsiString(GPS.WGS_LON,MAX_WGS_LON))/100; Query1->ParamByName("WGS_LAT")->AsFloat = StrToFloat(AnsiString(GPS.WGS_LAT,MAX_WGS_LAT))/100; Query1->ParamByName("Heading")->AsInteger = StrToCurr(AnsiString(GPS.Heading,MAX_Heading)); Query1->ParamByName("Speed")->AsFloat = StrToFloat(AnsiString(GPS.Speed,MAX_Speed)); Query1->ParamByName("Sat")->AsInteger = (StrToIntDef(AnsiString(GPS.Sat,MAX_Sat),0) > 9)?9:StrToIntDef(AnsiString(GPS.Sat,MAX_Sat),0);發表人 - kenbcb 於 2004/02/13 14:20:13 |
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
以下是 BCB5 的 Online Help
引言:StrToFloat Converts a given AnsiString to a floating-point value. Unit Sysutils Category floating point conversion routines extern PACKAGE Extended __fastcall StrToFloat(const AnsiString S); Description Use StrToFloat to convert an AnsiString, S, to a floating-point value. S must consist of an optional sign ( or -), a string of digits with an optional decimal point, and an optional mantissa. The mantissa consists of 'E' or 'e' followed by an optional sign ( or -) and a whole number. Leading and trailing blanks are ignored. The DecimalSeparator global variable defines the character that must be used as a decimal point. Thousand separators and currency symbols are not allowed in the string. If S doesn't contain a valid value, StrToFloat throws an EConvertError exception.基本上您的程式中所使用的 StrToDateTime StrToFloat StrToCurr 都有可能會發生 EConvertError 的 Exception,請參考這些函式的線上說明。 像您另外有使用 StrToIntDef 函式,是在發生 Exception 時自動以 Default 值取代,而 BCB 並沒有提供對應的 StrToDateTimeDef StrToFloatDef StrToCurrDef 所以囉,轉換前必需自行確認。或是自行先攔截,例如: try { Query1->ParamByName("WGS_LON")->AsFloat = StrToFloat(AnsiString(GPS.WGS_LON,MAX_WGS_LON))/100; } catch(...) { Query1->ParamByName("WGS_LON")->AsFloat = 0; }沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |