XE5 TStringList

Я использую Delphi XE5 Professional для разработки приложения для Android. Приложение работает на моем телефоне Galaxy S3 с Android 4.1.2. Я, наверное, не понимаю, как работает 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]. Затем я удаляю 2-й элемент:

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

После этой процедуры List имеет структуру [1 3 4]. Проблемы возникают со следующей процедурой - здесь я пытаюсь скопировать данные из списка в свои правки, поэтому 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) между процедурами.

Кто-нибудь знает, что здесь происходит?


person Jan Lochman    schedule 10.11.2013    source источник
comment
Укажите SSCCE, чтобы воспроизвести проблему. Код, который вы показали, не может вызывать поведение, которое вы описываете.   -  person Remy Lebeau    schedule 10.11.2013


Ответы (1)


Показанный вами код HandleEditButtons() никак не может изменить ваш List так, как вы утверждаете. Что-то еще должно происходить в коде, который вы не показали.

person Remy Lebeau    schedule 10.11.2013
comment
Никогда не пейте пиво, когда программируете :). У меня была глупая процедура для события OnChange каждого из моих TEdits - когда что-то при редактировании менялось, List перезаписывался новыми данными о TEdits. Большое спасибо. - person Jan Lochman; 10.11.2013