0

我正在使用 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) 获得的。

有谁知道,这里发生了什么?

4

1 回答 1

0

您显示的HandleEditButtons()代码不可能改变您List声称的方式。您未显示的代码中必须发生其他事情。

于 2013-11-10T00:28:59.500 回答