1. 首先问大家dataSet如何手动赋值(不连接数据库),我写了一个一直报错
procedure TMenu.Button2Click(Sender: TObject);
var form1: Tform1;
var dataSet:TclientDataSet;
begin
  try
    with dataSet do
    begin
      with FieldDefs.AddFieldDef do
      begin
        DataType := ftInteger;
        Name := 'a';
      end;
      CreateDataSet;
    end;
    dataSet.Open;
    dataSet.append;
    dataSet.fieldbyname('a').asInteger:= 1;
    dataSet.Post;
  except
    on e: Exception do
       showmessage(e.Message);
  end;
end;
2. 之所以想使用dataset是因为用户可以随意添加数据集,也就是说我不知道数据的数量,不能用数组,于是我就想到用TclientDataSet,以前做.net的时候就这么干。
   现在被TclientDataSet打击的没信心了,想用个别的,比如java的arraylist之类的,请问delphi有比较好用的类吗   很久没编程了,现在菜的可以,请大家不要见笑,多多指教

解决方案 »

  1.   

    用TList系列的类,比dataset方便。
      

  2.   

    谢谢回复!
       在delphi里,都是用TList系列的类来实现arraylist的功能马?我以前在java里习惯用arraylist,在.net里习惯用dataset
       我去式一下,用TList系列的类也许可以解决我的第2各问题
       还请高人帮我解答一下第一个问题,搞了2个多小时,非常想知道下答案。
      

  3.   

    delphi里对应c#和java arraylist类的是Tobjectlist;
      

  4.   

    我自己搞定了,重写了一遍,结贴!
      ClientDataSet1 :=   TClientDataSet.Create(application);
      with ClientDataSet1 do
      begin
        with FieldDefs.AddFieldDef do
        begin
          DataType := ftInteger;
          Name := 'Field1';
        end;
        with FieldDefs.AddFieldDef do
        begin
          DataType := ftString;
          Size := 10;
          Name := 'Field2';
        end;
        with IndexDefs.AddIndexDef do
        begin
          Fields := 'Field1';
          Name := 'IntIndex';    end;
        CreateDataSet;
        ClientDataSet1.Open;
        ClientDataSet1.Append;
        fieldbyname('Field1').AsInteger:= 1;
        fieldbyname('Field2').AsString:= 'b';
        post;
        ClientDataSet1.MoveBy(1);  end;
        showmessage(ClientDataSet1.FieldValues['Field1']);
        showmessage(ClientDataSet1.FieldValues['Field2']);