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

Ваш аккаунт

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

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

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

TMemo и TListBox

2.1K
27 декабря 2004 года
ADanilov
33 / / 15.10.2004
Каким образом можно заменить уже созданную строку в TMemo или TListBox???
И как мне добавить к существующей строке част символов???
259
27 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by ADanilov
Каким образом можно заменить уже созданную строку в TMemo или TListBox???
И как мне добавить к существующей строке част символов???


1.
В TMemo доступ к строкам TMemo1->Lines->Strings;
В TListBox - TListBox1->Items->Strings;
2.
TMemo1->Lines->Strings += "Еще вкусных булочек";
TListBox1->Items->Strings += "Еще вкусных булочек";

301
27 декабря 2004 года
lord Kelvin
897 / / 08.11.2004
Скорее так
 
Код:
Memo1->Lines->Strings=Memo1->Lines->Strings+"Еще вкусных булочек";
259
27 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by lord Kelvin
Скорее так
 
Код:
Memo1->Lines->Strings=Memo1->Lines->Strings+"Еще вкусных булочек";


Это монопенисуально. На AnsiString Операция += определена.

301
27 декабря 2004 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by AlexandrVSmirno

Это монопенисуально. На AnsiString Операция += определена.


Это так. Но я проверял - "Memo1->Lines->Strings += "Еще вкусных булочек";" не присваивает Memo1->Lines->Strings, возвращает строку являющуюся искомой.

 
Код:
Memo1->Lines->Strings="Cool! ";
 Memo1->Lines->Strings+="It works!";
 if((Memo1->Lines->Strings+="It works!")=="Cool! It works!")ShowMessage("!!!");
 if(Memo1->Lines->Strings=="Cool! ")ShowMessage("!!!");

Этот код выдаст 2 сообщения "!!!".

259
28 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by lord Kelvin

Это так. Но я проверял - "Memo1->Lines->Strings += "Еще вкусных булочек";" не присваивает Memo1->Lines->Strings, возвращает строку являющуюся искомой.
 
Код:
Memo1->Lines->Strings="Cool! ";
 Memo1->Lines->Strings+="It works!";
 if((Memo1->Lines->Strings+="It works!")=="Cool! It works!")ShowMessage("!!!");
 if(Memo1->Lines->Strings=="Cool! ")ShowMessage("!!!");

Этот код выдаст 2 сообщения "!!!".


Значит это глюк Билдера. Т.е. по стандарту С++ в твоем примере Memo1->Lines->Strings должно содержать строку "Cool! It works!It works". Скорее всего они не правильно делают realloc для операции +=

246
29 декабря 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by AlexandrVSmirno

Значит это глюк Билдера. Т.е. по стандарту С++ в твоем примере Memo1->Lines->Strings должно содержать строку "Cool! It works!It works". Скорее всего они не правильно делают realloc для операции +=


AlexandrVSmirno убедительная просьба посмотрите еще раз по внимательнее раздел help-a посвященный AnsiString::operator +=, потом код lord Kelvin-а.

 
Код:
Wait...

Посмотрели?
А теперь скажите у кого глюк?
247
29 декабря 2004 года
wanja
1.2K / / 03.02.2003
Вообще-то Lines->Strings - не просто AnsiString, а еще и интерфейс свойства, для работы с которым используются процедуры чтения и записи. Кстати, и с Edit->Text += тоже не прокатывает.
259
29 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by GIZMO

AlexandrVSmirno убедительная просьба посмотрите еще раз по внимательнее раздел help-a посвященный AnsiString::operator +=, потом код lord Kelvin-а.
 
Код:
Wait...

Посмотрели?
А теперь скажите у кого глюк?


Глюк остается у билдера. А Вам посоветую почитать описание стандарта С++ и определение операции +=, а так же мой топик.
[COLOR=blue]
Wait ....
[/COLOR]
Для стандартных операций ограничения в реализации [COLOR=red]недопустимы[/COLOR] и это на совести фирмы Борланд. Давайте определим сложение только на пространстве комплексных и чисел и честно предупредим об этом. И что? Если нажно сложить два целых?

246
29 декабря 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by AlexandrVSmirno

Глюк остается у билдера. А Вам посоветую почитать описание стандарта С++ и определение операции +=, а так же мой топик.
[COLOR=blue]
Wait ....
[/COLOR]
Для стандартных операций ограничения в реализации [COLOR=red]недопустимы[/COLOR] и это на совести фирмы Борланд. Давайте определим сложение только на пространстве комплексных и чисел и честно предупредим об этом. И что? Если нажно сложить два целых?



- "Вот за это, Я и не люблю кошек!";
- "Так может просто Ты не умеешь их готовить?"

Давайте глянем...

 
Код:
Memo1->Lines->Strings+="It works!";

не работает т. к. это черным по белому прописано в хелпе:
[COLOR=blue]
The operator +=() is not supported on a property with getter/setter functions.
[/COLOR]
а так работает:
 
Код:
String s("string1");
s+="string2";

Зачем это сделано - догадайтесь Сами.
И не надо прикрываться громкими фразами про стандарты, а просто хелп читать надо внимательней.
И не только хелп, но и то, что спрашивают. За примерами далеко ходить не надо:
http://forum.codenet.ru/showthread.php?s=&threadid=20654
Вас спрашивают:
Цитата:
Originally posted by Originally posted by ADanilov

Как мне найти в TMemo нужную мне строку (например в ней есть слово test) и узнать номер этой строки?


на что Вы отвечаете:

Цитата:
Originally posted by AlexandrVSmirno

Memo1->Lines->Strings - i я строка в мемо.


Бредите, что-ли?

259
29 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by GIZMO


- "Вот за это, Я и не люблю кошек!";
- "Так может просто Ты не умеешь их готовить?"

Давайте глянем...
 
Код:
Memo1->Lines->Strings+="It works!";

не работает т. к. это черным по белому прописано в хелпе:
[COLOR=blue]
The operator +=() is not supported on a property with getter/setter functions.
[/COLOR]
а так работает:
 
Код:
String s("string1");
s+="string2";

Зачем это сделано - догадайтесь Сами.
И не надо прикрываться громкими фразами про стандарты, а просто хелп читать надо внимательней.
И не только хелп, но и то, что спрашивают. За примерами далеко ходить не надо:
http://forum.codenet.ru/showthread.php?s=&threadid=20654
Вас спрашивают:

на что Вы отвечаете:

Бредите, что-ли?


Бред по моему далеко не у меня. Для любителей читать хелпы прошу выполнить простенький проектик. И посмотреть у кого бред?

Код:
//---------------------------------------------------------------------------
//Unit.h
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TMemo *Memo1;
    TLabel *Label1;
    void __fastcall FormActivate(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//Unit1.cpp
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)
{
    Memo1->Lines->Clear();
    Memo1->Lines->Add("First string");
    Memo1->Lines->Add("Second string");
    Label1->Caption = Memo1->Lines->Strings[1];
}
//---------------------------------------------------------------------------


2. К стандарту любого языка нужно относиться очень бережно. Любое его расширение, как правило не ведет ни к чему хорошему. Если в C++ описано, что результатом выполнения операции a += b есть а, содержащая a+b это должно быть так всегда. И здесь не о чем говорить. Если нет возмозможности реализовать это, то и нечего вводить такую операцию.
3. По поводу того, что написано в хелпе: Если я, в своих прогах, в хелпах, честно напишу, что у меня 2*2 = 4 во всех вычислениях за исключением начисления зарплаты, где 2*2 = 0, от этого мои программы не станут работать правильно. Просто их пререстанут использовать. И в этом случае я признаю, что глюк в моих программах, а не обвиняю бухгалтера в бредовости.

ЗЫ: От того, что ошибка описана в хелпе - она не перестает быть ошибкой. И нужно не советовать внимательнее читать хелп, а [COLOR=red]исправлять ошибки[/COLOR].
246
29 декабря 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by AlexandrVSmirno

Бред по моему далеко не у меня. Для любителей читать хелпы прошу выполнить простенький проектик. И посмотреть у кого бред?
 
Код:
...
void __fastcall TForm1::FormActivate(TObject *Sender)
{
    Memo1->Lines->Clear();
    Memo1->Lines->Add("First string");
    Memo1->Lines->Add("Second string");
    Label1->Caption = Memo1->Lines->Strings[1];
}
...


Ну, и где здесь ответ на вопрос:
- Как мне найти в TMemo нужную мне строку (например в ней есть слово test) и узнать номер этой строки?.

259
29 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by GIZMO

Ну, и где здесь ответ на вопрос:
- Как мне найти в TMemo нужную мне строку (например в ней есть слово test) и узнать номер этой строки?.


 
Код:
int *numPos;
numPos = new int[Memo1->Lines->Count];
int j=0;
for(int i=;i<Memo1->Lines->Count;i++)
{
   if(Memo1->Lines->Strings.Text.Pos(AnsiString("string")) > 0)
      numPos[j++] = i;
};


ЗЫ: не надо совсем плохо думать о задающих вопросы. Они вполне спосбны самостоятельно понять, что нужно делать дальше и как.
246
30 декабря 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by AlexandrVSmirno

 
Код:
int *numPos;
numPos = new int[Memo1->Lines->Count];
int j=0;
for(int i=;i<Memo1->Lines->Count;i++)
{
   if(Memo1->Lines->Strings.Text.Pos(AnsiString("string")) > 0)
      numPos[j++] = i;
};



ну родил наконец-то...
Браво!

Цитата:
Originally posted by AlexandrVSmirno

ЗЫ: не надо совсем плохо думать о задающих вопросы. Они вполне спосбны самостоятельно понять, что нужно делать дальше и как.


Ну и тупить откровенно тоже не стоит. Демонструруя при этом невнимательность и незнание VCL.
ЗЫ: Я плохо не думаю даже о Вас, Вы просто торопитесь с ответами...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог