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;怎么样修改后保存到列表中呢?
你是否设置sorted := true? 如果没有,你获取的值是不确定的。
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. 隨便寫了個,沒有出現你說的問題。
P(List.Items[4])^.sModify := 'N';
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;怎么样修改后保存到列表中呢?
如果没有,你获取的值是不确定的。
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.
隨便寫了個,沒有出現你說的問題。