TMemo и TListBox
И как мне добавить к существующей строке част символов???
Каким образом можно заменить уже созданную строку в TMemo или TListBox???
И как мне добавить к существующей строке част символов???
1.
В TMemo доступ к строкам TMemo1->Lines->Strings;
В TListBox - TListBox1->Items->Strings;
2.
TMemo1->Lines->Strings += "Еще вкусных булочек";
TListBox1->Items->Strings += "Еще вкусных булочек";
Скорее так
Это монопенисуально. На AnsiString Операция += определена.
Это монопенисуально. На AnsiString Операция += определена.
Это так. Но я проверял - "Memo1->Lines->Strings += "Еще вкусных булочек";" не присваивает Memo1->Lines->Strings, возвращает строку являющуюся искомой.
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 += "Еще вкусных булочек";" не присваивает Memo1->Lines->Strings, возвращает строку являющуюся искомой.
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 для операции +=
Значит это глюк Билдера. Т.е. по стандарту С++ в твоем примере Memo1->Lines->Strings должно содержать строку "Cool! It works!It works". Скорее всего они не правильно делают realloc для операции +=
AlexandrVSmirno убедительная просьба посмотрите еще раз по внимательнее раздел help-a посвященный AnsiString::operator +=, потом код lord Kelvin-а.
Посмотрели?
А теперь скажите у кого глюк?
AlexandrVSmirno убедительная просьба посмотрите еще раз по внимательнее раздел help-a посвященный AnsiString::operator +=, потом код lord Kelvin-а.
Посмотрели?
А теперь скажите у кого глюк?
Глюк остается у билдера. А Вам посоветую почитать описание стандарта С++ и определение операции +=, а так же мой топик.
[COLOR=blue]
Wait ....
[/COLOR]
Для стандартных операций ограничения в реализации [COLOR=red]недопустимы[/COLOR] и это на совести фирмы Борланд. Давайте определим сложение только на пространстве комплексных и чисел и честно предупредим об этом. И что? Если нажно сложить два целых?
Глюк остается у билдера. А Вам посоветую почитать описание стандарта С++ и определение операции +=, а так же мой топик.
[COLOR=blue]
Wait ....
[/COLOR]
Для стандартных операций ограничения в реализации [COLOR=red]недопустимы[/COLOR] и это на совести фирмы Борланд. Давайте определим сложение только на пространстве комплексных и чисел и честно предупредим об этом. И что? Если нажно сложить два целых?
- "Вот за это, Я и не люблю кошек!";
- "Так может просто Ты не умеешь их готовить?"
Давайте глянем...
не работает т. к. это черным по белому прописано в хелпе:
[COLOR=blue]
The operator +=() is not supported on a property with getter/setter functions.
[/COLOR]
а так работает:
s+="string2";
Зачем это сделано - догадайтесь Сами.
И не надо прикрываться громкими фразами про стандарты, а просто хелп читать надо внимательней.
И не только хелп, но и то, что спрашивают. За примерами далеко ходить не надо:
http://forum.codenet.ru/showthread.php?s=&threadid=20654
Вас спрашивают:
Как мне найти в TMemo нужную мне строку (например в ней есть слово test) и узнать номер этой строки?
на что Вы отвечаете:
Memo1->Lines->Strings - i я строка в мемо.
Бредите, что-ли?
- "Вот за это, Я и не люблю кошек!";
- "Так может просто Ты не умеешь их готовить?"
Давайте глянем...
не работает т. к. это черным по белому прописано в хелпе:
[COLOR=blue]
The operator +=() is not supported on a property with getter/setter functions.
[/COLOR]
а так работает:
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].
Бред по моему далеко не у меня. Для любителей читать хелпы прошу выполнить простенький проектик. И посмотреть у кого бред?
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) и узнать номер этой строки?.
Ну, и где здесь ответ на вопрос:
- Как мне найти в TMemo нужную мне строку (например в ней есть слово test) и узнать номер этой строки?.
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;
};
ЗЫ: не надо совсем плохо думать о задающих вопросы. Они вполне спосбны самостоятельно понять, что нужно делать дальше и как.
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;
};
ну родил наконец-то...
Браво!
ЗЫ: не надо совсем плохо думать о задающих вопросы. Они вполне спосбны самостоятельно понять, что нужно делать дальше и как.
Ну и тупить откровенно тоже не стоит. Демонструруя при этом невнимательность и незнание VCL.
ЗЫ: Я плохо не думаю даже о Вас, Вы просто торопитесь с ответами...