全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:972
推到 Plurk!
推到 Facebook!

好像是轉換問題?

答題得分者是:dllee
kenbcb
中階會員


發表:171
回覆:129
積分:60
註冊:2003-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-13 13:57:22 IP:61.222.xxx.xxx 未訂閱
請問各位大大:    這是什麼樣問題~望大大們指導!!  我要把那些資料存入 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-19 13:46:33 IP:220.139.xxx.xxx 未訂閱
以下是 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
系統時間:2024-05-18 12:37:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!