0

Delphi XE5 Professional を使用して Android アプリを開発しています。アプリは、Android 4.1.2 を搭載した Galaxy S3 電話で実行されています。TStringListがどのように機能するのか、おそらくわかりません。これが私が試していることです

私の FireMonkey モバイル フォームには、edt1、edt2、edt3、edt4 という名前の 4 つの TEdit があります。

最初にリストを作成します: 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]。次に、2 番目の項目を削除します。

procedure TForm1.btnDeleteItem;
begin
  List.BeginUpdate;
  List.Delete(1);
  List.EndUpdate;
end;

この手順の後、リストの構造は [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 手順で最後の項目が L​​ist Deleted からのものだったように思えます。ここで紹介するリストの構造は、プロシージャ間で Memo1.Lines.Add(List.Text) を使用して取得したものです。

ここで何が起こっているのか、誰にもわかりませんか?

4

1 に答える 1