是否有類似java hash table的東西? |
答題得分者是:Chance36
|
eko
一般會員 發表:21 回覆:36 積分:11 註冊:2004-09-26 發送簡訊給我 |
各位前輩好
小弟有個需求
當客戶購買某個產品
能夠自動跳出上次的購買價格
於是我想做個table
存放客戶id,產品id,上次價格
當選擇某個客戶之後
我就讀取所有關於他的價格出來
所以想先將他讀到陣列中
我就可以使用[產品id]就傳回價格給我
問題來了我的產品id三碼
難道陣列要開[999][99]???
因為陣列都是從0開始的...
能不能像java中的hash table
一樣是二惟陣列
但是可以讓我們設定[標誌],[值]
當我們設定['101']=1;
我讀出來只要輸入['101']就可以得到
對應的1
... 不知道這樣解釋大家能不能聽的懂@@
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
eko 你好
提供兩種方法 1.使用TStringList Var SL : TStrings; R : String ; Begin Sl := TStringList.Create; // 以下加入項目的動作,要改由Query讀出資料庫的資料後,一筆一筆的加入 SL.Add('AAA=1'); SL.Add('BBB=2'); SL.Add('CCC=3'); SL.Add('DDD=4'); // 當要讀 BBB的值時使用以下語法 R := Sl.Values['BBB'];//==> R = '2' End; 2.使用TClientDataSet 如果你使用三層架構或模擬三層式架構的話,建議使用這個方法 在Form上放以下三個元件 Qry:TQury; Qry.DataBaseName := '資料庫別名'; Qry.Sql.Text := 'Select * From TableName' ; dsp:TDataSetProvider; dsp.DataSet := Qry; cds:TClientDataSet; cds.ProviderName := dsp; cds.Open; // 在Form.OnCreate 或OnShow事件中 cds.IndexFieldNames := '客戶id;產品id'; Var R : Extended; Begin // 當要讀 101 客戶代碼及 01 的產品時 R := 0 ; cds.SetKey; // 要搭配上面的 cds.IndexFieldNames的索引設定 cds.FieldByName('客戶id').AsSteing := '101'; cds.FieldByName('產品id').AsString := '01'; If GotoKey Then R := cds.FieldByName('上次價格').AsFloat; End;_______________________________________ 深藍的魚,祝您好運..........連連 |
eko
一般會員 發表:21 回覆:36 積分:11 註冊:2004-09-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |