понимаю почему не дает присваивать значение в листе? Выдает E2064 Left side cannot be assigned to.
type
TState = record
Id : integer;
Name : ShortString;
end;
public
{ Public declarations }
ListS: TList<TState>;
end;
...
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
State: TState;
begin
ListS := TList<TState>.Create;
State.Id := 1;
State.Name := 'Имя 1';
ListS.Add(State);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if (ListS <> nil) and (ListS.Count > 0) then
ListS[0].Name := 'Другое имя'; // тут проблема
end;
как минимум нет проверки корректности индекса со всеми вытекающими
А как вообще правильно делать? Проблема в том что я использую TList или то что использую Record?
если планируется, что данные изменяются, то есть смысл менять рекорд на класс. либо сделать свою обертку, внутри которой скрыть лист и обеспечить обработку крайних ситуаций
Обсуждают сегодня