Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Cannot convert 'AnsiString' to 'TStrings *'

16K
20 октября 2006 года
demon74
20 / / 18.10.2006
Уважаемые, подскажие, плиз ....что я не так делаю?(чувствую что лох))) )

Цитата:


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 *'

7.3K
20 октября 2006 года
H010d Freeze
143 / / 08.08.2006
Все правильно.....
Ты пытаешься присвоить строку списку строк - это же объекты разных классов.
Все могло бы прокатить, если бы для TStrings был определен соответствующий оператор присваивания или приведения типов, но таковых нет.... (ибо возможность определять операторы для класса на языке Delphi появилась только в Delphi 2006, а как известно VCL написан именно на языке Delphi)

А делать надо так:
Memo1->Lines->Text = dann.SubString( 1, dann.Pos( "&" )-1 );
16K
20 октября 2006 года
demon74
20 / / 18.10.2006
а можно и так:
Цитата:


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->*



где же тут собака то зарылась?

92
20 октября 2006 года
Тень Пса
2.2K / / 19.10.2006
у билдера есть такой косяк =))))

вместо
 
Код:
Memo1->Lines->...


пишешь
 
Код:
Memo1->Lines->operator[](i)->...


и тогда всё 100% будет работать )))
309
21 октября 2006 года
el scorpio
1.1K / / 19.09.2006
[quote=Тень пса]
у билдера есть такой косяк
[/quote]
Что вообще означает Memo->Lines :eek:?
В переводе на русский язык, производится индексация указателя Lines на объект TStrings. Соответственно, при любом i > 0, получаем полный ...
Это вообще недопустимо с точки зрения структуры класса TStrings. Для доступа к отдельным строкам класса TStrings используется свойство Strings [int Index].
 
Код:
Memo1->Lines->Strings [Index] = "Строка"; // Запись строки
AnsiString Str = Memo->Lines->Strings [Index]; // Чтение строки

А использование оператора [] хоть и реализовано в классе, но для указателя выглядит неуклюже.
16K
21 октября 2006 года
demon74
20 / / 18.10.2006
Спасибо за подсказку))...вроде разобрался
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог