我正在使用 Delphi XE5 Professional 开发 Android 应用程序。应用程序正在我的装有 Android 4.1.2 的 Galaxy S3 手机上运行。我可能不明白,TStringList 是如何工作的。这是我正在尝试的
在我的 FireMonkey 移动表单中,我有 4 个 TEdit,名为:edt1、edt2、edt3、edt4
首先我创建列表:TStringList
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
List := TStringList.Create;
for i := 1 to 4 do List.Add(IntToStr(i));
end;
具有明显的结构 [1 2 3 4]。然后我删除第二项:
procedure TForm1.btnDeleteItem;
begin
List.BeginUpdate;
List.Delete(1);
List.EndUpdate;
end;
在此过程之后,List 具有结构 [1 3 4]。下一个过程会出现问题 - 在这里我尝试将数据从 List 复制到我的编辑中,因此 edt1 包含 List[0],edt2 包含 List[1],......这是执行此操作的代码:
procedure TForm1.HandleEditButtons(Sender: TObject);
var i: Integer;
aEdt: TEdit;
begin
for i := 1 to 4 do
begin
aEdt := FindComponent('edt'+IntToStr(i)) as TEdit;
if (aEdt <> nil) then
if (i <= List.Count) then aEdt.Text := List[i-1]
else aEdt.Text := '';
end;
end;
在此过程之后,List 具有结构 [1 2 3] 所以在我看来,当使用过程 btnDeleteItem 时,最后一项来自 List Deleted。我在这里介绍的 List 的结构是通过在过程之间使用 Memo1.Lines.Add(List.Text) 获得的。
有谁知道,这里发生了什么?