Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Как в строке последовательно обрабатывать символы
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Kostjara Kostjara вне форума
Новичок
 
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.01.2006
По умолчанию Как в строке последовательно обрабатывать символы - 26.01.2006, 03:11

надо в строке последовательно обрабатывать символы,,
как коректно перевести АнсиСтринг в строку?

написал код,, он некоректно работает у меня притензии к .c_str(),,
или можт дело в чемто другом укажыте пожалуйсто на ошибку

Код:
char ch, *str;
int c,len;
void __fastcall TForm1::Button4Click(TObject *Sender)
{
str=Memo1->Text.c_str();

len=strlen(str);

for(int i=0;i<len;i++)
{
c=str[i];
Label15->Caption=Label15->Caption+" "+IntToStr(c);
}
Label14->Caption=AnsiString(str);
 Label17->Caption=IntToStr(len);
Ответить с цитированием
  (#2 (permalink)) Старый
Alexiski Alexiski на форуме
Любитель давать советы
 
Сообщений: 4,237
Сказал(а) спасибо: 25
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 26.01.2006, 06:01

c_str - наиболее быстрый и корректный способ перевода AnsiString в char*, но нужно помнить, что он дает ссылку непосредственно на текущий буфер AnsiString, поэтому его результат ни в коем случае нельзя хранить длительное время - он становится некорректным при любых операциях, изменяющих AnsiString. Может, проблемы в этом?
Ответить с цитированием
  (#3 (permalink)) Старый
Rius Rius на форуме
Программист
 
Аватар для Rius
 
Сообщений: 6,637
Сказал(а) спасибо: 12
Поблагодарили 797 раз(а) в 782 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 26.01.2006, 10:30

обрабатывайте симвлы прямо в строке
AnsiString str = Memo1->Text;

str[i] ...
Ответить с цитированием
  (#4 (permalink)) Старый
wanja wanja на форуме
Member
 
Сообщений: 575
Сказал(а) спасибо: 1
Поблагодарили 22 раз(а) в 22 сообщениях
Регистрация: 08.05.2005
По умолчанию 26.01.2006, 14:50

А сделать strcpy салбо?
Ответить с цитированием
  (#5 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию 04.02.2006, 22:34

а если прописываешь c_str то нужно включать какую нить библиотеку ?
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
_shumer _shumer вне форума
Member
 
Сообщений: 30
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.01.2006
По умолчанию 04.02.2006, 23:35

Цитата:
Originally posted by wanja+-->
Цитата:
А сделать strcpy салбо?
Что сделать - перевести AnsiString в char*? Более глупый и неправильный ответ надо еще постараться придумать...

<!--QuoteBegin-sq-Weezee

[b]а если прописываешь c_str то нужно включать какую нить библиотеку ?
vcl.h - там точно есть. Более конкретно - надо искать.

А теперь о главном. Memo1->Text - это конечно хорошо, когда понимаешь, что оно означает.
Memo1->Lines->Strings[index_string_in_memo]
Ответить с цитированием
  (#7 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию 05.02.2006, 02:11

_shumer
Код:
void __fastcall TPrintForm::ShowResultClick(TObject *Sender)
{
  print.VoidE(my.ResultE());
  for (int i = 0; i <  print.PrintE() ; i++)
  {
    print.VoidX(my.rX(i));
    if ( i == print.PrintE() - 1)
    {
      if ( print.PrintX() < 0 )
      {
        Memo1->Lines->Strings[0] = Memo1->Lines->Strings[0] + print.PrintX() + "*c^" + i;
        goto end_cikl;
      }
      Memo1->Lines->Strings[0] = Memo1->Lines->Strings[0] +  print.PrintX() + "*c^" + i;
      goto end_cikl;
    }
    if ( print.PrintX() < 0 )
    {
      Memo1->Lines->Strings[0] = Memo1->Lines->Strings[0] + print.PrintX() + "*c^" + i + " " ;
      goto end_cikl;
    }
    Memo1->Lines->Strings[0] = Memo1->Lines->Strings[0]  + print.PrintX() + "*c^" + i + " + ";
    end_cikl:
  }
}
как сделать так , чтоб Memo печатало поочерёдности , тоесть если текст привышет максимальную ширины , то был сделан переход на следующую строку ( а то при таком примере она замещает часть текста , новым текстом и получаеться не по очередности )? Ответь plzzzzzzz!
Ответить с цитированием
  (#8 (permalink)) Старый
_shumer _shumer вне форума
Member
 
Сообщений: 30
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.01.2006
По умолчанию 05.02.2006, 14:48

Ну во-1, если хочешь переходить в "конец цикла", есть специальный оператор continue.
Во-2, я бы все-таки посоветовал вместо Memo использовать RichEdit. При форматировании текста очень удобный компонент, а печать производится вообще просто: RichEdit->Print("печать данных ..."). Параметр задает имя процесса в очереди задач принтера.
Ответить с цитированием
  (#9 (permalink)) Старый
Nicky_cr Nicky_cr вне форума
Member
 
Сообщений: 102
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.01.2006
По умолчанию 05.02.2006, 15:12

Привет
Ну что Вам сказать Скуизи - всЁ ПЛОХО.....
Я конечно даже не берусь предположить что за результаты принтит ета функция, но ето круто, нет честно круто....

С уважением Ники...

ЗЫ а что в Билдере можно скадывать AnsiString и int? если да то прикольно, интересно каков результат такого сложения?
Ответить с цитированием
  (#10 (permalink)) Старый
_shumer _shumer вне форума
Member
 
Сообщений: 30
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.01.2006
По умолчанию 05.02.2006, 17:08

Цитата:
Originally posted by Nicky_cr
[b]ЗЫ а что в Билдере можно скадывать AnsiString и int? если да то прикольно, интересно каков результат такого сложения?
В смысле складывать? Соединять можно - т.к. реализована перегрузка оператора "+"
Код:
AnsiString s = "123";
int a = 45;
s += a;   //s = "12345"
Ответить с цитированием
  (#11 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию 05.02.2006, 17:18

Привет
Nicky_cr=)
Во-первых : не Скуизи , а sq-Weezee я же не называю тебя Ники_ср ( кстати у меня у знакомой собаку Ника зовут =))
Во-вторых : это ладно то я еще зелёный в этом деле , ни чего не знаю , а ты то уж чё ? Возьми да проверь !!! А результат такой же , как при сложение символов !!!

С уважением sq-Weezee=)
Ответить с цитированием
  (#12 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию 05.02.2006, 17:50

_shumer, а есть какая-нить компонента , в которой свойства ScrollBars и Text есть одновременно ?
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Nicky_cr Nicky_cr вне форума
Member
 
Сообщений: 102
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.01.2006
По умолчанию 05.02.2006, 21:17

привет
Да, хорошая кстати перегрузка - просто Билдера ни разу в глаза не видел...
to sq-Weezee:
нечего не имею против такого сложения, если есть возможность то надо обязательно пользоваться......
Просто код вашей функции хмм..... над ним бы не мешало поработать.....
С уважением Ники...

ЗЫ не хотел вас задеть но про собаку спасибо
.... и в TMemo есть СкроллБарс....
Ответить с цитированием
  (#14 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию 05.02.2006, 21:44

Nicky_cr , да там есть ScrollBar , но там вывод текста с помощью Lines , а нужно через Text !!!
Ответить с цитированием
  (#15 (permalink)) Старый
_shumer _shumer вне форума
Member
 
Сообщений: 30
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.01.2006
По умолчанию 05.02.2006, 23:46

Цитата:
Originally posted by sq-Weezee+-->
Цитата:
_shumer, а есть какая-нить компонента , в которой свойства ScrollBars и Text есть одновременно ?
По поводу ScrollBars. Есть специальный компонент ScrollBox. <!--QuoteBegin-А.Я.Архангельский

[b]"Этот компонент предназначен для создания области, в которой могут размещаться компоненты, занимающую площадь большую, чем сам ScrollBox"
Однако им пользоваться не очень удобно и редко целесообразно.
Компоненты на подобии Memo или RichEdit обладают своими свойствами ScrollBars. С ними намного легче работать. В них есть и свойство Text. В принципе это свойство равноценно Lines->Strings[0]+"rn"+Lines->Strings[1]+"rn"+...
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
для заданного текста определить длину содержащейся в нём максимальной последовательно Anf Вопросы начинающих программистов 1 21.11.2011 02:00
Sql запросы как их обрабатывать Sve234 Вопросы начинающих программистов 1 06.06.2011 14:33
Как подключить 2 розетки Rj45 последовательно? mark_bass Сетевые подключения 3 07.04.2011 12:55
Переставить символы в строке в таком порядке: первый, последний, второй четвертый rosomaca Visual Basic 1 05.01.2010 00:14
Вызов формы последовательно imported_@LeX Delphi 4 18.07.2007 11:19
В программе обрабатываются последовательно все пикселы TCanvas Shturmovik Delphi 2 22.11.2006 08:31
TDateTimePicker как вывести все данные последовательно SilverV Delphi 5 21.09.2006 12:30
Excel: последовательно открыть все книги из одной папки iusovich Visual Basic 7 22.05.2006 16:58
Табуляция функции последовательно тремя циклами в С++ for,while,do while +W+U+L+F Вопросы начинающих программистов 2 06.12.2005 12:37
Как заменить символы в строке Nightwish С/С++ 1 06.06.2005 17:12
Как обрабатывать сообщения от NotifyIcon Rius C++ Builder 2 03.05.2005 08:28
Ini файлы как их обрабатывать и чем Northwood C++ Builder 14 01.03.2005 18:01



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов