我想在一个文件中存储这样的一个有序列,
序列中一个纪录包括三个字段:显示时排列的顺序号(比如用整数),标题(大约1-30个汉字),内容(最多不超过1000个汉字)。
我不想用数据库来存储,因为我的纪录并不多。但这个有序列要能比较方便的实现:新增,排序,修改,删除操作。请问用什么样的方式来实现最方便编程?
在VB.NET中有现成的SortList类,但Delphi中应当用什么办法?

解决方案 »

  1.   

    用TStrings加一个类就可以完成了。
    type
      

  2.   

    用TStrings加一个类就可以完成了。
    type 
      MyClass= class
        No:Integer;
        Title:string;
        Content:string;
      end;
    var
      MyList:TStrings;
    MyList := TStringList.create;
    MyList.AddObject("", MyClass对象);
      

  3.   

    wyb716(小刀) 的方法好象还不错,学到一招,谢谢!
    不知是否还有其它方法?
      

  4.   

    用TList加一个类就可以完成了。
    type 
      MyClass= class
        No:Integer;
        Title:string;
        Content:string;
      end;
    var
      MyList:TList;
    MyList := TList.create;
    MyList.Add(MyClass对象);抄加改.
      

  5.   

    TList 只是加入指针,如果写到实际文件又怎么办呢?
    TStringList 倒是可以做,但是addobject是把TObject加给TStringlist
    Note: The TStringList object does not own the objects you add this way. Objects added to the TStringList object still exist even if the TStringList instance is destroyed. They must be explicitly destroyed by the application.
    又如何存盘呢?
      

  6.   

    对啊,如何存盘呢?
    TStringList可以有现成的方法直接存盘吗?
      

  7.   

    我在试用wyb716(小刀) 的方法的方法时出错:
    请看下面的代码?执行时报错:“stack overflow”我用F7 Trace into,发现执行到fillItem1.Create(0,'test','Test');一句时就会陷入循环,一直执行该句不会往下运行,不知这是为什么啊?unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type 
      TFillItem= class
        No:Integer;
        Title:string;
        Content:string;
        constructor create(_No: Integer;_Title: String;_Content:String);
      end;  TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      MyList:TStrings;implementation{$R *.DFM}
    Constructor TFillItem.Create(_No: Integer;_Title: String;_Content: String);
    begin
      No:=_No;
      Title:=_Title;
      Content:=_Content;
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      fillItem1: TFillItem;
    begin
     MyList := TStringList.create;
     fillItem1.Create(0,'test','Test');
     MyList.AddObject('test0', fillItem1);end;end.
      

  8.   

    明白了,构造函数应当由类来调用:
    TfillItem1.Create(0,'test','Test');
      

  9.   

    试了一下,果然wyb716(小刀) 的方法不能存盘: MyList := TStringList.create;
     fillItem1:=TfillItem.Create(0,'test','Test');
     MyList.AddObject('0', fillItem1);
     MyList.SaveToFile('test.txt');对象无法存入文件,test.txt只存入了'0'这个字符串。
    加分!请大家多多指点?
      

  10.   

    保存成INI文件倒是不难编程,但用一个字段可能是一小篇文章,INI文件不行吧?
      

  11.   

    一个字段可能是一小篇文章呵呵,多少字?500—1000?还是用数据库吧,也没有什么值不值的概念呀用access或VFP建一个单独的表还很耗资源吗?
      

  12.   

    type 
      myrecord=record
      id:integer;
      title:string;
      memo:string;
      end;var varrecord:myrecord;要是多个记录可定义一个数组:var  varrecord:array[0..N] of myrecord 这样就可以了
      

  13.   

    不用数据库,那就用TClientDataSet吧.打包只只需要Midas.DLL就可以了.
    该控件可以生成一个文件.CDS.当然,也可以用其它的文件名.如果要自己写代码,太麻烦了.用TLIST和TSTRINGLSIT都是一样的,
    都要自己用类来保存到文件中去.
      

  14.   

    该类TClientDataSet不需要BDE的支持.使用方法和TTABLE一样.只是不要打包BDE而已.
      

  15.   

    用两个TStringList 一个存储 Caption,还一个存储 Text,然后定义两个数组,分别保存两个顺序号,一个 Caption 的,还一个Text 的。相当于 Caption 和 Text 的索引。
    保存时按照两个索引的顺序,顺序存储到文件中,可以使用 Record 类型存储。
      

  16.   

    不是怕数据库占用资源,而是想做一个FreeWare,怕用数据库后打包后程序变得太大,二则不知道是否会给用户安装带来麻烦?
    好,我试试TClientDataSet和 CloneCenter(复制中心)的方法。
    非常感谢谢大家。
      

  17.   

    ClientDataSet果然不错,谢谢各位了,结贴。