Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Memo поле, как считать с мемои и запихнуть в массив 
V
    Опции темы
Romikgy
Дата 15.11.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Vyacheslav, 

Код

i = Memo1->Lines->Count;
Memo1->Lines->Delete(i);

такого элемента нет и вывалится ошибка!
и , имхо, ваш пример теряет наглядность кода, особено если чел не силен в С/С++


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
TaNK
Дата 15.11.2006, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Romikgy @ 15.11.2006,  11:18)
TaNK, что ты хочешь сделать , я чет не пойму?

я хочу удалять элементы начиная с конца, по одному, а предложенные тут варианты удалют все элемент сразу!

Добавлено @ 12:56 
Цитата(Vyacheslav @ 15.11.2006,  11:30)
Насчет подобного когда
Код

 for (int i = Memo1->Lines->Count - 1; i >= 0; i--)
    Memo1->Lines->Delete(i);

Обычно такие вещи( перебор с конца в  начало )  делается вот так
Код

for (int i = Memo1->Lines->Count ; i--; )
{
  Memo1->Lines->Delete(i);
}

спасибо Vyacheslav'y и всем кто отвечал, проблема решена!вот как,
Код

//легко и просто оказывается!
 int  i = Memo1->Lines->Count;
  Memo1->Lines->Delete(i-1);

тема закрыта!


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Romikgy
Дата 15.11.2006, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(TaNK @  15.11.2006,  11:52 Найти цитируемый пост)
я хочу удалять элементы начиная с конца, по одному

? когда , во время нажатия на кнопку?
тогда это в обработчик кнопки
Код

if (Memo1->Lines->Count)
Memo1->Lines->Delete(Memo1->Lines->Count-1);



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
TaNK
Дата 15.11.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Romikgy @ 15.11.2006,  12:57)
Цитата(TaNK @  15.11.2006,  11:52 Найти цитируемый пост)
я хочу удалять элементы начиная с конца, по одному

? когда , во время нажатия на кнопку?
тогда это в обработчик кнопки
Код

if (Memo1->Lines->Count)
Memo1->Lines->Delete(Memo1->Lines->Count-1);

Код

void __fastcall TFMain::BtnDelClick(TObject *Sender)
{
  int  i = Memo1->Lines->Count;
  Memo1->Lines->Delete(i-1);
}

да в обработчики собития кнопки

Это сообщение отредактировал(а) TaNK - 15.11.2006, 13:00


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Romikgy
Дата 15.11.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



TaNK, воспользуйся моим кодом , ибо когда не будет в мемо записей могЁт быть ошибка при нажатии на кнопку   smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Vyacheslav
Дата 15.11.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(Romikgy @ 15.11.2006,  11:49)
Vyacheslav, 

Код

i = Memo1->Lines->Count;
Memo1->Lines->Delete(i);

такого элемента нет и вывалится ошибка!
и , имхо, ваш пример теряет наглядность кода, особено если чел не силен в С/С++

Поспорим, что ошибки не будет smile
итак
Код

for (int i = Memo1->Lines->Count ; i--; )
{
  Memo1->Lines->Delete(i);
}

Этот код будет эквивалентен нижеслежующему

Код

//инициализируем начальным значением
int int i = Memo1->Lines->Count;
//далее выполняем цикл
while(i--)
{
   Memo1->Lines->Delete(i);

}  

Первый цикл
Здесь интересен первый и последний цикл
Присвоили значение равное i = Memo1->Lines->Count;
Проверяем на 0
Уменьшаем на 1  не забыли : i--;
Имеем i равное Memo1->Lines->Count - 1
Выпоняем действие
Memo1->Lines->Delete(Memo1->Lines->Count - 1);

Как видидим, такое
Код

i = Memo1->Lines->Count;
Memo1->Lines->Delete(i);

никогда не выполнится

Насчет наглядности. Наглядность С++ - это прежде всего лаконичность и цикл в подобной интерпритации используется весьма часто в проф. разработке 






--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
TaNK
Дата 15.11.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Модератор:  skipped
Цитата(Vyacheslav @ 15.11.2006,  13:25)
 
...

Vyacheslav - я использовал твой код
Код

void __fastcall TFMain::BtnDelClick(TObject *Sender)
{
  int  i = Memo1->Lines->Count;
  Memo1->Lines->Delete(i-1); // только чуток изменил и все работает!
}


M
Vyacheslav
Overquoting:Правила форума: http://forum.vingrad.ru/index.phps=&act=SR&f=27
Пункт 13



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Данкинг
Дата 4.2.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



А в чём вот тут у меня ошибка? Я хочу строки из мемо1 перенести в мемо2: 

Код

String sss;
int i;
TForm1 *Form1;

int rev()
{
if (Form1->Memo1->Lines->Count==0)
 {
  Application->MessageBoxA("Нет текста для обработки!","Ошибка!!!",MB_OK);
 }
else {
    for(i = 0; i < Form1->Memo1->Lines->Count-1; i++);
    {sss=Form1->Memo1->Lines->Strings [i];
    Form1->Memo2->Lines->Add(sss);
    }
    }
}



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Romikgy
Дата 4.2.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(Данкинг @  4.2.2007,  22:37 Найти цитируемый пост)
for(i = 0; i < Form1->Memo1->Lines->Count-1; i++);
    {sss=Form1->Memo1->Lines->Strings [i];
    Form1->Memo2->Lines->Add(sss);
    }

не проще ли так?
Код

Form1->Memo2->Lines->Text=Form1->Memo1->Lines->Text;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
nworm
Дата 4.2.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 1
Всего: 8



Код

for(i = 0; i < Form1->Memo1->Lines->Count-1; i++);

надо убрать ;  в конце этой строки
PM MAIL WWW   Вверх
Данкинг
Дата 5.2.2007, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Romikgy @  4.2.2007,  23:51 Найти цитируемый пост)
не проще ли так?

Нет, мне же строки обрабатывать потом нужно будет, я пока разбираюсь с проходом по memo.  smile 

Цитата(nworm @  4.2.2007,  23:51 Найти цитируемый пост)
надо убрать ;  в конце этой строки 

Вот так помогло. smile Только вот что непонятно теперь: я убрал "-1":

Код

for(i = 0; i < Form1->Memo1->Lines->Count; i++)

Работает нормально т.е., перемещаются все строки. Но: если нумерация строк идёт с 0, то как получается, что обрабатывается всё количество строк в мемо1 (Memo1->Lines->Count), а не (Memo1->Lines->Count-1) ? Я в том смысле, что на Дельфи я бы написал:

Код

for i:=0 to memo1.lines.count-1 do
 begin
 ...
 end;

Или я чего-то не понимаю?...


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
nworm
Дата 5.2.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 1
Всего: 8



Если хочешь как в Delphi, пиши 
Код

for(i = 0; i <= Form1->Memo1->Lines->Count-1; i++)

PM MAIL WWW   Вверх
XPyCT
  Дата 25.8.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



я почемуто пишу не Count а Cpacity
 rк примеру есть два мемо!
в первый мемо загоняем какой неить фаил
а потом мемо2 присваеваем построчно содержиме первого мемо
текст фаил лежит в папке проекта
Код

//----------------------------------------------Создание формы
void __fastcall TForm1::FormCreate(TObject *Sender)//при создании формы  загружается файл test.txt"
{
  Memo1->Clear();
    Memo1->Lines->LoadFromFile("test.txt");
}

//-----------------------------------------------
//-----------------------------------------------клик на кнопке
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   int i;

    Memo2->Clear();

     Memo2->Lines->Capacity=Memo1->Lines->Capacity;

        for(i=0; i < Memo1->Lines->Capacity; i++)

           Memo2->Lines->Strings[i]=Memo2->Lines->Strings[i];
}
//-------------------------------------------------------------------------

не судите строго новичка

Это сообщение отредактировал(а) XPyCT - 25.8.2007, 16:51
PM MAIL Skype   Вверх
Rodman
Дата 25.8.2007, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Код

//----------------------------------------------Создание формы
void __fastcall TForm1::FormCreate(TObject *Sender)//при создании формы  загружается файл test.txt"
{
  Memo1->Clear();
    Memo1->Lines->LoadFromFile("test.txt");
}
//-----------------------------------------------
//-----------------------------------------------клик на кнопке
void __fastcall TForm1::Button1Click(TObject *Sender)
{
          Memo2->Text=Memo1->Text;
}


Это сообщение отредактировал(а) Rodman - 25.8.2007, 23:15
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Romikgy
Дата 25.8.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(Rodman @  25.8.2007,  17:04 Найти цитируемый пост)
 Memo2->Text=Memo2->Text;

имхо только так  smile 
 Memo2->Text=Memo1->Text;


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0714 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.