Delphi: отсутствует оператор или точка с запятой

Я использую Indy 10 (TIdTcpServer) и получаю следующую ошибку:

[DCC Error] MainForm.pas(88): E2066 Missing operator or semicolon

При попытке запустить этот код:

procedure TForm1.SendMessage(Data: String; Client: Integer);
var
  List: TList;
  AContext: TIdContext;
begin
  List := idTcpServer1.Contexts.LockList;
  AContext(List[0]).Connection.IOHandler.WriteLn(Data);  // Line 88
end;

Я не могу понять, чего мне не хватает; любая помощь?


person user1580845    schedule 26.09.2012    source источник
comment
Хорошо, что вы включили код, но, поскольку вы мало что публиковали, было бы неплохо узнать, какая из них является строкой 88 (и увидеть строки с 80, которые ведут к этой строке).   -  person Ken White    schedule 27.09.2012
comment
Ой, извини. Я хотел поставить это. Строка 88: AContext(List[0]).Connection.IOHandler.WriteLn(Data); Других ссылок на них нет; кроме кода для подключения.   -  person user1580845    schedule 27.09.2012
comment
Хотя я не могу объяснить ошибку, которую вы получаете, ваш код совершенно неверен. Замените строку 88 на две новые: `AContext := TIdContext(List[0]); AContext.Connection.IOHandler.WriteLn(Data);' вместо.   -  person Ken White    schedule 27.09.2012
comment
Ура, получилось. Спасибо за помощь; простая ошибка :Р   -  person user1580845    schedule 27.09.2012
comment
Я опубликовал его как ответ, так что, возможно, он поможет будущим читателям этого вопроса.   -  person Ken White    schedule 27.09.2012


Ответы (1)


Хотя я не могу объяснить ошибку, которую вы получаете, ваш код совершенно неверен.

Измените его на:

procedure TForm1.SendMessage(Data: String; Client: Integer);
var
  List: TList;
  AContext: TIdContext;
begin
  List := idTcpServer1.Contexts.LockList;
  AContext := TIdContext(List[0]);
  AContext.Connection.IOHandler.WriteLn(Data);
end;

Ваше неправильное использование приведения типа с не-типом может сбить с толку компилятор. Если это не решит проблему, отредактируйте свой вопрос, добавив больше кода к тому, что вы опубликовали (помогут около дюжины строк перед тем, что вы опубликовали).

person Ken White    schedule 26.09.2012
comment
FWIW ошибка исходит из этого: AContext(List[0]). AContext — это переменная, за которой должна следовать либо точка с запятой, либо оператор. - person David Heffernan; 18.06.2015