請問:如何將取得字串轉為datatype |
尚未結案
|
danajn
一般會員 ![]() ![]() 發表:14 回覆:29 積分:8 註冊:2002-08-01 發送簡訊給我 |
|
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 如: 1.'ftstring'要如何轉成 ftstring 2.'ftInteger'要如何轉成 ftInteger . . . thx....您的意思是要給Field或Param的DataType嗎? ftString、ftInteger…等在Delphi DB這個Unit就有定義宣告,所以您可以直接用,不需轉換如: Query1.ParamByName('xxx').DataType := ftString; 不知這是不是您要的。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 因為這是 ordinal 的 type , 並不是 String 的格式, 所以一般你若是要自行取得的話, 要自己利用 case of 的語法來取得, 如下:
function TFieldTypeToStr(FFieldType: TFieldType): String; begin case FFieldType of ftUnknown: Result :='ftUnknown'; ftString: Result :='ftString'; ftSmallint: Result :='ftSmallint'; ftInteger: Result :='ftInteger'; ftWord: Result :='ftWord'; ftBoolean: Result :='ftBoolean'; ftFloat: Result :='ftFloat'; ftCurrency: Result :='ftCurrency'; ftBCD: Result :='ftBCD'; ftDate: Result :='ftDate'; ftTime: Result :='ftTime'; ftDateTime: Result :='ftDateTime'; ftBytes: Result :='ftBytes'; ftVarBytes: Result :='ftVarBytes'; ftAutoInc: Result :='ftAutoInc'; ftBlob: Result :='ftBlob'; ftMemo: Result :='ftMemo'; ftGraphic: Result :='ftGraphic'; ftFmtMemo: Result :='ftFmtMemo'; ftParadoxOle: Result :='ftParadoxOle'; ftDBaseOle: Result :='ftDBaseOle'; ftTypedBinary: Result :='ftTypedBinary'; ftCursor: Result :='ftCursor'; ftFixedChar: Result :='ftFixedChar'; ftWideString: Result :='ftWideString'; ftLargeint: Result :='ftLargeint'; ftADT: Result :='ftADT'; ftArray: Result :='ftArray'; ftReference: Result :='ftReference'; ftDataSet: Result :='ftDataSet'; ftOraBlob: Result :='ftOraBlob'; ftOraClob: Result :='ftOraClob'; ftVariant: Result :='ftVariant'; ftInterface: Result :='ftInterface'; ftIDispatch: Result :='ftIDispatch'; ftGuid: Result :='ftGuid'; ftTimeStamp: Result :='ftTimeStamp'; ftFMTBcd: Result :='ftFMTBcd'; else Result :=''; end; end; |
cmj
高階會員 ![]() ![]() ![]() ![]() 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
引言: 如: 1.'ftstring'要如何轉成 ftstring 2.'ftInteger'要如何轉成 ftInteger . . . thx....妳是要把DataType String轉成DataType 重點在於 1.建立DataType String和DataType之對應順序 2.如何尋找DataType String之位置 3.如何轉換DataType String位置為DataType之形態 提供下列程式參考 unit FieldType1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,DB, StdCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Form1: TForm1; //Delphi 7之TFieldType之定義,其他版本請參考該版之HELP FTypeStr:array[TFieldType] of string=('ftUnknown', 'ftString', 'ftSmallint', 'ftInteger', 'ftWord', 'ftBoolean', 'ftFloat', 'ftCurrency', 'ftBCD', 'ftDate', 'ftTime', 'ftDateTime', 'ftBytes', 'ftVarBytes', 'ftAutoInc', 'ftBlob', 'ftMemo', 'ftGraphic', 'ftFmtMemo', 'ftParadoxOle', 'ftDBaseOle', 'ftTypedBinary', 'ftCursor', 'ftFixedChar', 'ftWideString', 'ftLargeint', 'ftADT', 'ftArray', 'ftReference', 'ftDataSet', 'ftOraBlob', 'ftOraClob', 'ftVariant', 'ftInterface', 'ftIDispatch', 'ftGuid', 'ftTimeStamp', 'ftFMTBcd'); TS:TStringList; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i:TFieldType; begin Ts:=TStringList.Create; for i:=ftUnknown to ftFMTBcd do //DataType String置入Ts Ts.Add(FTypeStr[i]); //以下為測試 i:=TFieldType( Ts.IndexOf('ftInteger') ); //搜尋DataType String並轉為TFieldType形態 if i=ftInteger then showmessage('i is ftInteger') else showmessage('i is not ftInteger'); i:=TFieldType( Ts.IndexOf('ftString') ); if i=ftString then showmessage('i is ftString') else showmessage('i is not ftString'); //非DataType String測試 i:=TFieldType( Ts.IndexOf('Test') ); if ord(i)=255 then showmessage('i is not TFieldType') else showmessage('i is TFieldType'); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Ts.Free; end; end.另外若要顯示DataType String 如 showmessage( FTypeStr[ftInteger] ); 發表人 - cmj 於 2003/05/18 01:39:26 |
Mickey
版主 ![]() ![]() ![]() ![]() ![]() 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
Mickey
版主 ![]() ![]() ![]() ![]() ![]() 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
幫 Mickey 兄將此功能寫為 function 如下:
uses TypInfo, DB; .. .. function StrToTFieldType(FTypeStr: String): TFieldType; var i : integer; begin i := GetEnumValue( TypeInfo(TFieldType) , FTypeStr ); Result := TFieldType(i); end; . . . . function TFieldTypeToStr(FFieldType: TFieldType): String; begin Result := GetEnumName( TypeInfo(TFieldType) , Ord(FFieldType)); end;如此一來就可以利用 StrToTFieldType 來進行由字串轉為 TFieldType 了. 用法: StrToTFieldType('ftString') 會傳回(TFieldType的) ftString .. 並利用 TFieldTypeToStr 來進行由 TFieldType 轉為字串, 用法: TFieldTypeToStr(ftString) 會傳回字串的 'ftString' .. 更詳細的說明及範例在: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30630 |
danajn
一般會員 ![]() ![]() 發表:14 回覆:29 積分:8 註冊:2002-08-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |