我想把数据库中的数据存放到一个数据结构中,以后遍历这个结构取数据就可以了,请问用什么数据结构好?有例子最好!

解决方案 »

  1.   

    自定义的记录结构加指针链表,具体查看Delphi自带的Virtual ListView例子。
      

  2.   

    var  A: Variant;
    begin
      A := VarArrayCreate([0, 4], varVariant);
      A[0] := 1;
      A[1] := 1234.5678;
      A[2] := 'Hello world';
      A[3] := True;
      A[4] := VarArrayOf([1, 10, 100, 1000]);
      WriteLn(A[2]); { Hello world }
      WriteLn(A[4][2]); { 100 }end;
      

  3.   

    THashedStringList没用过,上网查了一下好象也没查到什么
    TLIST怎么用?
    variant可以记录多条吗?我想用某个结构来记录多个字段多条数据
      

  4.   

    不是告诉你了吗?查看Virtual ListView的例子。
    -------------------------------
    假设你的数据库中有字段A(Integer),字段B(String),字段C(Float),字段D(DateTime),那么如下……type
      PRecData = ^TRecData;
      TRecData = packed record
        FieldA: Integer;
        FieldB: String;
        FieldC: Single;
        FieldD: DateTime;
      end;var
      pData: PRecData;
      lstData: TList;//首先创建TList;
      lstData := TList.Create;//检索数据库,得到数据集,例如ADOQuery;
      while not ADOQuery.Eof do
      begin
        //建立新记录指针,保存数据
        New(pData);
        pData^.FieldA := ADOQuery.FieldByName('字段A').AsInteger;
        pData^.FieldB := ADOQuery.FieldByName('字段B').AsString;
        pData^.FieldC := ADOQuery.FieldByName('字段C').AsFloat;
        pData^.FieldD := ADOQuery.FieldByName('字段D').AsDateTime;
        //将记录指针加入到链表中
        lstData.Add(pData);
        ADOQuery.Next;
      end;//检索链表时……
      pData(lstData.Items[3])^.FieldA  //第4条记录的字段A
      pData(lstData.Items[0])^.FieldD  //第1条记录的字段D//最后释放指针链表
      略……