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

是否有類似java hash table的東西?

答題得分者是:Chance36
eko
一般會員


發表:21
回覆:36
積分:11
註冊:2004-09-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-04 21:16:08 IP:218.171.xxx.xxx 未訂閱
各位前輩好 小弟有個需求 當客戶購買某個產品 能夠自動跳出上次的購買價格 於是我想做個table 存放客戶id,產品id,上次價格 當選擇某個客戶之後 我就讀取所有關於他的價格出來 所以想先將他讀到陣列中 我就可以使用[產品id]就傳回價格給我 問題來了我的產品id三碼 難道陣列要開[999][99]??? 因為陣列都是從0開始的... 能不能像java中的hash table 一樣是二惟陣列 但是可以讓我們設定[標誌],[值] 當我們設定['101']=1; 我讀出來只要輸入['101']就可以得到 對應的1 ... 不知道這樣解釋大家能不能聽的懂@@
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-04 22:37:05 IP:60.248.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-04 22:52:07 IP:218.171.xxx.xxx 未訂閱
感謝大大 問題解決了
系統時間:2024-06-01 23:01:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!