比如列表中第5行有个sModify项,原来的值为'Y',现在我想改为'N',然后保存到列表中,怎么办?

解决方案 »

  1.   

    你LIST是如何保存的指針。  Trec(List.items[i]).sModify := 'N';只是一個例子
      

  2.   

    指针方式:
      P(List.Items[4])^.sModify := 'N';
      

  3.   

        i:=MyProcess.Count-1;
        p1:=MyProcess.Items[i];
        p1^.sModify:='Y';
        ShowMessage(p1^.ExeFile+':'+p1^.sModify);//这里显示已经修改为'Y'了
        for j:=MyProcess.Count-1 downto 0 do
        begin
          p1:=MyProcess.Items[j];
          ShowMessage(p1^.ExeFile+':'+p1^.sModify);//但是再循环列表则显示为'N',说明没有真正的保存到列表中
        end;怎么样修改后保存到列表中呢?
      

  4.   

    你是否设置sorted := true?
    如果没有,你获取的值是不确定的。
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type  TRec = Record
        __FileName : string[128];
        __IsModify : Boolean;
      End;
      Rec = ^TRec;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      List : Tlist;
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      R : Rec;
    begin
     new(R);
      R^.__FileName := '123';
      R^.__IsModify := True;
      list.Add(R)
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      i :integer;
    begin
      for I := 0 to list.Count - 1 do begin
        rec(list.Items[i]).__IsModify := false;
      end;
    end;procedure TForm1.Button3Click(Sender: TObject);
    var
      i :integer;
    begin
      for I := 0 to list.Count - 1 do begin
        if Rec(list.Items[i]).__IsModify then showMessage(Rec(list.Items[i]).__FileName);  end;end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      list := Tlist.Create;
    end;end.
    隨便寫了個,沒有出現你說的問題。