Cannot convert 'AnsiString' to 'TStrings *'
Цитата:
ServerSocket1->Active = true ;
AnsiString dann = Socket->ReceiveText();
for( int i = 1; i <= Memo1->Lines->Count ; i++ )
{
Memo1->Lines = dann.SubString( 1, dann.Pos( "&" )-1 );
на последней строке выдаёт ошибку:
Цитата:
Cannot convert 'AnsiString' to 'TStrings *'
Ты пытаешься присвоить строку списку строк - это же объекты разных классов.
Все могло бы прокатить, если бы для TStrings был определен соответствующий оператор присваивания или приведения типов, но таковых нет.... (ибо возможность определять операторы для класса на языке Delphi появилась только в Delphi 2006, а как известно VCL написан именно на языке Delphi)
А делать надо так:
Memo1->Lines->Text = dann.SubString( 1, dann.Pos( "&" )-1 );
Цитата:
Memo1->Lines->Add(dann.SubString( 1, dann.Pos( "&" )-1 ));
но только вот в чём косяк: када в цикл забиваю
Цитата:
for( int i = 1; i <= k ; i++ )
{
Memo1->Lines->Add(dann.SubString( 1, dann.Pos( "&" )-1 ));
dann.Delete( 1, dann.Pos( "&" ) );
то останавлвается на Lines и пишет:
Цитата:
Pointer to structure required on left side of-> or->*
где же тут собака то зарылась?
вместо
Код:
Memo1->Lines->...
пишешь
Код:
Memo1->Lines->operator[](i)->...
и тогда всё 100% будет работать )))
у билдера есть такой косяк
[/quote]
Что вообще означает Memo->Lines :eek:?
В переводе на русский язык, производится индексация указателя Lines на объект TStrings. Соответственно, при любом i > 0, получаем полный ...
Это вообще недопустимо с точки зрения структуры класса TStrings. Для доступа к отдельным строкам класса TStrings используется свойство Strings [int Index].
Код:
Memo1->Lines->Strings [Index] = "Строка"; // Запись строки
AnsiString Str = Memo->Lines->Strings [Index]; // Чтение строки
AnsiString Str = Memo->Lines->Strings [Index]; // Чтение строки
А использование оператора [] хоть и реализовано в классе, но для указателя выглядит неуклюже.
Спасибо за подсказку))...вроде разобрался