Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите что за ошибка, [BCC32 Error] Unit1.cpp(43): E2034 Canno 
:(
    Опции темы
Ksonatos
  Дата 10.6.2011, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!

Я тут програмку пишу, которая считает слова которые состоят из более чем 7ми букв..

Вот код, который уже написан:

Код

int i, j;
j = 0;
AnsiString str;
str = Memo1->Text;

TSysCharSet Tcs,Tws;
Tcs<<' '<<','; // разделители
ExtractStrings(Tcs,Tws,str.c_str(),Memo1->Lines); //В этой строке выдаёт ошибку

for (i=0; i<Memo1->Lines->Count; i++) {
  if (Memo1->Lines->Strings[i].Length() > 7) {j++;}
}
ShowMessage("В тексте "+IntToStr(j)+
            " слов, в которых не менее 7 символов." );
Memo2->Text = "\n В файле "+IntToStr(j)+
            " слов, в которых не менее 7 символов." ;
}


И он мне выдаёт ошибку вот эту:
Код

[BCC32 Error] Unit1.cpp(43): E2034 Cannot convert 'char *' to 'wchar_t *'
[BCC32 Error] Unit1.cpp(43): E2342 Type mismatch in parameter 'Content' (wanted 'wchar_t *', got 'char *')


Подскажите пожалуйста как и что преобразовать.. За ранее спасибо! = )

Это сообщение отредактировал(а) Ksonatos - 10.6.2011, 20:48
PM MAIL   Вверх
_Dimon_
Дата 10.6.2011, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

int i, j;
j = 0;
AnsiString str;
str = Memo1->Text;

TSysCharSet Tcs,Tws;
Tcs<<' '<<','; // разделители
ExtractStrings(Tcs,Tws,str.w_str(),Memo1->Lines); // если билдер 2009 или 2010 то .w_str() надо

for (i=0; i<Memo1->Lines->Count; i++) {
  if (Memo1->Lines->Strings[i].Length() > 7) {j++;}
}
ShowMessage("В тексте "+IntToStr(j)+
            " слов, в которых не менее 7 символов." );
Memo2->Text = "\n В файле "+IntToStr(j)+
            " слов, в которых не менее 7 символов." ;
}

PM MAIL   Вверх
Ksonatos
Дата 10.6.2011, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, у меня 2009... Заменил и теперь говорит:

Код

[BCC32 Error] Unit1.cpp(43): E2316 'w_str' is not a member of 'AnsiString'

PM MAIL   Вверх
_Dimon_
Дата 10.6.2011, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Ksonatos @ 10.6.2011,  21:35)
Да, у меня 2009... Заменил и теперь говорит:

Код

[BCC32 Error] Unit1.cpp(43): E2316 'w_str' is not a member of 'AnsiString'

Обьяви UnicodeString str вместо AnsiString;


И вообще, раз пользуешся 2009 то используй везде юникод, ИМХО.

Это сообщение отредактировал(а) _Dimon_ - 10.6.2011, 22:13
PM MAIL   Вверх
Ksonatos
Дата 10.6.2011, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, спасибо, всё заработало.. Вот только вопрос.. Он, что с разделителями, что без, считает одинаково..
На 1ну строку только 1но слово.. А вернее говорит что больше 7ми символов в строке..
Можете подсказать в чём ошибка? Почему не видит пробелы и запятые 

Код

int i, j=0;
UnicodeString str;
str = Memo1->Text;

TSysCharSet Tcs,Tws;
Tcs <<' '; // разделители
ExtractStrings(Tcs,Tws,str.w_str(),Memo2->Lines);


for (i=0; i<Memo1->Lines->Count; i++) {
  if (Memo1->Lines->Strings[i].Length() > 7) {j++;}
}
//ShowMessage("В тексте "+IntToStr(j)+
            //" слов, в которых не менее 7 символов." );
Memo2->Text = "\n В файле "+IntToStr(j)+
            " слов, в которых не менее 7 символов." ;


Это сообщение отредактировал(а) Ksonatos - 10.6.2011, 22:38
PM MAIL   Вверх
_Dimon_
Дата 11.6.2011, 04:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Сделай так, должно работать
Код

 TStringList* sList;
 int j=0;
 try
  {
   sList = new TStringList;
   sList->Delimiter = L' ';
   sList->DelimitedText = Memo1->Text;

   for (int i=0; i<sList->Count; i++)
    if (sList->Strings[i].Length()>7) j++;

   Memo2->Text = "\n В файле "+IntToStr(j)+" слов, в которых не менее 7 символов." ;
  }
 __finally
  {
   delete sList;
  }

PM MAIL   Вверх
_Dimon_
Дата 16.6.2011, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 smile  Если тема решена, то отметь "Вопрос решен" или  запости как сделал, а нет, то хоть отпишись
P.S. Самому интересно; может уважаемые гуру подскажут что полегше
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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